. DHT22で温湿度を取得してみる‼(ESP32編)
DHT22で温湿度を取得してみる‼(ESP32編)
DHT22で温湿度を取得してみる‼(ESP32編)

DHT22で温湿度を取得してみる‼(ESP32編)

こんにちは‼

 

今回はDHT22という、温湿度を簡単に取得できる定番センサーをご紹介したいと思います。

このDHTはシリーズは、主に2種類あり、DHT11とDHT22があります。

それぞれの性能を比較してみましょう‼

項目 DHT11 DHT22 温度測定範囲 -20~+60℃ -40.0~+80.0℃ 温度精度 ±2℃ ±0.5℃ 湿度測定範囲 5~95% 0~99% 湿度精度 ±5% ±2% 電源供給 0.5~2.5mA 1~1.5mA サンプリング期間 1秒 2秒 価格 約300円 約700円

※価格は大よその相場です。購入する場所や、購入量によって結構変わってきますので、参考程に。

 

DHT11よりも22の方が高性能ですが、その分値段も上がりますので、用途によって使い分けると良いですね♪

ちなみにDHT22の方は小数点第一位まで測定可能です。

★目次★

  • ②「部品」
  • ③「配線図」
  • ④「開発環境」
  • ⑤「プログラミング」
  • ⑤「結果」
②「部品」 ・DHT22

電子工作ステーション 600円(送料無料)

・ESP-WROOM-32 38pinモデル

電子工作ステーション 1100円(送料無料)(30pinモデル)

秋月電子 1230円+送料(38Pinモデル)

 

・通信用マイクロUSBケーブルタイプB (家に無ければ)

ESP-WROOM-32とパソコンを繋ぐためのケーブルです。

スマホ用充電専用タイプだと使えないのでご注意ください。

タイプB通信ケーブル ・ジャンパーワイヤー(メス・メス)

電子工作ステーション 1セット(10本)100円+送料(500円以上で無料)

秋月電子 10本330円+送料

 

③「配線図」 DHT22 ESP-WROOM-32 DAT 2 VCC VIN GND GNT

センサーのDATpinと、ESP32のデジタルピン2番を繋ぎ、VCCとVINを繋ぎ、GNDを繋いで完了‼

プルアップ抵抗は、モジュールに付いているかと思うので、必要ないかと思います。

 

※プルアップ抵抗とは ➡ 参考

※DHT11も同じ回路、ほぼ同じプログラムで動きます。

④「開発環境」

まず、Arduino IDEにESP-WROOM-32を使えるようにしましょう‼

やり方はこちら⇩(既に使えるようにしている方は不要です)

Arduino IDEでESP-WROOM-02(ESP8266)とESP-WROOM-32を使えるようにする!(Windows10)

 

次に、DHTセンサーのライブラリーを入れます

Arduino IDEを開き、ツール⇒ライブラリー管理を選択、

「DHT sensor library」を検索しインストールします。

 

これで準備完了‼

後はプログラミング‼

⑤「プログラミング」

Arduino IDEを開き、ファイル➡スケッチ例➡「DHT sensor library」➡「DHT_Unified_Sensor」をクリックします‼

そうするとコード例が出てくるので、「 Serial.begin(9000);」を 「Serial.begin(115200);」に変え、ビルド開始‼

一応コード例貼っておいきます⇩

