今回はESP32を使用して温度計測をしていこうと思います。
温度センサはDHT22を使用します。
センサのスペック
まずは、使用していく温度センサのスペックについて簡単に示しておきます。
基本仕様
| 項目 | 内容 |
| 型番 | DHT22(AM2302) |
| 測定項目 | 温度・湿度 |
| 通信方式 | シングルワイヤ(独自プロトコル) |
| 電源電圧 | 3.3V ~ 6V |
| 消費電流 | 約1~1.5mA(測定時) |
| 測定周期 | 2秒以上 |
温度性能
| 項目 | 内容 |
| 測定範囲 | -40 ~ +80℃ |
| 精度 | ±0.5℃ |
| 分解能 | 0.1℃ |
湿度性能
| 項目 | 内容 |
| 測定範囲 | 0 ~ 100%RH |
| 精度 | ±2~5%RH |
| 分解能 | 0.1%RH |
配線について
今回はモジュールタイプを使用しましたので電源と信号の3つピンを接続すれはOKです。
ピン配置
| ピン | 内容 |
| 1 | VCC(3.3V) |
| 2 | DATA(4ピン) |
| 3 | GND |

ちなみに、今回使用している温湿度センサには似ているもので、DHT11と呼ばれるものがあります。違いはこんな感じです。
DHT22のほうが少し精度が良い感じです。
| 項目 | DHT11 | DHT22 |
| 温度範囲 | 0~50℃ | -40~80℃ |
| 精度 | ±2℃ | ±0.5℃ |
| 湿度精度 | ±5% | ±2~5% |
| 分解能 | 1 | 0.1 |
プログラム
使用したサンプルプログラムも載せておきます。
動作としては、初期化→10秒に1回、温度と湿度を計測→表示とするのみです。
#include "DHT.h"
// ===== 設定 =====
#define DHTPIN 4 // DATAピン(GPIO4)
#define DHTTYPE DHT22 // センサータイプ
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println("DHT22 test start");
dht.begin();
}
void loop() {
delay(10000); // DHT22は2秒以上間隔必要 今回は10秒に1回
float humidity = dht.readHumidity();
float temperature = dht.readTemperature(); // 摂氏
// 読み取り失敗チェック
if (isnan(humidity) || isnan(temperature)) {
Serial.println("読み取り失敗!");
return;
}
Serial.print("温度: ");
Serial.print(temperature);
Serial.print(" ℃ ");
Serial.print("湿度: ");
Serial.print(humidity);
Serial.println(" %");
}
結果
結果にどれくらいの正確性があるのか。
今回はSwitchBot 温湿度計との比較を行いました。
結果は写真の通り。
多少のズレはありますが、おおよそ近い数字が取れていることがわかりました。

まとめ
今回はESP32とDHT22を使用して温度/湿度計測を行ってきました。
次は取得した情報をどのように保存していくか?について書いていこうと思います。


コメント