きっかけは年末。
帰省のタイミングで何日か家を空け、ベランダで育てている野菜たちへの水やりが滞った。
たっぷり水をやって家を出たものの、帰ってきたら土はカピカピに乾いていた。
同じことは今後もあるだろうし、よく考えてみると、そもそも今の時代に毎日手動で水やりをするなんてのがおかしい気もしてきた。
ということで、水やり機を作ってみました。
準備するもの
準備したモノは、ラズパイ・リレーモジュール・ポンプ・ホース・電池(9V)・配線ケーブル。
一通りそろったセットがamazonで売ってた。品質はともかく、とりあえず試してみる分にはお手頃。
土壌センサーとかも入ってたけど、今回は不要なので使わず。
ラズパイは、「RaspberryPi 4 ModelB」を使用します。
ちょっとだけ事前学習
説明書読んでみても、そもそも、リレーモジュール?GPIO?など知らない単語が多すぎる。
良い機会なので、少しだけ学んでみた。
リレーモジュールについては、オムロン社のHPがとても分かりやすかった。
リレー内部のコイルの電磁誘導で回路のON/OFFを制御しているとのことでした。
使ってみると、確かにスイッチON/OFFでカチカチ音がする。
GPIOピン(General Purpose Input/Output)については、下記HPが分かりやすかった。
同じくラズパイで水やり機を作っていた下記ブログも参考になった。
作ってみた
細かい不明点はまだまた沢山あるものの、とりあえず作ってみた。
年々、机上での学びが億劫になっている。手を動かしてた方が楽しい。
配線
配線図はこんな感じ。非常にシンプル。
ラズパイでGPIO4ピンの出力→リレー内部のスイッチON→ポンプ稼働という流れです。
スクリプト
GPIO4ピンの出力を制御するスクリプトを書いてみます。
test.pyというファイル名で下記のとおり作成。ON/OFFだけなので非常にシンプル。
3秒だけポンプが作動するようにしました。
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.OUT) GPIO.output(4, False) time.sleep(3) GPIO.output(4, True) GPIO.cleanup() |
本当は、GPIO.output(4, True)でONになると思うのだけど、
リレーモジュールがLowlebelTriggerだからか、FalseでONになりました。
下記コマンドで実行してみて、ちゃんと動くか確認します。
python test.py |
CRONの設定
定期的な動作はcronを使う。下記コマンドで編集。
crontab -e |
1分ごとにスクリプト実行する設定にしてみます。
左から「分」「時」「日」「月」「曜日」を指定できます。「*/1」で1分毎という設定になる。
*/1 * * * * python /home/pi/test.py |
実際に水やりしてみた
ホースがめっちゃ動いて、水やりは失敗!
コメント
質問いいですか?
左から「分」「時」「日」「月」「曜日」を指定できます。「*/1」で1分毎という設定になる。
*/1 * * * * python /home/pi/test.py
という部分がよくわかりません。
例 */1 17 6 9 wednesday python /home/pi/test.py
こんな感じですか?
いつ実行させたいかを指定しますね。
*は「設定できる全ての値」という意味です。(曜日だったら、月~日までのすべて)
例:毎月10日のAM 6:15 に実行
15 6 10 * * python /home/pi/test.py
下記記事などが参考になると思います。
https://www.server-memo.net/tips/crontab.html