初版作成 2016.11.30
最終更新 2024.09.27
$ または % は pi の権限で実行する。 # は root の権限で実行することを示す。 root 権限を得るには $ sudo -s 設定ファイルは読み込まない $ sudo -i /root/.profile を読み込む /root/.profile の中に /home/pi/.bashrc を読み込むよう書いておけば、 sudo -i で pi の環境で作業できる。
NOOBS を展開して micro SD カードのトップディレクトリに コピーする。 一度 Raspbian をインストールした micro SD カードは SDFormatter あるいは SD Card Formatter で フォーマットする必要がある。 起動するとインストールが始まる。 Language: English Keyboard: jp <---- 効かないようだ でインストールする。
> ネットワークに接続する 最初は有線で接続するのが無難 > Terminal の設定を変える foreground ---- 白 font size ---- 11 12 にするとアンダースコアが表示されないというバグがある。 > 設定 Menu --- Preferences -- Raspberry Pi Configuration Localization Timezone Asia Tokyo keyboard Japan Japanese(OADG 109A) Wifi Country Japan System Boot: To CLI 起動時に X は起動しない 必要ならstartx で起動させる Overscan: Disable 1920x1080 ディスプレイ使用時、画面一杯使う > アップデートする $ sudo -s # apt update # apt upgrade > wifi の設定 右上のネットワークのアイコンを左クリック パスフレーズを入れる
# apt list --installed # dpkg -l
.bashrc の末尾に以下のように書く # ctrl と caps の入れ換え setxkbmap -option ctrl:swapcaps # esc と 全角半角の切り替え xmodmap /home/pi/keyfile ----- ~/keyfile の内容 ----- keycode 49 = Escape keycode 9 = Zenkaku_Hankaku ---------------------------- export TERM=vt100 export CANNAHOST=192.168.xx.yy # alias alias rm='rm -i' alias cp='cp -p' alias ls='ls -F --color=never' alias ne='emacs -nw' alias sc='. ~/.bashrc' export PATH=$PATH:. export CDPATH=~:/etc:mypath1:mypath2
$ sudo -s # apt install tcsh ftpd ftp telnetd telnet emacs
Teraterm で遠隔ログインするときは Windows の IME を使えばよい。 コンソール作業時の日本語入力を可能にする。 # apt install fonts-takao ibus-mozc menu --- Preferences --- mozc settings 特にすることはなさそうだ --- ibus preferences mozc のデーモンをスタートさせる --- ibus preferences --- input method --- add --- Japanese --- input Method ---- ibus にチェックを入れる menu --- Preferences --- Kefyboard and Mouse --- Keyboard --- Keyboard Layout Country = Japan, Variant = Japanese (OADG 109A) になっていることを確認 右上の US アイコンをクリックすると mozc のアイコンに変化する。 mozc アイコンをクリック Input Mode --- Hiragana Tools --- Properties --- Reset to defaults --- Apply --- OK 変換は「半角/全角」キー(私の場合は入れ換えているので Esc)
Pi2 に wifi アダプタを付けると、デフォルトでは省電力モードに入り、 外からアクセスできない。Pi3 は以下の設定は不要なようだ。 /etc/modprobe.d/8192cu.conf というファイルを作成し、その中に以下のように書き込む。 # Disable power saving options 8192cu rtw_power_mgnt=0
# apt install texlive-lang-cjk xdvik-ja latexmk texlive # apt install ghostscript-x 上記のインストールで latex が正常に使えるようになった。 漢字コードは UTF-8 ubuntu で現れた xdvi の不具合(eps ファイルが重なって表示 される)は現れない。
# raspi-config
> GUI を使った設定 右上のネットワークアイコンを右クリック --- Wireless & Wired Network Settings Configure: interface wlan0 IP Address, Router, DNS Servers (プライベートネットのときは 192.168.0.1) の 3 つを設定する。 上記の結果は /etc/dhcpcd.conf に保存され、以下のようになる。 無線 LAN の場合 interface wlan0 inform 192.168.xx.yy static routers=192.168.xx.1 static domain_name_servers=192.168.xx.1 有線の場合 interface eth0 inform 192.168.xx.yy static routers=192.168.xx.1 static domain_name_servers=202.236.aa.bb (注意!) 以前は固定 IP の設定は /etc/network/interfaces で行っていたが、 今は /etc/dhcpcd.conf で設定する。 > CUI による設定 /etc/dhcpcd.conf の末尾に上記の設定をエディタで書き込む。 以下の記述方法でも有効なようだ(2 行目のみ異なる)。 interface wlan0 static ip_address=192.168.0.202 static routers=192.168.0.1 static domain_name_servers=192.168.0.1
menu --- Preferences --- Raspberry Pi Configuration --- Localization --- Locale : ja, JP, UTF-8 キーボードの設定が変わってしまうようなので、 Japan Japanese(OADG 109A) に戻す。 export LANG=ja_JP.UTF-8 を設定すると、エラー発生時の表示が日本語になる。 man コマンドは日本語化されない。
denki2 の Teraterm で telnet すると login できるが、 eclipse から telnet すると login 途中で止まる(C-c すれば login できる)。 % unsetenv TERM DISPLAY してから telnet すると、login 途中で止まる現象はなくなる。
1. /etc/passwd へのユーザーの追加 useradd, adduser というコマンドもあるようだが、 古典的な vipw を使う。 $ sudo -s # vipw pi の行を参考にして、新規ユーザーの行を作成する。 新規ユーザーの名前を sinki とする。 2. group の作成 /etc/group を編集して sinki が所属するグループを作成する。 sinki が root の権限を持てるよう、 sudo のグループに sinki を加える。 3. ホームディレクトリの作成 # cd /home # mkdir sinki # chown -R sinki sinki # chgrp xxxxx sinki 4. パスワードの作成 # passwd sinki 5. 設定ファイルのコピー # su sinki $ cp ../pi/.profile . <---- これを忘れると .bashrc が実行されない $ cp ../pi/.bashrc . $ cp ../pi/.emacs . 6. passwd なしで sudo できるようにする $ sudo visudo 末尾に以下の 1 行を付け加える。 sinki ALL=(ALL) NOPASSWD: ALL
#!/usr/bin/python # -*- coding: utf-8 -*- # # L-チカ # import time import RPi.GPIO as GPIO GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) out1 = 17 GPIO.setup(out1, GPIO.OUT) i = 0 while True: if i % 2 == 0: print "on" GPIO.output(out1, GPIO.HIGH) else: print "off" GPIO.output(out1, GPIO.LOW) i = i + 1 time.sleep(1)
#!/usr/bin/python # -*- coding: utf-8 -*- # # 入力を読み取る # import time import RPi.GPIO as GPIO GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) in_port = 2 GPIO.setup(in_port, GPIO.IN) while True: ret = GPIO.input(in_port) if ret == 0: print "input: 0V" else: print "input: 3.3V" time.sleep(1)
(参考 URL) http://tekitoh-memdhoi.info/views/745 https://qiita.com/f_nishio/items/4b9723c4e622a51aaeb5 SPI 通信を使って AD コンバータ MCP3002 と通信する。 (1) # raspi-config を使って SPI を有効にする リブートして設定を反映させる(リブート不要かもしれない)。 $ lsmod | grep spi で spi_bcm2835 というモジュールが入っていることを確認する。 (2) SPI を操作するための python のモジュールをインストールする (2a) python-dev のインストール $ sudo apt install python-dev (2b) py-spidev のインストール https://github.com/doceme/py-spidev をブラウザで開き、右上の緑ボタンの「code」--->「Download zip」 をクリックし、zip ファイルをダウンロードする。 $ cd ~/Downloads $ unzip py-spidev-master.zip $ cd py-spidev-master $ sudo python setup.py install 2023.7.11 追記 setup.py で setuptools がないというエラーが出る。 pip install setuptools を実行してもエラーが解消されない。 しかし、py-spidev-master を入れなくてもサンプルプログラムは 実行できた。 (3) 配線 3002 Pi 1 CS --- CE0 24 2 CH0 3 CH1 4 Vss --- Gnd 6 or 20 or 30 or 34 .... 5 Din --- MOSI 19 6 Dout --- MISO 21 7 CLK --- SCLK 23 8 Vdd --- 3.3V 1 or 17 19 番目のピンの場所を数え間違わないように注意! (3) サンプルコード #!/usr/bin/python # -*- coding: utf-8 -*- import spidev import time import subprocess spi = spidev.SpiDev() spi.open(0, 0) spi.max_speed_hz = 5000 try: while True: rasp = spi.xfer2([0x68, 0x00]) # CH0 CH1 は 0x78 value = (rasp[0] * 256 + rasp[1]) & 0x3ff print(value) time.sleep(1) except KeyboardInterrupt: spi.close() (注意!) spi.max_speed_hz = 5000 を省略してはいけない。 max_speed_hz = 5000 を怠った場合 /etc/debian_version が 8.0 のラズパイは正しく動く /etc/debian_version が 9.1 のラズパイは プログラムは動くが、返ってくる値がおかしい という現象が発生する。 なぜ、SPI が動かないのか悩まされた。 以下のサイトに教えてもらって解決した。 https://www.raspberrypi.org/blog/raspbian-stretch/
# apt update # apt install libcv2.4 # apt install libcv-dev # apt install libopencv-photo2.4 # apt install libopencv-photo-dev # apt install libopencv-contrib-dev
# apt install libopencv-dev # apt install python-opencv
# apt install nfs-common サーバーが FreeBSD のとき # mount -f nfs -o nolock machine:/dir/dir /dir/dir のように -o nolock が必要
# apt install chkconfig # chkconfig --list # chkconfig apache2 off
# apt install dnsutils
デフォルトで Postfix が動作している。 設定ファイルは /etc/postfix/main.cf 以下の行を付け加える relayhost = [192.168.xxx.yyy] あるいは [mail_server_name.nara-edu.ac.jp] mynetworks_style = subnet 以下の行はコメントアウトする #mynetworks = 127.0.0.0/8 ...(略) main.cf を書き換えたときは # /etc/init.d/postfix restart (参考資料) http://www.postfix-jp.info/trans-2.3/jhtml/BASIC_CONFIGURATION_README.html#mydestination
名前の解決ができないというエラーがでる。 /etc/resolv.conf に奈良教育大学のネームサーバの IP アドレスを書き込む。 nameserver 202.236.xxx.yyy
ntpdate コマンドをインストールして ntpdate コマンドを 実行すると、ソケットがすでに使われているというエラーが でる。 ラズパイでは ntpd というデーモンがデフォルトで 動作している。その設定をすれば良いらしい。 $ sudo -s # timedatectl status 状態の確認 # timedatectl set-ntp true ntp を有効に # cd /etc/systemd 設定ファイルを編集 # vi timesyncd.conf -------------------------------------------------- Servers=xxx.yyy.zz.jp を追加 日本国内の個人が使える ntp サーバーは http://wiki.nothing.sh/page/NTP/%BF%E4%BE%A9%B8%F8%B3%AB%A5%B5%A1%BC%A5%D0 に列挙されている。 -------------------------------------------------- # systemctl restart systemd-timesyncd.service デーモン再起動 <参照> https://www.コンフレッジ.com/raspberry-piraspbian%E3%81%AEntp%E3%82%B5%E3%83%BC%E3%83%90%E8%A8%AD%E5%AE%9A/ https://竹内電設.com/post/raspbian%E3%81%AE%E6%99%82%E5%88%BB%E3%81%AE%E5%90%8C%E6%9C%9F/
/var/cache/apt がふくれあがっている # apt-get clean で消去できる。
send_str = "l" send_str = send_str.encode('utf-8') # あるいは send_str = (b"l") rs = serial.Serial('/dev/ttyAMA0', 9600, timeout=10) rs.write(send_str) line = rs.readline() rs.close() line = line.decode('utf-8').rstrip() val = int(line)
・Windows PC - X server を起動する(XcXsrv は無料) - WSL を起動する。 - ifconfig で ip アドレスを確認する - $ xhost + - ファイアウォールが接続を阻止している場合は、 ファイアウォールの設定変更 ・Raspberry Pi $ export DISPLAY=192.168.x.yy:0.0 $ アプリ起動