注釈

こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。

参加する理由は?

  • エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。

  • 学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。

  • 独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。

  • 特別割引:最新製品の独占割引をお楽しみください。

  • 祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。

👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!

5.13 温度・湿度センサー

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

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

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

必要な部品

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

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

名前

このキットのアイテム

リンク

ESP32 Starter Kit

320+

ESP32 Starter Kit

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

コンポーネントの紹介

購入リンク

ESP32 WROOM 32E

BUY

ESP32カメラ拡張ボード

BUY

ブレッドボード

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

シリアル通信のボーレートを115200に設定することを忘れないでください。

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

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

  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 からインストールできます。