注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!
6. 植物モニター¶
このプロジェクトの目的は、現在の温度、湿度、光の強度、土壌の湿度を検出し、それらをBlynkに表示するスマートな水やりシステムを作成することです。
Blynk Cloudでスイッチをオンにすると、ポンプが動作を開始し、植物に水分が供給されます。
必要な部品
このプロジェクトでは、以下の部品が必要です。
全体のキットを購入するのは非常に便利です。リンクは以下のとおりです:
名前 |
このキットのアイテム |
リンク |
|---|---|---|
3 in 1 Starter Kit |
380+ |
以下のリンクから個別に購入することもできます。
コンポーネントの紹介 |
購入リンク |
|---|---|
- |
|
- |
|
- |
|
- |
1. 回路を組む
注釈
ESP8266モジュールは、安定した動作環境を提供するために高電流が必要ですので、9Vのバッテリーが接続されていることを確認してください。
2. ダッシュボードを編集
前のプロジェクトで作成されたデータストリームは保存される必要があり、このプロジェクトでも使用されます。
土壌の湿度を記録するために、 Datastream ページで Virtual Pin タイプの別の Datastream を作成します。DATA TYPEを
Integerに設定し、MINとMAXをそれぞれ0と1024に設定します。
次に Wed Dashboard ページに移動し、2つの Label ウィジェットをドラッグし、それらのデータストリームをそれぞれ V4 と V5 に設定します。2つの Gauge ウィジェットをドラッグし、そのデータストリームをそれぞれ V6 と V7 に設定します。最後に、 Switch ウィジェットをドラッグし、そのデータストリームを V0 に設定します。
3. コードの実行
3in1-kit\iot_project\6.plant_monitoring のパスの下で 6.plant_monitoring.ino ファイルを開く、もしくはこのコードを Arduino IDE にコピーします。
注釈
ここでは
DHT sensor libraryが使用されています。 Library Manager からインストールすることができます。![]()
Template ID、Device Name、およびAuth Tokenを自分のものに置き換えます。使用しているWiFiのssidおよびpasswordも入力する必要があります。詳しいチュートリアルは 1.3 R4ボードをBlynkに接続する を参照してください。適切なボードとポートを選択した後、 Upoad ボタンをクリックします。
シリアルモニター(ボーレートを115200に設定)を開き、成功した接続などのプロンプトが表示されるのを待ちます。
注釈
接続時に
ESP is not respondingというメッセージが表示される場合、以下の手順に従ってください。9Vのバッテリーが接続されていることを確認します。
ピンRSTを1秒間GNDに接続して、ESP8266モジュールをリセットします。その後、それを取り外します。
R4ボード上のリセットボタンを押します。
この操作を3〜5回繰り返す必要があることもあります。しばらくお待ちください。
Blynkに戻ると、現在の温度、湿度、光の強度、土壌の湿度が表示されます。必要に応じて、ボタンコントロールウィジェットをクリックして植物に水をやることができます。
モバイルデバイスでBlynkを使用したい場合は、 モバイルデバイスでのBlynkの使用方法 を参照してください。
どのように動作するのか?
この BLYNK_WRITE は、Blynkの Switch ウィジェットがONのときにポンプを起動し、OFFのときに停止するようにします。
BLYNK_WRITE(V0)
{
if(param.asInt()==1){
digitalWrite(pumpA,HIGH);
}else{
digitalWrite(pumpA,LOW);
}
}
これらの三つの関数は、現在の環境温度、湿度、光の強度、および土壌の湿度を取得するために使用されます。
int readMoisture(){
return analogRead(moisturePin);
}
int readLight(){
return analogRead(lightPin);
}
bool readDHT() {
// 温度または湿度の読み取りには約 250 ミリ秒かかります。
// センサーの読み取り値は最大 2 秒ほど「古い」場合もあります (非常に遅いセンサーです)
humidity = dht.readHumidity();
// 温度を摂氏として読み取ります (デフォルト)
temperature = dht.readTemperature();
// 失敗した読み取りがあるかどうかを確認し、早めに終了します (再試行するため)。
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return false;
}
return true;
}
Blynkの Timer を使用すると、周囲の温度、湿度、光の強度、土壌の湿度が毎秒取得され、それらが Blynk Cloud 上のデータストリームに送信されます。その結果、ウィジェットがデータを表示します。
void myTimerEvent()
{
bool chk = readDHT();
int light = readLight();
int moisture = readMoisture();
if(chk){
Blynk.virtualWrite(V4,humidity);
Blynk.virtualWrite(V5,temperature);
}
Blynk.virtualWrite(V6,light);
Blynk.virtualWrite(V7,moisture);
}