ESP32チュートリアル 35/55 - 植物モニター、土壌、温度と光 | SunFounderのESP32 IoT学習キット
このチュートリアルでは、SunFounder ESP32 IoT Learning Kit の ESP32 マイクロコントローラーを使用して植物モニターを構築します。このプロジェクトは、土壌の水分、温度、湿度、光のレベルを監視するためにいくつかのコンポーネントを組み合わせています。このガイドの最後には、植物ケアのためにこれらの重要なパラメーターを管理および表示できる完全なシステムが完成します。詳細なビジュアル説明については、動画(動画の 00:00 にて)をぜひチェックしてください。

ハードウェアの説明
このプロジェクトで使用される主なコンポーネントには、ESP32マイクロコントローラー、DHT11センサー、土壌水分センサー、光依存抵抗器(LDR)、およびデータを表示するためのLCDが含まれています。ESP32は、データ処理と制御タスクを処理するセットアップの中核を担っています。内蔵のWi-FiとBluetoothを備えており、リモートモニタリングのための接続オプションを提供します。
DHT11センサーは温度と湿度を測定し、土壌水分センサーは土壌内の水分レベルを検出します。LDRは周囲の光の強度を測定し、植物の照明条件に関する洞察を提供します。各コンポーネントは、リアルタイムデータを提供することで植物の健康を確保する上で重要な役割を果たしています。
データシートの詳細
| メーカー | サンファウンダー |
|---|---|
| 部品番号 | DHT11 |
| ロジック/IO電圧 | 3.3 V |
| 供給電圧 | 5 V |
| 出力電流(チャンネルあたり) | 20 mA |
| ピーク電流(チャネルあたり) | 50 mA |
| PWM周波数のガイダンス | N/A |
| 入力論理閾値 | 0.3 VCC(低)、0.7 VCC(高) |
| 電圧降下 / RDS(on)/ サチュレーション | N/A |
| 熱的限界 | 0°Cから50°C |
| パッケージ | ディップ |
| ノート / バリアント | DHT22と互換性があります |
- 各コンポーネントに対して適切な電圧レベルを確保してください(モータードライバーは5V、センサーは3.3V)。
- プッシュボタンにはプルダウン抵抗を使用して、フローティング入力を防ぎます。
- 配線はきちんと整理して、混乱や短絡を避けましょう。
- 回路を電源投入する前に接続を確認して、損傷を防ぎます。
- DHT11の配線を確認してください。接続が不適切な場合、敏感です。
配線指示