// DHT Temperature & Humidity Sensor // Unified Sensor Library Example // Written by Tony DiCola for Adafruit Industries // Released under an MIT license. // REQUIRES the following Arduino libraries: // - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library // - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor #include <Adafruit_Sensor.h> #include <DHT.h> #include <DHT_U.h> #define DHTPIN 2 // Digital pin connected to the DHT sensor // Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 -- // Pin 15 can work but DHT must be disconnected during program upload. // Uncomment the type of sensor in use: //#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) // See guide for details on sensor wiring and usage: // https://learn.adafruit.com/dht/overview DHT_Unified dht(DHTPIN, DHTTYPE); uint32_t delayMS; void setup() { Serial.begin(115200); // Initialize device. dht.begin(); Serial.println(F("DHTxx Unified Sensor Example")); // Print temperature sensor details. sensor_t sensor; dht.temperature().getSensor(&sensor); Serial.println(F("------------------------------------")); Serial.println(F("Temperature Sensor")); Serial.print (F("Sensor Type: ")); Serial.println(sensor.name); Serial.print (F("Driver Ver: ")); Serial.println(sensor.version); Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id); Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F("°C")); Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F("°C")); Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F("°C")); Serial.println(F("------------------------------------")); // Print humidity sensor details. dht.humidity().getSensor(&sensor); Serial.println(F("Humidity Sensor")); Serial.print (F("Sensor Type: ")); Serial.println(sensor.name); Serial.print (F("Driver Ver: ")); Serial.println(sensor.version); Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id); Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F("%")); Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F("%")); Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F("%")); Serial.println(F("------------------------------------")); // Set delay between sensor readings based on sensor details. delayMS = sensor.min_delay / 1000; } void loop() { // Delay between measurements. delay(delayMS); // Get temperature event and print its value. sensors_event_t event; dht.temperature().getEvent(&event); if (isnan(event.temperature)) { Serial.println(F("Error reading temperature!")); } else { Serial.print(F("Temperature: ")); Serial.print(event.temperature); Serial.println(F("°C")); } // Get humidity event and print its value. dht.humidity().getEvent(&event); if (isnan(event.relative_humidity)) { Serial.println(F("Error reading humidity!")); } else { Serial.print(F("Humidity: ")); Serial.print(event.relative_humidity); Serial.println(F("%")); } } 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 // DHT Temperature & Humidity Sensor// Unified Sensor Library Example// Written by Tony DiCola for Adafruit Industries// Released under an MIT license. // REQUIRES the following Arduino libraries:// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor #include <Adafruit_Sensor.h>#include <DHT.h>#include <DHT_U.h> #define DHTPIN 2     // Digital pin connected to the DHT sensor // Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --// Pin 15 can work but DHT must be disconnected during program upload. // Uncomment the type of sensor in use://#define DHTTYPE    DHT11     // DHT 11#define DHTTYPE    DHT22     // DHT 22 (AM2302)//#define DHTTYPE    DHT21     // DHT 21 (AM2301) // See guide for details on sensor wiring and usage://   https://learn.adafruit.com/dht/overview DHT_Unified dht(DHTPIN, DHTTYPE); uint32_t delayMS; void setup() {  Serial.begin(115200);  // Initialize device.  dht.begin();  Serial.println(F("DHTxx Unified Sensor Example"));  // Print temperature sensor details.  sensor_t sensor;  dht.temperature().getSensor(&sensor);  Serial.println(F("------------------------------------"));  Serial.println(F("Temperature Sensor"));  Serial.print  (F("Sensor Type: ")); Serial.println(sensor.name);  Serial.print  (F("Driver Ver:  ")); Serial.println(sensor.version);  Serial.print  (F("Unique ID:   ")); Serial.println(sensor.sensor_id);  Serial.print  (F("Max Value:   ")); Serial.print(sensor.max_value); Serial.println(F("°C"));  Serial.print  (F("Min Value:   ")); Serial.print(sensor.min_value); Serial.println(F("°C"));  Serial.print  (F("Resolution:  ")); Serial.print(sensor.resolution); Serial.println(F("°C"));  Serial.println(F("------------------------------------"));  // Print humidity sensor details.  dht.humidity().getSensor(&sensor);  Serial.println(F("Humidity Sensor"));  Serial.print  (F("Sensor Type: ")); Serial.println(sensor.name);  Serial.print  (F("Driver Ver:  ")); Serial.println(sensor.version);  Serial.print  (F("Unique ID:   ")); Serial.println(sensor.sensor_id);  Serial.print  (F("Max Value:   ")); Serial.print(sensor.max_value); Serial.println(F("%"));  Serial.print  (F("Min Value:   ")); Serial.print(sensor.min_value); Serial.println(F("%"));  Serial.print  (F("Resolution:  ")); Serial.print(sensor.resolution); Serial.println(F("%"));  Serial.println(F("------------------------------------"));  // Set delay between sensor readings based on sensor details.  delayMS = sensor.min_delay / 1000;} void loop() {  // Delay between measurements.  delay(delayMS);  // Get temperature event and print its value.  sensors_event_t event;  dht.temperature().getEvent(&event);  if (isnan(event.temperature)) {    Serial.println(F("Error reading temperature!"));  }  else {    Serial.print(F("Temperature: "));    Serial.print(event.temperature);    Serial.println(F("°C"));  }  // Get humidity event and print its value.  dht.humidity().getEvent(&event);  if (isnan(event.relative_humidity)) {    Serial.println(F("Error reading humidity!"));  }  else {    Serial.print(F("Humidity: "));    Serial.print(event.relative_humidity);    Serial.println(F("%"));  }}

エラーが出なければ完了です‼

 

※エラーが出た場合

1.「…DHT_sensor_library\DHT_U.h:36:29: fatal error: Adafruit_Sensor.h: No such file or directory」

というエラーで、ビルドに失敗した場合。

「Unified」というライブラリーを入れることで改善できます。

 

2.「Connecting……._____….._____…..____スケッチの書き込み中にエラーが発生しました」

というエラーで、ビルドに失敗した場合。

ESP-WROOM-32に繋いでいるDATpinを外した状態でビルドをしてみてください。

(ビルドが終わってから繋ぎます)

⑤「結果」

ビルドに成功するとシリアルモニターに、こんな感じで表示されます‼

errorが出たら配線は間違っている可能性が高いので、再度確認しましょう‼

※「°C」は上記の写真のように、文字化けします。

 

これで部屋の温度と湿度が一目で分かります^^

 

これを応用すれば更に面白い物が作れますので、是非チャレンジ出てみましょう♪

以上、ご閲覧ありがとうございました‼

カテゴリー:ESP-WROOM32​はんだ付け不要​センサー​電子工作初級

タグ:dht22センサー温度湿度電子工作

toccho

📎📎📎📎📎📎📎📎📎📎