かつかれーのメモ帳

実験ノートか勉強記録

Raspberry Pi 2 Model Bのセットアップ

エスプレッソマシンに仕込むために今更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から落とさないといけない