水槽で水草を綺麗に育てるため,Raspberry Pi で CO2 添付を制御してみました.
はじめに
5年くらい前までは,水槽へのCO2添付を安定して行おうとすると,下記の2択くらいしかなく,ハードルが高いものでした.
- 業務用炭酸ガスボンベ(ミドボン) → 大掛かり
- 水草育成用CO2ボンベ → ランニングコストが高い
ところが,何年か前から,クエン酸と重曹を使うタイプの下記のようなCO2ジェネレーターが出回るようになり,導入のハードルが随分低くなりました.
ただ,実際に導入する場合,下記の仕組みが欲しくなってきます.
- 光を当てている昼間のみCO2添付したい
- CO2添付している間は,CO2が抜けてしまうのを抑制するため,エアレーションを止めたい
そこで,Raspberry Pi を使ってこの制御を自動化する仕組みを作ってみました.
ハード
Raspberry Pi の GPIO を使って 100V 電源を制御するためのボックスを制作します.
100V 周りは,下記を考慮し,信頼性が高い部品で構成することにしました.
- 誤動作してエアレーションが誤って停止すると,熱帯魚に深刻なダメージが発生する
- 水槽という水回りで使用する
必要な部品
- TWN型難燃性 W125×D175×65mm オフホワイト
ボックスのケースです.コンセント2系統を制御する場合,このサイズがちょうど良いと思います.
- ミニパワーリレー MY2Z
12V の H/L で 100V 電源を ON/OFF できるリレーです.今回の心臓部となりますので,オムロン性の信頼性が高いものを選択します.
- 共用ソケット 角形ソケット PYF
リレーとコンセントを接続するためのソケットです.信頼性の観点で,100V 系統は基板への半田付けは使わず,圧着端子とネジ締めで構成するために使用します.
- MOS FETリレー DIP4ピン
リレーを駆動するための FET です.ここはもうちょっと安い部品でも良かったかも.
- 抜止形機器用アウトレット 白
コンセントを接続するためのコネクタです.ちょっとサイズが大きいのが気になりましたが,樹脂ケースへの穴あけが円形で良いので加工性がよく,抜け防止機能があるのが決め手でした.
- RS Pro IECプラグ オス スナップイン
-
今回作成するリレーボックスに電源を供給するためのコネクタです.ヒューズを内蔵しているのが決め手でした.LED内蔵のスイッチがついていてコンセントを差したままでON/OFFできて電源状態が確認できるので地味に便利です.
- モールドフレームタイプLED表示灯 AC100~200V
リレーで制御した100Vコンセントの状態を確認するためのLEDです.100Vラインに直接接続できるのでお手軽です.
- 取付DCジャック 2.1mm MJ-14
CO2ジェネレーターの電磁弁の電源を接続するために使用するコネクタです.
- 3極小形単頭ジャック Φ3.5
Raspberry Pi と接続するためのジャックです.今回は2系統を制御するため GPIO 2本と GND を接続する必要があるので,3極タイプを選択しました.
- フォーンプラグ (オス) 3.5mm
先ほどのジャックと接続するためのプラグです.
- ロッカスイッチLタイプ JWシリーズ
今回作成するものはRaspberry Piで自動制御するためのボックスですが,手動でも制御できると便利と思いスイッチもつけています.
組み立て
電圧に応じて分けて回路を構成します.具体的には 100V 系統は,半田付けが避けられないIECプラグ以外は圧着端子とネジしめで接続し,3.3V および 12V を扱う系統のみ基板上で基板上で配線します.
こんな感じ.
100V のコネクタ関係がケースの内側に結構めり込むので,意外とスペースがないので,レイアウトは真面目に検討するのがおすすめです.
完成形
全て組み上げるとこんな感じ.
ラベリングには,マットな透明ラベルのテプラを使がおすすめです.
【純正】 キングジム(Kingjim) テプラPROテープカートリッジ マット 24mm 透明ラベル/黒文字 長さ8m SB24T
ソフト
時刻に応じて GPIO を自動制御するプログラムを仕立てます.
コンテナ上で動くようにして Kubernetes でデプロイすると長期的な管理が簡単になるので,cron とかに頼るのではなく Python の schedule ライブラリを使うのがおすすめです.
コードはこんな感じ.
現時点で,半年程度運用していますが,安定して動作してくれています.
コメント