1. 背景
初心者でもお手軽に、Raspberry Pi Zero W上でPythonプログラムでLEDを光らせられる環境を構築する。作るまではある程度手間だけど、できてしまえばUSB接続したRaspberry PiをJupyter NotebookのPythonプログラムで操作できる。
前提となる環境は以下の通り。
- Raspberry Pi Zero W
- ホストはMac
- USB接続
USB接続にこだわったのは、使用環境がネットワークに依存しないようにしたかったから。
Windows10でもできるように検討したが、現状ではUSB接続にするとドライバのインストールや設定が大変で、とてもでないが初心者にオススメできないので諦めた。できなくはないが、普通にできても時間がかかる。簡単な方法があれば教えて欲しい。
2. SDカードの準備
2-1. イメージの取得
今回はこれを使う。
RASPBIAN Buster LITE
https://www.raspberrypi.org/downloads/raspbian/
2-2. SDカードにイメージを書き込む
SDカードをスロットに挿入する。
diskutil list
でSDカードのデバイスを調べてから、以下のコマンドを実行。
以降、SDカードのデバイスは/dev/disk2
として説明する。
sudo diskutil umountDisk /dev/disk2
sudo dd bs=1m if=./2019-07-10-raspbian-buster-lite.img of=/dev/disk2
自分のマシンでだいたい4分ちょっとかかった。
bootディスクがマウントされていればOK
2-3. ネットワークの設定
SSHを有効にする
以下のコマンドを実行。
touch /Volumes/boot/ssh
USB経由のインターネット接続を有効にする
vi /Volumes/boot/cmdline.txt
でファイルを編集する。以下のように、rootwaitの後ろに
modules-load=dwc2,g_ether
を挿入する。
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=17869 b7d-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether quiet init =/usr/lib/raspi-config/init_resize.sh
また、以下のコマンドを実行する。
echo "dtoverlay=dwc2" >> /Volumes/boot/config.txt
マウント解除してSDカードを抜き取る
マウントの解除は以下のコマンド。
sudo diskutil umountDisk /dev/disk2
3. Raspberry Pi Zero(W)の起動
- SDカードをRaspberry Pi Zero(W)に挿入する
- USB接続でMacにつなぐ(電源が入る)
以下のコマンドでログインできる
ssh pi@raspberrypi.local
パスワードはデフォルトでraspberry
。
4. Raspberry Pi Zero(W)の設定
ここからはRaspberry Piの上で作業。
4-1. ディスクの拡張
以下のコマンドを実行する。
sudo raspi-config --expand-rootfs
ここでリブートするようにメッセージ表示されるのでリブートする。
リブートは以下のコマンド。
sudo reboot
4-2. ホスト名を変更する
sshでデフォルトのraspberrypi.localでログインしているが、複数のRaspberry Piを接続すると衝突するため、重ならないホスト名を設定する。
ここではraspi0
というホスト名にするため、以下のコマンドを実行する。
sudo raspi-config nonint do_hostname raspi0
変更の確認は/etc/hostnameの中を見る。
cat /etc/hostname
再起動しないと、hostnameコマンドでは古いホスト名が表示される。必ずリブートすること。
sudo reboot
次からは以下のコマンドでログインできる。
ssh pi@raspi0.local
4-3. WiFiの設定
raspberry.localからMacOSを介してインターネット接続を試みるがうまくいかず。WiFiでネットワークに接続してなんとかaptとかpipを使えるようにした。
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
以下のように 入力して保存。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="SSID-NAME"
psk="PASSWORD"
}
SSID-NAMEとPASSWORDは適宜入力すること
WiFiを有効にするため、再起動する。
sudo reboot
補足)ここは再起動しなくても、以下のコマンドでいいかも(未確認)
以下を実行するとエラーになったので、素直にrebootした方がいい。
sudo wpa_cli -i wlan0 reconfigure
sudo dhclient wlan0
4-4. システムのアップデート
以下のコマンドを入力する。
sudo apt update
sudo apt upgrade
4-5. PythonからGPIOを制御するパッケージをインストール
以下のコマンドを実行する。
sudo apt install python-rpi.gpio
sudo apt install -y python3-pip
pip3 install RPi.GPIO
4-6. Jupyterをインストールする
以下のコマンドを実行する。
pip3 install jupyter
jupyter notebook --generate-config
.jupyter/jupyter_notebook_config.py
を以下のように修正する。
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.notebook_dir = '/home/pi/jupyter_notebook'
c.NotebookApp.token = 'password'
passwordの部分は適当なパスワード文字列にすること
4-7. Jupyter Notebookを起動する
以下のコマンドを入力する。
mkdir /home/pi/jupyter_notebook
cd /home/pi/jupyter_notebook
jupyter notebook
Macからhttp://raspi0.local:8888 をアクセスする。
ここまでで、参考文献(4)で紹介されているPythonプログラムが実行できるはず。
5. 課題
- Jupyter Notebookを自動起動
- Windows10にも対応(一旦あきらめたけど)
追記
Windows10とRaspberry Piの接続で、LANケーブルで直接接続できる(Raspberry Pi 2とか3とか)なら以下の方法で接続できた。
http://moguno.hatenablog.jp/entry/2015/09/12/100231
6. 参考文献
(1) Raspberry Pi Zero(W, WH)のセットアップ
https://qiita.com/hishi/items/8bdfd9d72fa8fe2e7573
(2) 必要最小限でRaspberry PiにJupyter (Python3)をInstallする方法(2018-08-10)
https://qiita.com/iton/items/1bd670bc84f264024d5d
(3) Raspberry pi 喋らせよう jupyter note で試す
https://qiita.com/hiratarich/items/a829f2550ecf5e3ca206
(4) GPIOでLEDの点滅(Python)
http://make.bcde.jp/raspberry-pi/gpioでledの点滅python/