エスプレッソマシンに仕込むために今更Raspberry Pi 2 Model Bを引っ張り出してきてセットアップしました。無線LAN周りの設定は以前より大変になっているみたいです。
システム情報(uname -aコマンドで表示)は、"Linux raspberrypi 5.10.60-v7+ #1449 SMP Wed Aug 25 15:00:01 BST 2021 armv7l GNU/Linux"。執筆当時の最新のはずです。
初期設定
何はともあれ
sudo apt update sudo apt upgrade sudo passwd pi # ヤバい来客対策でパスワードくらい変えておく sudo passwd root # rootパスワードも設定
あとは
sudo raspi-config
のInterface Optionsから、SSHとI2C(エスプレッソマシンで使う温度センサー用)を有効化します。
ここでrebootすればひとまずヘッドレス運用はできるはずです。
無線LAN子機"T2U nano"の設定
TP-Linkから出ている安いアダプタで、たまたま余していたので使うことにしました。搭載チップはRTL8812AUなので、調べると手順が出てきます。
一番簡単なのはコンパイル済みのドライバを落としてくること。http://downloads.fars-robotics.net/wifi-driversから必要なファイルを落としてきて解凍、install.shを実行するだけです。
以下の記事に手順詳細がまとまっています(対象チップがブログではRTL8188EUSになっているので、ダウンロード元のディレクトリを変える必要がある点のみ注意)。
qiita.com
一般的には、以下のソースを自力コンパイルする方法が取られていますが、上述のサイトがメンテされている限りはダウンロードしてくるので問題なさそうです。
github.com
再度
sudo raspi-config
すればSystem Optionsから簡単にWifi設定が出来ます。少なくとも、自宅の無線LANアクセスポイント(RT-AC68U, アクセスポイントモード)に対しては自動的に802.11acで接続されました。
IPアドレスの固定
/etc/dhcpcd.confに
interface eth0 static ip_address=192.168.0.20/24 static routers=192.168.0.1 static domain_name_servers=192.168.0.1 8.8.8.8 interface wlan0 static ip_address=192.168.0.21/24 static routers=192.168.0.1 static domain_name_servers=192.168.0.1 8.8.8.8
あたりを追記しておけばOK。
Python, GPIO
デフォルトのPython3からimport RPi.GPIOすれば問題なくGPIOを制御できるようです。Pythonのバージョンは3.7.3で、古さを感じるほどではありません。
sudo apt install python3-pip
だけして、pip3は入れておきました。
無停電化
USB給電元とRaspberry Pi本体の間に噛ませられる、専用UPSみたいなものが存在します。Micro-Bの入力端子と標準Aの出力端子を備えているので、接続上は電源ラインを中継するだけになります。
Li-ionバッテリーへの充電、バッテリーからRaspberry Piへの給電を常時行っているので、電源の供給が途絶えても給電を続けられます*1。
いろいろな中華製品がAmazon等で見つかります。僕が購入したのはSunFounderというところの2500円くらいの基板。
電池はKEEPPOWER 3500mAh P1835J 保護回路付きがぴったりハマりました。
基板への供給電源を分圧して*2GPIOに入力すると、電源供給が途絶えたことも検出できます。
*1:数十分もつんじゃないか?というくらい。シャットダウンまでの時間稼ぎにはオーバースペックな気もしますが、安価で安定していそうなのでヨシ
*2:Raspberry PiのGPIOは3.3V系なので電源の5Vから落とさないといけない