5.13 温度・湿度センサー

DHT11は、環境測定用によく使われる温度・湿度センサーです。このデジタルセンサーは、温度と湿度の値を提供するためにマイクロコントローラと通信します。

このプロジェクトでは、DHT11センサーからのデータを読み取り、検出された温度と湿度の値を表示します。

センサーから提供されたデータを読むことにより、現在の環境の温度と湿度の値を得ることができます。これらの値は、環境のリアルタイムモニタリング、天気観測、室内の気候制御、湿度レポートなどに使用できます。

必要な部品

このプロジェクトには以下のコンポーネントが必要です。

全キットを購入することは確かに便利です。こちらがリンクです:

名前

このキットのアイテム

リンク

ESP32 Starter Kit

320+

ESP32 Starter Kit

以下のリンクから個別に購入することもできます。

コンポーネントの紹介

購入リンク

ESP32 WROOM 32E

BUY

ESP32カメラ拡張ボード

-

ブレッドボード

BUY

ジャンパーワイヤ

BUY

DHT11 湿温度センサー

BUY

利用可能なピン

こちらは、このプロジェクトのためにESP32ボードで利用可能なピンのリストです。

利用可能なピン

IO13, IO12, IO14, IO27, IO26, IO25, IO33, IO15, IO2, IO0, IO4, IO5, IO18, IO19, IO21, IO22, IO23

回路図

../../_images/circuit_5.13_dht11.png

配線図

../../_images/5.13_dht11_bb.png

コード

注釈

  • esp32-starter-kit-main\c\codes\5.13_dht11 のパスの下にある 5.13_dht11.ino ファイルを開いてください。

  • ボード(ESP32 Dev Module)と適切なポートを選択した後、 アップロード ボタンをクリックします。

  • "Unknown COMxx"が常に表示されますか?

  • ここでは DHT sensor library ライブラリが使用されています。 Library Manager からインストールできます。

    ../../_images/dht_lib.png

コードが正常にアップロードされた後、シリアルモニターには温度と湿度が連続して表示され、プログラムが安定して実行されるにつれて、これらの値はより正確になっていきます。

どのように動作するのか?

  1. DHT.h ライブラリをインクルードし、DHTセンサーとのインタラクションに必要な機能を提供します。次に、DHTセンサーのピンとタイプを設定します。

    #include "DHT.h"
    
    #define DHTPIN 14  // Set the pin connected to the DHT11 data pin
    #define DHTTYPE DHT11 // DHT 11
    
    DHT dht(DHTPIN, DHTTYPE);
    
  2. シリアル通信をボーレート115200で初期化し、DHTセンサーを初期化します。

    void setup() {
        Serial.begin(115200);
        Serial.println("DHT11 test!");
        dht.begin();
    }
    
  3. loop() 関数内で、DHT11センサーから温度と湿度の値を読み取り、それらをシリアルモニターに出力します。

    void loop() {
        // Wait a few seconds between measurements.
        delay(2000);
    
        // Reading temperature or humidity takes about 250 milliseconds!
        // Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
        float humidity = dht.readHumidity();
        // Read temperature as Celsius (the default)
        float temperture = dht.readTemperature();
    
        // Check if any reads failed and exit early (to try again).
        if (isnan(humidity) || isnan(temperture)) {
            Serial.println("Failed to read from DHT sensor!");
            return;
        }
        // Print the humidity and temperature
        Serial.print("Humidity: ");
        Serial.print(humidity);
        Serial.print(" %\t");
        Serial.print("Temperature: ");
        Serial.print(temperture);
        Serial.println(" *C");
    }
    
    • dht.readHumidity() 関数は、DHTセンサーから湿度値を読み取るために呼び出されます。

    • dht.readTemperature() 関数は、温度値を読み取るために呼び出されます。

    • isnan() 関数は、読み取り値が有効かどうかをチェックするために使用されます。湿度または温度の値がNaN(数値ではない)の場合、センサーからの読み取りが失敗したことを示し、エラーメッセージが出力されます。

さらに学ぶ

I2C LCD1602にも温度と湿度を表示できます。

注釈

  • euler-kit/arduino/5.10_thermistor_lcd のパスの下にある 5.10_thermistor_lcd.ino ファイルを開いてください。

  • ボード(ESP32 Dev Module)と適切なポートを選択した後、 アップロード ボタンをクリックします。

  • "Unknown COMxx"が常に表示されますか?

  • ここでは LiquidCrystal_I2CDHT sensor library ライブラリが使用されています。 Library Manager からインストールできます。