ベランダの植物への水やりを自動化したい
集合住宅の一室の我が家はベランダで細やかな観葉植物や家庭菜園をしている。
ベランダという狭い範囲なのに、忙しくてついつい水やりをおろそかにしてしまう。
更には、仕事の関係で長期出張に出ることがあるので、その間の水やりが出来るようにもしたい。
沖縄の灼熱の日差しを受けて、いままで多くの植物を枯らしてしまった経緯がある。
そこで、以前からやってみたかった自動水やり装置。
もちろん市販の自動水やり機がそれなりの値段で販売されているのは知っているけど、それでは面白くない。
趣味も兼ねて、電子工作のDIYで自作することにチャレンジしてみよう。
準備と構想01:Arduinoを使ったDIY用の自動水やり装置キットの活用
諸先輩方の意見を参考に、制御のためのマイコンはArduino(アルディーノ)を使ってみることに。
今までArduinoは使った事がなかったけれど、ラズパイ(Raspberry Pi)よりは簡単らしい。
更に、Amazonにて『DIY用の自動水やり装置キット』なるものを見つけた。Arduino等のマイコンは別途購入することを前提に、マイコン以外のモーターや制御リレー、ホースなどがセットになって格安で販売されていた。
初めての試みなので、まずはこれを利用して作ってみることにする。
さらに、電源は普段使っているDIYの300Wベランダ太陽光発電で発電された電気を使うことで、乾電池や充電などの手間がない装置をつくりたい。
準備したもの
作業ギャラリー
Arduinoのケース組立
市販の自動水やりDIYキットの活用・接続
最初は自動水やりキットで動作を確認。キットのみでは配線も短くモーターの威力も弱いため、実用には物足らず、何だか子供向けの実験セットみたいな感じ。。
そこで、このキットを改良していく方向に。
以前水耕栽培で使っていた12V用モーターに変更し、さらに電源を自宅のDIY太陽光パネルで使用している12Vのバッテリーを活用できるように接続変更。
実際に室外(我が家の場合はベランダですが)で使えるように配線を延長し、耐候性を高めるために各マイコン機器の保護ボックスや、配線をチューブで保護したりしていく。
室内でのテスト環境を構築
グルーガンで保護
結構時間掛かる・・・
室外ベランダに設置を試み
準備と構想02:ラズベリーパイとの接続で、外出先でもスマホで確認
初めてArduinoを使ってみてわかったが、Arduinoは、時刻を正確に設定することはできない。
個人的には、植物は朝に水をやった方が良い、と聞いているので、朝の何時から何時の間に水分が乾いていたら水をやる、といった時間指定で水やりという機能を付けたい。
しかし、初めてArduinoを使ってみて気づいたのは、Arduinoは時刻を正確に設定することはできないみたい。
さらに、水位センサーを付けて水が減った時の状態を検出できるようになったので、そのお知らせをパソコンのターミナルではなく、外出先のスマートフォンに通知が来るようにしたい。
このような機能はArduinoだけだと難しいようだ。
ところが、諸先輩には、ArduinoとRaspberry Piを接続して上記を実現している人がいる(その人はカメラで状態まで見えるようにしているな。。すごい)
確かに、Raspberry PiだとWi-Fiも使えるし、メールも飛ばせるし、LINEに通知することもできるようだ。家に余っていたRaspberry Piを使って、上記の機能の実現に取り組んでみることにする。
ラズベリーパイとの接続
ラズパイとアルディーノの接続の仕方は色々あるらしい。
とりあえず、一番簡単なUSB接続で繋げる。
ラズパイ側で、コマンドを打ち込むと確認できた。
「ttyAMA0」というのが、arduinoが繋がってる証拠らしい。
pythonでのプログラミング → 生成AIが大活躍
私のプログラミングスキルは、多少馴染みはあるものの、ハッキリ言ってほぼ初心者レベルです。
アルディーノ上でのプログラムは、購入した水やりキットのサンプルプログラムを少々いじる程度で動かすことが出来たけど、今回のラズパイからアルディーノに送受信をする上でのプログラミングはゼロからやらなければならない。
そこで、役立ったのが、今話題の生成AI。
Chat-GPTが有名ですね。私は最新情報も活用したかったので、MicrosoftのCopilotを使ってます。
ま、今回の作業ではどっちでも構わないでしょうが。
例えば・・・
USBを使ったシリアル通信でarduinoとraspberry piを接続している。if文を使って、arduino側から特定条件時にraspberry piを使ってメールを送るようなプログラムを書きたい。サンプルプログラムを書いて欲しい。
といった形でAIに依頼すると、
みたいな感じで、サンプルプログラムを書いてくれる。
エラーが出ても、
このプログラム実行させたら、こんなエラーが出たよ。原因と対処法は?
なんて、チャットを続けるとほぼ適切な回答をくれる。
おかげでプログラムづくりは、かなりラクに進めることができた。
でも、AI任せだと、勉強がおろそかになるので良くない面もあるけどね・・
ラズパイを使って、指定のタイミングでメールを送る
pythonでgmailを送信するプログラムを生成AIに書いてもらって、編集。
ここでえらい苦労したのが、gmailのセキュリティ問題。
pythonでgmailを使う場合、SMTPの設定を今まで通りやると、通常のアカウントパスワードだとGoogleアカウントがセキュリティ対策ではじいてしまう。
そこで、近年では、Googleアカウントで『アプリパスワード』という16桁のパスワードを生成してそれをプログラムに設定するらしいのだが・・・
この『アプリパスワード』に苦労した・・・。
無事アプリパスワードを取得して、メールの送信に成功。
テストを繰り返し、とりあえず、放水時と水位が中、下になった時にメールを送信するように設定してみた。
第一段階として設置完了
当初、モーター(12V)とリレーの間に昇降圧コンバーター(12V-5V)をかましていたのだが、これが原因でモーターの挙動がおかしかった。
よく見たら、リレーの出力部分なので5Vにする必要はないため、昇降圧コンバーターを間にかます必要はないことに気付く。
昇降圧コンバーターを外したら、モーターの挙動が安定し、太陽光で貯めた12Vバッテリーの電源から問題なくモーターを動かすことができた。
何とか詰め込む(笑)
設置してみての感想
空いた休日にちょっと進める感じだったので、何だかんだ、構想から2ヶ月くらい掛かってるような。
でも、ある程度完成したのはうれしい限り。
もちろん、課題はまだまだありますがね。
今後の課題:
課題の解消は、今後の楽しみにとっておきます。
良かったこと:
・長期出張時の植物水やり問題を多少解消できた
・電子工作の楽しさが分かってきた
・Arduinoの仕組みが分かった
・センサーの基本的な使い方が分かった
・Arduinoとラズパイの連携活用ができた
・話題の生成AIを大いに活用できた
arduinoとraspberry pi(python)のプログラムコードは以下に↓
コメント