コンポーネントを配線するには、まず電源と接地ラインを接続します。ESP32はリチウムバッテリーで電源を供給し、正極をVCCラインに、接地をブレッドボードのGNDラインに接続します。DHT11センサーのデータピンは接続されます。PIN 13、VCCは3.3Vラインに、GNDはグラウンドに接続されます。土壌水分センサーは同様に接続されます:信号ピンはPIN 14、VCCを3.3Vに、GNDをグラウンドに接続します。
LDRには、1つのピンを3.3Vラインに接続し、もう1つを接続します。PIN 35LDRからグラウンドに接続された10kオームの抵抗があります。LCDディスプレイは5Vラインに接続され、電源として使用します。SDAそしてSCL接続されたピンPIN 21とPIN 22、そして最後に、プッシュボタンを配線してください。PIN 32プルダウン抵抗がグラウンドに接続されているため、押されていないときは低い値を、押されているときは高い値を読み取ることができます。
コード例と手順解説
プログラムの核は、各コンポーネントのピンを定義することから始まります。例えば、DHTPINに割り当てられていますPIN 13DHT11センサーの場合、 WhileMOIS_PIN設定されていますPIN 14湿度センサー用。この組織は、どのセンサーがどのピンに接続されているかを追跡するのに役立ちます。
#define DHTPIN 13 // Set the pin connected to the DHT11 data pin
#define MOIS_PIN 14 // Soil moisture module
#define LIGHT_PIN 35 // Photoresistor
次に、DHTセンサーとLCDディスプレイを初期化します。setup()関数。これは、これらのコンポーネントを操作のために準備するために重要です。必ず呼び出すことを確認してください。dht.begin()DHTセンサーが値を正しく読み始めるために不可欠です。
void setup() {
Serial.begin(115200);
dht.begin(); // Initialize the DHT11
lcd.init(); // Initialize the LCD
lcd.backlight();
}
In theloop()機能として、私たちは温度と湿度の値を継続的に読み取り、それをLCDに表示します。ボタンが押されると、モーターが作動して植物に水を与えます。このロジックは、ボタンピンのデジタル読み取りを使用して、モーターをオンまたはオフにするかを判断します。
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (digitalRead(BUTTON) == HIGH) {
digitalWrite(motor1A, HIGH); // Turn on water pump
} else {
digitalWrite(motor1A, LOW); // Turn off water pump
}
delay(2000);
}
このコード構造はデータと制御の明確なフローを可能にし、プラントモニターがスムーズに機能することを保証します。詳細については、完全なコードが記事の下に読み込まれます。
デモンストレーション / 期待すること
セットアップの完了とコードのアップロードが完了すると、LCDは温度と湿度の読み取り値を交互に表示し、土壌の湿度と光のレベルを示します。押しボタンが押されると、水ポンプが作動し、植物に水が供給されます。浮遊入力や不正確な読み取りなどの問題を避けるために、すべての接続が確実であることを確認してください(ビデオの05:30にて)。
LCDとシリアルモニターに表示される値を監視することで、システムが正しく機能していることを確認できます。問題が発生した場合は、配線を再確認し、すべてのコンポーネントに適切に電源が供給されていることを確認してください。
動画のタイムスタンプ
- 00:00 開始
- 2:23 プロジェクト紹介
- 4:02 ドキュメントページ
- 7:43 1-L293D ポンプモータードライバー
- 14:30 ポンプのための2つのボタンを押してください
- 16:35 3-DHT11 温度および湿度センサー
- 19:26 4スライド湿度センサー
- 21:43 5灯センサー
- 24:47 6-土壌水分センサー
- 26:01 フルプラントモニターArduinoコード
- 29:21 デモンストレーション
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 13 // DHT11データピンに接続されているピンを設定します。
#define MOIS_PIN 14 // 土壌水分モジュール
#define LIGHT_PIN 35 // フォトレジスタ
#define motor1A 27 // ポンプピン
#define motor2A 26 // ポンプピン
#define BUTTON 32 // ボタン
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
int page = 0;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
// dht11を初期化する
dht.begin();
lcd.init(); // LCDを初期化する
lcd.backlight();
lcd.clear();
// デジタルピンを出力として初期化します。
pinMode(motor1A, OUTPUT);
pinMode(motor2A, OUTPUT);
pinMode(BUTTON, INPUT);
}
void loop() {
// 温度や湿度の測定には約250ミリ秒かかります!
// センサーの読み取り値は最大で2秒「古い」場合があります(非常に遅いセンサーです)。
float humidity = dht.readHumidity();
// 温度をセルシウス(デフォルト)として読み取る
float temperature = dht.readTemperature();
// 読み取りに失敗したものがあるか確認し、早期に終了します(再試行するために)。
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
lcd.clear();
// 2秒ごとにメッセージを表示する
if ((page++) % 2) {
// 温度と湿度を表示する
lcd.setCursor(0, 0);
lcd.print("Humi: ");
lcd.print(humidity);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("\xDF");
lcd.print("C");
} else {
// 湿度と光センサーの値を表示する
lcd.setCursor(0, 0);
lcd.print("Mois: ");
lcd.print(analogRead(MOIS_PIN));
lcd.setCursor(0, 1);
lcd.print("Light: ");
lcd.print(analogRead(LIGHT_PIN));
}
// ボタンを押している間に植物に水やりをする
Serial.println(digitalRead(BUTTON));
if (digitalRead(BUTTON) == HIGH) {
// ボタンが押されたら水ポンプをオンにする
digitalWrite(motor1A, HIGH);
digitalWrite(motor2A, LOW);
} else {
// ボタンが押されていない場合は、水ポンプをオフにしてください。
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, LOW);
}
delay(2000);
}
Common Course Links
Common Course Files
必要かもしれないもの
-
アマゾンAmazonでLCD1602-I2Cを購入するamzn.to
-
イーベイeBayでLCD1602-I2Cを購入するebay.us
-
アリエクスプレスAliExpressから10個のLCD1602-I2Cを購入するs.click.aliexpress.com
リソースと参考文献
-
ドキュメンテーションESP32チュートリアル 35/55 - SunFounderドキュメントページ プラントモニターdocs.sunfounder.com
ファイル📁
フリッツィングファイル
-
DHT11湿度および温度センサー(3ピン)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB -
4本のワイヤーを持つLCD LCD1602-I2Cモジュール
LCD1602-I2C.fzpz0.01 MB