ESP32とDHT22を使用して温度計測をする!

Uncategorized

今回は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です。

ピン配置

ピン内容
1VCC(3.3V)
2DATA(4ピン)
3GND

ちなみに、今回使用している温湿度センサには似ているもので、DHT11と呼ばれるものがあります。違いはこんな感じです。
DHT22のほうが少し精度が良い感じです。

項目DHT11DHT22
温度範囲0~50℃-40~80℃
精度±2℃±0.5℃
湿度精度±5%±2~5%
分解能10.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を使用して温度/湿度計測を行ってきました。
次は取得した情報をどのように保存していくか?について書いていこうと思います。


コメント

タイトルとURLをコピーしました