DHT11とは?
DHT11は、温度と湿度を同時に測れるセンサーです。
安価で手に入りやすく、ArduinoやESP32といったマイコンに簡単に接続できるため、電子工作の入門に最適です。
Amazonで販売されているモジュール例
ESP32との接続方法
ESP32とDHT11の配線例は次の通りです。
- DHT11 VCC → ESP32 3.3V(赤)
- DHT11 GND → ESP32 GND(黒)
- DHT11 DATA → ESP32 GPIO4(黄)
- データ線には 10kΩのプルアップ抵抗を3.3Vに接続すると安定します。
必要なライブラリ
Arduino IDE(またはPlatformIO)で以下をインストールしてください。
- DHT sensor library(by Adafruit)
- Adafruit Unified Sensor
Arduino IDE の「ライブラリマネージャ」から検索・インストール可能です。
サンプルコード(初心者向け)
以下のコードをESP32に書き込むと、シリアルモニタに温度と湿度が2秒ごとに表示されます。
コメントを多めに入れてあるので、処理の流れが理解しやすいと思います。
#include <Arduino.h>
#include "DHT.h"
// センサーの種類を指定(DHT11を使う場合はこう書く)
#define DHTTYPE DHT11
// センサーの信号線をESP32のGPIO4に接続する例
#define DHTPIN 4
// ライブラリに「どのセンサーがどのピンか」を教える
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// シリアルモニタと通信を開始(115200bps)
Serial.begin(115200);
delay(200);
Serial.println("ESP32 + DHT11: スタート!");
Serial.println("配線: VCC=3.3V, GND=GND, DATA=GPIO4 (10kΩプルアップ推奨)");
// センサーを使えるように初期化
dht.begin();
}
void loop() {
// DHT11は応答が遅いため、2秒以上待ってから読み取る
delay(2000);
// 湿度を読む
float humidity = dht.readHumidity();
// 温度を読む(摂氏)
float temperature = dht.readTemperature();
// 読み取りに失敗した場合(NaNが返る)
if (isnan(humidity) || isnan(temperature)) {
Serial.println("センサー読み取りに失敗しました。配線や電源を確認してください。");
return;
}
// 測定結果を表示
Serial.print("温度: ");
Serial.print(temperature);
Serial.print(" ℃ / 湿度: ");
Serial.print(humidity);
Serial.println(" %");
}動作確認
- Arduino IDE でシリアルモニタを開き、通信速度を 115200bps に設定します。
- 配線が正しければ、2秒ごとに「温度」「湿度」が表示されるはずです。
- 値が表示されない場合は、配線ミスやプルアップ抵抗の有無を確認してください。
まとめ
DHT11は、「とりあえず温湿度を測ってみたい!」 という入門用途にピッタリのセンサーです。
精度や測定範囲に制限はあるものの、ESP32と組み合わせれば簡単に動作確認ができます。
次のステップとしては、DHT22(AM2302)やBME280といった、より高精度なセンサーに挑戦してみるのも良いでしょう。
