無線LANでネットワークに繋がりつつ、水耕栽培用のLED照明の管理、水中ポンプの管理、エアポンプの管理、濃度測定や水量警告とかを行いたいので、安くて低性能のRaspberry Pi Zero Wで自作することにする。
目次
運用形態
最終的にこんな感じで運用したい。
そこで順を追ってRasberry Piを含め立ち上げていく。
Raspberry Pi Zero WをHeadlessセットアップ
ここらへんを参照。
- Raspberry Pi Imagerを使ってRaspberry Pi OS LiteをSDカードへインストール
- SDカードを指し直してマウントし直す。bootというドライブが見えるようになる。
- トップディレクトリにwpa_supplicant.confとsshを作成する。
- wpa_supplicant.conf WIFIの接続先情報
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=JP network={ ssid="<Name of your WiFi>" psk="<Password for your WiFi>" }
- ssh sshサーバーの有効化
ファイルさえあればいいので空でok。
このファイルはセキュリティ都合で起動ごとに削除されるので都度作成すること。
- wpa_supplicant.conf WIFIの接続先情報
- SDカードをRaspberry Pi Zero Wにさして起動。
初回起動時はパーティショニング等が行われて起動に時間がかかるので注意。
緑のアクセスランプが落ち着いてくるのを目安に。 - SSHで接続。IP直でもいいし、Win10ならrapberrypi.localという名前でもいいらしい。
ユーザー名は「pi」、初期パスワードは「raspberry」 - 「sudo raspi-config」で初期設定を行う。
- 「sudo apt update && sudo apt upgrade」でOSを最新へ。
Raspberry Pi Zero WのHW環境を確認
pinoutコマンド
WiringPiのインストール
今の所、ハードウェアPWMを使うにせよ基本は単純な電源のON/OFF管理くらいしかする予定がないのでcrom & gpioコマンドで簡単に済ませたい。
ので、まずは git をインストールする。
sudo apt install git
次にWiringPiをインストールする。
(昔はgitがいるっぽかったけど、今はもういらなかったのでgitインストールしなくてもいい)
sudo apt install wiringpi
より詳細なピン状態の確認
gpio readallコマンドで現在のピン設定や各種マッピングがわかる。
SSR運用のためのGPIO操作
揚水ポンプを24hずっと回してるのも電気代の無駄な上に静かじゃないので、日中に数回だけ水を補充できるようにしたい。
酸素ポンプはもしかしたら24hずっとonのほうがいいのかもしれないが、それは実際に栽培してみて様子を見ることにする。
ので、これは単にgpio on/offだけでSSRをon/offすれば実現できる。
GPIO 12/13/18/19はPWM出力に使えるらしいのでそれ以外の適当なポートを2つということでGPIO4/24を使う。単にGNDが隣りにあるから結線が楽そうってだけ。
gpio -g mode 4 out gpio -g mode 24 out
highにする方法
gpio -g write 4 1
lowにする方法
gpio -g write 4 0
LED運用のためのGPIO操作
LEDも赤と青を12hごとに交互に点灯したいし、植物に必要なエネルギー量だけを付与させたい。たぶん電気代にも効く。あとLEDの発熱が減るから変に排熱を考えなくても済むかもしれない。ってことでPWM制御でLEDをドライブする。
まずはモードを設定
gpio -g mode 12 pwm gpio -g mode 13 pwm gpio -g mode 18 pwm gpio -g mode 19 pwm
文部科学省の実験レポによると2.5kHz Duty33%でLEDを光らせておけば植物的には十分らしい。(残りの66%で光合成回路で炭素やら酸素を生成)
Rasberry PiのPWM用の源振は19.2MHzらしいので
gpio pwm-ms gpio pwmc 192 gpio pwmr 40
とすると2.5kHzになる。pwm-msはMark:Spaceモードといい、普通のPWMモード。一方、balancedモードもあるが今回は必要ない。
これらの設定はgpio modeを行うとリセットされてしまうので最後に行うこと。
Duty比33%でon(40/3=14)
gpio -g pwm 12 14
offにする
gpio -g pwm 12 0
なお、12&18、13&19は連動して動くので注意すること。
今回は12&18で赤LED、13&19で青LEDのon/offを制御することにする。