自動灌水
最終的には、土壌・植物・季節に応じて量と頻度を調節する自動灌水のシステムを作り、スマホで植物の状態を確認できるシステムを作りたい。まずは、土壌の水分量をセンシングする部分をESPr® DeveloperとArduino Cloudを用いて作成した。
準備物(¥4000程度)
- ESPr® Developer(ESP-WROOM-02開発ボード)
- ピンヘッダー(2.54 mmピッチ)
- 土壌水分センサー
- ブレッドボード
- ジャンパー線
- USB mini-Bケーブル
手持ちのArduinoを活用しようと思ったが、Wi-Fi対応でなかったため、廉価版Arduinoとして利用できるESPr® Developerを購入。土壌水分センサーはAmazonで売っているセンサーを買った。また、下記を参考に、ESPr® DeveloperにはGeneric ESP8266 Moduleをインストールしておいた。
Arduino Cloud
とりあえず土壌水分センサーの出力をそのままアナログ入力に繋いでみて、Arduino Cloudと繋げる。
基本的に以下の記事を参考に進めれば問題なく接続できる。
ただし、deviceの登録時には"Third party device"を選択する。
セットアップでのクラウド変数とスケッチについては以下の通り設定して、USBに接続した。"cloudMoisture"は既にセットアップで定義しているので、スケッチでは型指定しない。スケッチを書き込んだらESPr® DeveloperをPCに繋ぐ必要はなく、Wi-Fi経由で状態を確認したり、ダッシュボードの設定を行うことができる。
※macでは、Safariで書き込みができず、Chromeでは書き込むことができた。
#include "thingProperties.h"
void setup() {
Serial.begin(115200);
delay(1500);
initProperties();
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
}
void loop() {
ArduinoCloud.update();
cloudMoisture = analogRead(A0);
}
次に、ダッシュボードの設定を行う。"Chart"を選び、"Linked Variable"に先ほど設定したクラウド変数"cloudMoisture"を紐付ける。すると、入力を時系列データとして表示することができ、無料のFreeプランでは過去1日間のデータを表示することができる。csv形式でダウンロードすることも可能。
今回使用したボードとセンサーでは入出力の範囲が噛み合わず、とりあえず抵抗分圧でアナログ入力の電圧を1/3にした。次はこのセンサーを入力に繋ぐ最適な方法を探していく。
参考
https://sample.msr-r.net/esp8266-setting/
https://cloud.arduino.cc/
https://qiita.com/macole/items/ba3fcbcc5945423984ac