きっかけ
家で育てている観葉植物のポトスにふと目をやるとすっかり元気がなくなっていました。
水やりを1か月くらい忘れていて土が干からびていたのです。。
ただの言い訳になりますが、水やりのサボり癖がついたのには理由がありました。
- ポトスは鉢土がしっかり乾いていることを確認してから水やりをします。表面だけ乾いていても中が湿っていることがあるので土を触って確かめる必要があります。
- 季節によって水やりの頻度が全く異なります。寒い時期は室温が低いので夏に比べて水やりの頻度が減ります。
土の確認が面倒なのと寒い時期になり水やりの頻度が減ったことが原因で、土が乾いたまま放置するようになっていたのです。
ポトスさんは凄まじい生命力を持っているので1〜2ヶ月水を上げなくても全て枯れることはなかったです。
しかしほんとは水が欲しかったのだろう...と
それならポトスさんに水が欲しいときに喋ってもうらおうじゃないか!
作ったもの
というわけでラズパイとAmazon Echoを使って土の水分がなくなったことを教えてくれるIoTシステムを作りました。
こんな感じ...
水やりは朝にするといいらしいので、起床時刻に合わせて毎朝8:00に水分量を計測して3段階で教えてもらうようにしました。
水分量(0~950) | メッセージ |
---|---|
水中 700~950 | 喋らない |
湿ってる 300~700 | そろそろお水が欲しい! |
乾燥 0~300 | 今すぐお水が欲しい! |
どれくらいのペースで水分量が減っていくのかわからないので、とりあえず上表で設定してみました。
土が乾燥していると「今すぐお水が欲しい!」とAlexaが可愛い声で喋って教えてくれます。これでサボり癖のある私でも忘れずに水やりができそうです!
用意したもの
・Raspberry Pi
・Echo Plus
・Grove Base Hat for Raspberry Pi
・Grove - Moisture Sensor
これらを揃えれば簡単に作れます。seeed社のGroveシールドとセンサーを使うのがポイントです。通常のセンサーを使うとハンダ付けや電子回路の知識が必要になりますが、なんとGroveはハンダ付けが不要でピンを差し込むだけです。またseeed社の公式サイトにはサンプルのプログラムまで付けて解説してくれるので電子回路の知識がなくても大丈夫です。
プログラム
プログラムはたったこれだけです。
seeed社提供のPythonライブラリをインポートすると簡単に水分量センサーの値が取得できるのでかなりすっきりと書くことができます。Alexaとの連携も非常に簡単でGitからalexa_remote_control.shを取得してAmazonアカウント情報を該当行に書き込み、下記のように引数に話してほしい文字を渡します。
あとはcornからプログラムを呼び出して完成です。
import os
import time
from grove.grove_moisture_sensor import GroveMoistureSensor
# connect to alalog pin 2(slot A2)
PIN = 0
sensor = GroveMoistureSensor(PIN)
print('Detecting moisture...')
m = sensor.moisture
if 0 <= m and m < 300:
result = 'Dry'
msg = '今すぐお水が欲しい!'
os.system("/home/pi/potos/alexa_remote_control.sh -d 'Echo Plus' -e 'speak:{0}'".format(msg))
elif 300 <= m and m < 700:
result = 'Moist'
msg = 'そろそろお水が欲しい!'
os.system("/home/pi/potos/alexa_remote_control.sh -d 'Echo Plus' -e 'speak:{0}'".format(msg))
else:
result = 'Wet'
print('Moisture value: {0}, {1}'.format(m, result))
さいごに
久々にラズパイ触りましたが工作は楽しかったです。Groveは様々な種類のセンサがあるのでラズパイの幅が広がります。次は余っているカメラモジュールがあるのでそれで観察日記でもつけようかと思います。実物を触るのは楽しいのでサーバレスの時代になってもラズパイは手放すことはできないだろうなと思いました。