Bluehornet blog

RaspberryPi, Arduinoを日常生活に活用してみたいブログ

田んぼtoLINE

1. 課題

  • 実家が稲作の兼業農家で、家から田んぼは見えません。
  • 田んぼに水を張る際にはどのくらいの水位になっているかを1時間おきに確認に行く必要があります。なので田んぼを定期的に観察しに行くのがかなり面倒です。
  • 過去の気温などのデータ化されておらず、まずは簡単な成長記録を取れると後でデータ分析とかできるかな、と思っています。
1.1 希望する動作(農作業をしている弟からのヒアリング)
  • 田んぼに水を入れているときの水位を定期的に計測したい。
  • 水深だけでなく、温度も参考までに知りたい
  • 成長のデータが残ってほしい
  • 保存されたデータがいつでも見れるとうれしい

市販のシステムは比較的高額で、導入の閾値が高いかなと思います。また、専用の画面などを見に行くのはめんどくさいので、LINEやメールで情報がプッシュされてきた方が見る方も楽。Raspberry pi使えばどうにでもできるでしょ、という思いがありました。一方で、自宅や自宅の庭での運用ではないので以下の課題があります。

1.2 システムを作るときの課題
  • 田んぼ脇には電源がない
  • WIFIも届かない
  • 作った本人(私)が設置する田んぼから離れているため、サポートはめったにできない

2. 解決策

・期待する動作と課題を考慮し、Raspberry Piで定期的に田んぼの画像(水深や稲の高さがわかる定規も一緒に)を撮影してLINEに通知できるものを作ってみました。

2.1システムの構成
  • ソーラーパネル+バッテリーで電源供給
  • Soracomで3G対応通信
  • RPiで田んぼの写真をLINEに通知
  • RPiの状況もプログラム動作時にLINEに通知する
2.2 購入したもの
アイテム 価格
Raspberry pi 4 (8gb) 8,500
micro SD 64gb 1,200
ESP32 DevKitC 1,200
SORACOM IoT SIM(Plan-D) 900
AK-020 5,500
シンワ測定(Shinwa Sokutei) 標尺 アルミ製 巾60mm 100cm 76934 1,200
電源センサーモジュール (INA219) 800
USB電源コンバータ(12V to 5V) 550
12V 7Ahゲルバッテリー 5,000
ソーラーチャージャーコントローラ 2,000
ソーラーパネル(50W 12V) 7,000
オムロンマイクロリレーモジュール 300
その他の細かい部品(配線や架台用L字アングル) 3,000
合計 37,150

安く作れると思いましたが、結局いろいろ買いそろえたら高くなってしまいました。
バッテリーとソーラーパネルはもっと安くて出力の小さいものでいいし、ラズパイも入手できるようになれば安価なZeroで問題ないのでコピーするときはもっと安く作れると思います。

2.3 構成のイメージ

こんな感じで購入品を接続しています。

構成のイメージ
2.4 動作のイメージ

・動作としては以下のような感じ。

動作イメージ
  1. ESP32
    1. マイクロリレーON
    2. RPiに給電開始
  2. RPi
    1. 給電開始により、自動的に起動
    2. 撮像プロセス開始
    3. 撮像したらLINEに投稿
    4. プロセス完了の通知をESP32に送信
    5. RPi自身でシャットダウン
  3. ESP32
    1. プロセス終了の信号を受信
    2. カウントダウンを開始
    3. カウント完了でマイクロリレーOFF
    4. ESP32のDeep sleep機能に突入
    5. Deepsleepからの復帰で最初に戻る

といった手順です。
動作確認用にGPIOの短絡をチェックしてシャットダウンさせないというモードを設けました。
また、プログラムが途中で止まってしまい、RPi4がシャットダウンできなかった時に備えて、cronで毎時15, 30, 45に強制的に再起動させる設定追加しました。

それぞれESP32に書き込んだプログラムと、RPiに書き込んだプログラムは下記の通りになります。

3. 設置

ソーラーパネル以外は組み立ててこんな感じになりました。

装置

ソーラーパネルと組み立てて、こんな感じで畔のところに装置を設置しました。台風などを考慮して、コンクリートブロックに固定し、ブロックを畔に埋め込んでいます。

設置画像

最終的にはこのような形で写真が定期的にLINEに投稿されてきます。

投稿された画像

写真の投稿は6~18時限定です。ただDeep sleepが1時間おきというのが管理しやすかったので、気温だったり生存確認の意味で19~5時までも温度関連の情報だけはLINEに投稿させています。
また19時には気温の変化と、電圧の変化を記録したグラフも下記のような感じで投稿させます。30日分をcsvに記録しているので、その間の情報はこの時に確認できます。

投稿されるデータ

4. 運用した感想や補足

  • とりあえず写真は定期的に撮影してくれているのがわかりました。今のところ自宅の庭で約1か月間トラブルなく動作し、田んぼでもそろそろ1か月程度トラブルなく動いています。
  • 真夏など高温になるときにちゃんと動くかが心配の種です。あとSDカードがどのくらい耐久力があるのか…
  • LINEで通知した画像を1日1枚抜き取ってタイムラプス動画とか作りたいな、と思います。
  • 気温履歴と合わせて稲の生長を分析するなどデータ処理も考えます。

そのほか

  • 当初、水位は超音波の距離計などを使って数値化しようと思いました。ただ、一定条件で距離を計測するのはちょっと大変そうだな、と思いました。どっちにしても稲の育成ログとして画像を取得するため、画像を取得する際に、画像に工事現場などで使われている大きい定規を一緒に撮影してしまえばわかるだろう、と判断しました。
  • 画像データはgoogleドライブに保存するようなイメージをしていましたが、LINEに通知さえしておけば、必要に応じて自分で保存できるでしょ、ということでいかまとめてLINE通知としました。ということでRapberry piを使って定期的に画像を取得し、併せて温度をLINEに通知するシステムを構築することとしました。
  • 大した動作をさせるわけではないので、Rapberry Pi Zeroを使おうと思ったのですが、昨今の状況でZeroを入手できるめどが立たなかったため、とりあえず手持ちの4を使うこととしました。一方で、4は消費電力が大きく、外部から電力供給させるならともかく、バッテリー駆動ではちょっと厳しいかな、と考えました。
  • RPi4を使うにあたり、消費電力を削減するために、LEDをオフにする、HDMI機能はオフにするといったことだけでなく、ダウンクロックは行おうと思いました。しかし、それでも削減できる電力はたかが知れています。さらに夜は特に撮像の必要もないということだったため、できるだけ電源がOFFの状態であるようにしたいと考えました。しかし、ラズパイ単体ではスリープモードがないため、別の装置でスリープさせることにしました。