電子工作

Arduino#5 DHT11温度湿度モジュールを使って測定してみた‼

配線図

  • DHT11のDATA(青線)をArduinoの 7番端子 に接続。
  • DHT11のVDD(赤線)をArduinoの 5V端子 に接続。
  • DHT11のGND(黒線)をArduinoの GND端子 に接続。

使用部品

  • DHT11 温・湿度モジュール (スターターキット:Amazon購入)

Arduino IDE

  • 「スケッチ」>「ライブラリをインクルード」>「ライブラリを管理」を選択。
  • ライブラリマネジャー(赤矢印)に、「DHT11」と入力し、Enter。
  • 「DHT sensor library by Adafruit」(赤丸)をインストールする。
  • 「ファイル」>「開く」>「libraries」>「DHT_sensor_library」>「examples」>「DHT_Unified_Sensor」>「DHT_Unified_Sensor」を開く。

  1. // DHT Temperature & Humidity Sensor
  2. // Unified Sensor Library Example
  3. // Written by Tony DiCola for Adafruit Industries
  4. // Released under an MIT license.
  5. // REQUIRES the following Arduino libraries:
  6. // – DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
  7. // – Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
  8. #include <Adafruit_Sensor.h>
  9. #include <DHT.h>
  10. #include <DHT_U.h>
  11. #define DHTPIN 2     // Digital pin connected to the DHT sensor
  12. // Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 —
  13. // Pin 15 can work but DHT must be disconnected during program upload.
  14. // Uncomment the type of sensor in use:
  15. //#define DHTTYPE    DHT11     // DHT 11
  16. #define DHTTYPE    DHT22     // DHT 22 (AM2302)
  17. //#define DHTTYPE    DHT21     // DHT 21 (AM2301)
  18. // See guide for details on sensor wiring and usage:
  19. //   https://learn.adafruit.com/dht/overview
  20. DHT_Unified dht(DHTPIN, DHTTYPE);
  21. uint32_t delayMS;
  22. void setup() {
  23.   Serial.begin(9600);
  24.   // Initialize device.
  25.   dht.begin();
  26.   Serial.println(F(“DHTxx Unified Sensor Example”));
  27.   // Print temperature sensor details.
  28.   sensor_t sensor;
  29.   dht.temperature().getSensor(&sensor);
  30.   Serial.println(F(“————————————“));
  31.   Serial.println(F(“Temperature Sensor”));
  32.   Serial.print  (F(“Sensor Type: “)); Serial.println(sensor.name);
  33.   Serial.print  (F(“Driver Ver:  “)); Serial.println(sensor.version);
  34.   Serial.print  (F(“Unique ID:   “)); Serial.println(sensor.sensor_id);
  35.   Serial.print  (F(“Max Value:   “)); Serial.print(sensor.max_value); Serial.println(F(“°C”));
  36.   Serial.print  (F(“Min Value:   “)); Serial.print(sensor.min_value); Serial.println(F(“°C”));
  37.   Serial.print  (F(“Resolution:  “)); Serial.print(sensor.resolution); Serial.println(F(“°C”));
  38.   Serial.println(F(“————————————“));
  39.   // Print humidity sensor details.
  40.   dht.humidity().getSensor(&sensor);
  41.   Serial.println(F(“Humidity Sensor”));
  42.   Serial.print  (F(“Sensor Type: “)); Serial.println(sensor.name);
  43.   Serial.print  (F(“Driver Ver:  “)); Serial.println(sensor.version);
  44.   Serial.print  (F(“Unique ID:   “)); Serial.println(sensor.sensor_id);
  45.   Serial.print  (F(“Max Value:   “)); Serial.print(sensor.max_value); Serial.println(F(“%”));
  46.   Serial.print  (F(“Min Value:   “)); Serial.print(sensor.min_value); Serial.println(F(“%”));
  47.   Serial.print  (F(“Resolution:  “)); Serial.print(sensor.resolution); Serial.println(F(“%”));
  48.   Serial.println(F(“————————————“));
  49.   // Set delay between sensor readings based on sensor details.
  50.   delayMS = sensor.min_delay / 1000;
  51. }
  52. void loop() {
  53.   // Delay between measurements.
  54.   delay(delayMS);
  55.   // Get temperature event and print its value.
  56.   sensors_event_t event;
  57.   dht.temperature().getEvent(&event);
  58.   if (isnan(event.temperature)) {
  59.     Serial.println(F(“Error reading temperature!”));
  60.   }
  61.   else {
  62.     Serial.print(F(“Temperature: “));
  63.     Serial.print(event.temperature);
  64.     Serial.println(F(“°C”));
  65.   }
  66.   // Get humidity event and print its value.
  67.   dht.humidity().getEvent(&event);
  68.   if (isnan(event.relative_humidity)) {
  69.     Serial.println(F(“Error reading humidity!”));
  70.   }
  71.   else {
  72.     Serial.print(F(“Humidity: “));
  73.     Serial.print(event.relative_humidity);
  74.     Serial.println(F(“%”));
  75.   }
  76. }

・DHT11のDATA(青線)をArduinoの 7番端子 に接続したため、

14行目 #define DHTPIN 2     // Digital pin connected to the DHT sensor の 2 を 7 に

・20行目 #define DHTTYPE    DHT22     // DHT 22 (AM2302) の DHT22 を DHT11 に

書き変えて、スケッチをコンパイルする。

まとめ

  • シリアルモニタに、「Temperature:○°C」・「Humidity:○%」と改行して表示された。