ESP32 チュートリアル 28/55 - DHT11 温度センサーと LCD | SunFounder の ESP32 IoT 学習キット
このチュートリアルでは、DHT11温湿度センサーをESP32マイクロコントローラーと接続する方法を探ります。このセットアップを使用して、周囲の温度と湿度を測定し、シリアルモニターとLCDスクリーンの両方に結果を表示します。さらに、温度が特定の閾値を超えたときに動作するブザーを実装します。
このプロジェクトは、DHT11センサーの使用を示すだけでなく、内蔵のWi-FiとBluetooth機能を備えたESP32の汎用性も紹介しています。このチュートリアルの終わりには、環境条件を継続的に監視し、リアルタイムのフィードバックを提供する動作するセットアップが完成します。
このチュートリアルに付随するビデオをチェックして、視覚的なガイドを見てみましょう(ビデオは00:00にあります)。それでは始めましょう!
ハードウェアの説明
このプロジェクトで使用される主なコンポーネントは、ESP32マイクロコントローラー、DHT11センサー、およびLCDディスプレイです。ESP32はこの操作の脳として機能し、DHT11センサーからのデータを処理し、LCD出力を制御します。
DHT11センサーは湿度と温度を測定し、1本のデータラインを通じて読み取り値を提供します。3.3Vから5.5Vの電源供給が必要で、低消費電力であるため、バッテリー駆動のアプリケーションに適しています。LCDはリアルタイムで温度と湿度の値を表示します。
データシートの詳細
| 製造業者 | グローブ |
|---|---|
| 部品番号 | DHT11 |
| 論理/IO電圧 | 3.3 - 5.5 V |
| 供給電圧 | 3.3 V |
| 出力電流(チャネルごと) | 0.5 mA 標準 |
| ピーク電流(チャネルごと) | 最大2.5 mA |
| PWM周波数ガイダンス | N/A |
| 入力論理閾値 | 0.3 VCC(ローレベル)、0.7 VCC(ハイレベル) |
| 電圧降下 / RDS(on)/ 滞留 | 該当なし |
| 熱的限界 | 0°Cから60°C |
| パッケージ | DIP-4 |
| ノート / 変種 | 解像度:1°C / 1% RH |
- データラインにプルアップ抵抗(推奨値5 kΩ)を使用してください。
- センサーの配線は短く(20メートル未満)、正確な読み取りを確保してください。
- DHT11を最適な性能のために3.3Vで動作させます。
- サンプリング期間は1秒未満であってはならない。
- 読み取り値が失敗した場合は、配線接続を確認してください(例:接続されていない、ピンが不正)。
配線指示


DHT11センサーをESP32に配線するには、まずDHT11のVCCピン(左端のピン)をESP32の3.3V出力に接続します。次に、グラウンドピン(4番目のピン)をESP32のグラウンド(GND)ピンに接続します。データピン(2番目のピン)はESP32のGPIOピン14に接続する必要があります。
LCDの場合、VCCピンをESP32の5V出力に接続します。グラウンドピンはESP32のグラウンドピンに接続する必要があります。LCDのSDAおよびSCLピンはそれぞれGPIOピン21および22に接続する必要があります。データを読み取る際の問題を避けるために、すべての接続が確実であることを確認してください。
コード例とウォークスルー
コードの最初の部分では、DHTセンサーを初期化し、ピン番号を設定します。#define DHTPIN 14この識別子を使用すると、コード全体でDHT11データラインに接続されたピンを簡単に参照できます。
#include "DHT.h"
#define DHTPIN 14 // Set the pin connected to the DHT11 data pin
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
の中でsetup()関数では、デバッグ用にシリアル通信を初期化し、DHTセンサーを開始します。メインループには、センサーにリクエストを過剰に送信しないようにするために2秒の遅延が含まれています。
次に、湿度と温度の値を読み取ります。float humidity = dht.readHumidity();とfloat temperature = dht.readTemperature();これらの識別子は、後で使用するための測定値を保存します。
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
}
最後に、読み取りエラーがないか確認し、値をシリアルモニタに印刷します。Serial.print()これにより、リアルタイムで測定値を観察することができます。
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
LCDコードでは、LCDを初期化し、画面に温度と湿度を表示します。lcd.print()機能。これはDHT11センサーによって収集されたデータの視覚的表現を提供します。
デモンストレーション / 期待できること
すべてが正しく配線され、コードがESP32にアップロードされると、温度と湿度の測定値がシリアルモニターとLCD画面に表示されるはずです。温度が30°Cを超えると、ブザーが作動し、音のアラートが提供されます。
逆接続には注意し、センサーが極端な条件にさらされないようにしてください。これが読み取り値に影響を与える可能性があります。要件に応じてブザーのしきい値を調整する必要があるかもしれません(動画の15:30で)。
動画のタイムスタンプ
- 00:00 スタート
- 1:57 DHT11の紹介
- 6:18 ESP32とDHT11の配線
- 7:67 Arduino コードの説明
- 11:49 Arduino IDEでESP32ボードとCOMポートを選択中
- 13:30 プロジェクトデモンストレーション
- 15:32 華氏を取得中
- ESP32を使用してLCDに温度を表示する 16:04
- 17:20 DHT11とLCDとESP32のコード
- 19:49 ESP32を使ったDHT11 LCDデモ
- 21:33 温度値に関するアクションを取る
#include "DHT.h"
#define DHTPIN 14 // DHT11データピンに接続されたピンを設定してください。
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println("DHT11 test!");
dht.begin();
}
void loop() {
// 測定の間に数秒待ってください。
delay(2000);
// 温度または湿度を測定するのに約250ミリ秒かかります!
// センサーの読み取り値は最大で2秒「古い」場合があります(これは非常に遅いセンサーです)。
float humidity = dht.readHumidity();
// 摂氏(デフォルト)の温度を読む
float temperature = dht.readTemperature();
// リードの失敗がないか確認し、早期に終了します(再試行のため)。
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// 湿度と温度を印刷する
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
}
/*
* これは、DHT11/DHT22を使用して温度と湿度を測定し、LCDスクリーンに表示するためのArduinoコードです。アフマド・シャムシリによって、SunFounderのESP32 IoT学習キットのために書かれました。フル動画はhttps://youtu.be/qRUFZX4eDJgをご覧ください。このチュートリアルの完全なコード、配線図、およびその他のリソースはhttps://robojax.com/RJT711にあります。
*/
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 14 // DHT11データピンに接続されたピンを設定します。
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
// I2Cアドレス0x27、16列、2行でLCDオブジェクトを初期化します。
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// 115200ボーでシリアル通信を開始します
Serial.begin(115200);
// dht11を初期化する
dht.begin();
// LCDを初期化する
lcd.init();
lcd.backlight();
// LCDをクリアする
lcd.clear();
}
void loop() {
// 測定の間に数秒待ってください。
delay(2000);
// 温度や湿度を測定するのに約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に温度と湿度を表示する
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.write(223); // 度記号
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humi: ");
lcd.print(humidity);
lcd.print("%");
}
Common Course Links
Common Course Files
必要かもしれないもの
-
アマゾンAmazonでDHT11を購入するamzn.to
-
バングッドBanggoodからDHT11モジュールを購入するbanggood.com
リソースと参考文献
-
ドキュメンテーションESP32 チュートリアル 28/55 - DHT 温度センサーのための SunFounder ドキュメントページdocs.sunfounder.com
ファイル📁
フリッツィングファイル
-
DHT11湿度および温度センサー(3ピン)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
ユーザーマニュアル
-
DHT11 ユーザーマニュアル
robojax-DHT11_manual.pdf0.82 MB