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\micropython\codes パスにある 5.13_dht11.py ファイルを開くか、コードをThonnyにコピー&ペーストします。次に、「Run Current Script」をクリックするかF5キーを押して実行します。

  • 右下隅にある「MicroPython (ESP32).COMxx」インタプリタを選択してください。

import dht
import machine
import time

# Initialize the DHT11 sensor and connect it to pin 14
sensor = dht.DHT11(machine.Pin(14))

# Loop indefinitely to continuously measure temperature and humidity
while True:
    try:
        # Measure temperature and humidity
        sensor.measure()

        # Get temperature and humidity values
        temp = sensor.temperature()
        humi = sensor.humidity()

        # Print temperature and humidity
        print("Temperature: {}, Humidity: {}".format(temp, humi))

        # Wait for 1 second between measurements
        time.sleep(1)
    except Exception as e:
        print("Error: ", e)
        time.sleep(1)

コードが実行されているとき、シェルが連続して温度と湿度を出力するのを見ることができます。プログラムが安定して実行されると、これら二つの値はより正確になっていきます。

もっと学ぶ

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

../../_images/5.13_dht11_lcd_bb.png

注釈

  • esp32-starter-kit-main\micropython\codes パスにある 5.13_dht11_lcd.py ファイルを開くか、コードをThonnyにコピー&ペーストします。次に、「Run Current Script」をクリックするかF5キーを押して実行します。

  • 右下隅にある「MicroPython (ESP32).COMxx」インタプリタを選択してください。

  • ここでは lcd1602.py というライブラリを使用する必要があります。ESP32にアップロードされているかどうかを確認してください。詳しいチュートリアルは 1.4 ライブラリのアップロード(重要) を参照してください。

import dht
import machine
import time
from lcd1602 import LCD

# Initialize the DHT11 sensor and connect it to pin 14
sensor = dht.DHT11(machine.Pin(14))

# Initialize the LCD1602 display
lcd = LCD()

# Loop to measure temperature and humidity
while True:
    try:
        # Measure temperature and humidity
        sensor.measure()

        # Get temperature and humidity values
        temp = sensor.temperature()
        humi = sensor.humidity()

        # Print temperature and humidity
        print("Temperature: {}, Humidity: {}".format(temp, humi))

        # Clear the LCD display
        lcd.clear()

        # Display temperature and humidity on the LCD1602 screen
        lcd.write(0, 0, "Temp: {}\xDFC".format(temp))
        lcd.write(0, 1, "Humi: {}%".format(humi))

        # Wait for 2 seconds before measuring again
        time.sleep(2)

    except Exception as e:
        print("Error: ", e)
        time.sleep(2)