初版作成 2016.11.30
最終更新 2025.05.14
$ または % は 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 $ アプリ起動