【Raspberry Pi Pico】DHT22センサで温度・湿度測定

Pico-dht22-result2 Raspberry Pi

本記事の内容

Raspberry Pi PicoとDHT22センサを使用して、MicroPythonで温度と湿度を計測してみました。

後半では、SSD1306有機ELディスプレイと組み合わせて、取得した温度と湿度をリアルタイムで確認できる装置を作製しています。

DHTセンサとは?

DHTセンサとは、空気中の温度と湿度を同時に測定することができる汎用デジタルセンサの一つです。当ブログではI2C通信のBMPセンサを何度か使用してきましたが、DHTセンサはI2CでもSPIでもなく、独自の通信規格となっています

DHTセンサには、DHT11とDHT22の二種類がありますが、違いは以下の表の通りです。測定範囲と精度が優れている方がDHT22と理解すればいいでしょう。

DHT11DHT22
測定温度0~50°C(±2°C)-40~80°C(±0.5°C)
測定湿度20~80%(±5%)0~100%(±2-5%)
サンプリング時間1秒2秒
値段310円/個~620円/個~
uxcell DHT22温湿度センサー DC 3V-5.5V 長距離信号伝送 デジタル 固定穴径2.9mm

必要なもの

  • Raspberry Pi Pico
  • DHT22センサ
  • (SSD1306有機ELディスプレイ)

DHT22センサで温度と湿度を測定するだけであれば、Raspberry Pi Picoとセンサだけで十分です。有機ELディスプレイは、測定値をディスプレイ表示させる場合の追加開発です。

created by Rinker
Raspberry Pi
¥970 (2024/07/24 10:34:11時点 Amazon調べ-詳細)

配線

Raspberry Pi PicoとDHT22センサは以下の通りに接続します。DHT22センサのoutは、Raspberry Pi PicoのGPピンであれば、どこでも問題ありません。

DHT22Raspberry Pi Pico
㊱3V3(OUT)
out㉑GP16
㊳GND

プログラムコード

まずは、DHT22ライブラリをGithubから頂いてダウンロードします。いつも通り、DHT22.pyをRaspberry Pi Picoにアップします。

あとは以下のコードを用意して、実行させるだけです。

from machine import Pin
from DHT22 import DHT22
import time

dht22 = DHT22(Pin(16,Pin.IN,Pin.PULL_UP))

while True:
    T, H = dht22.read()
    now = time.localtime()
    
    print(now)
    if T is None:
        print("T=----\xdfC H=----}%")
    else:
        print("T={:3.1f}\xdfC H={:3.1f}%".format(T,H))
    time.sleep_ms(500)

実行結果

初回起動時はサンプリング時間の都合上(?)、数秒の間は表示されないかもしれませんが、無事に温度と湿度を取得できました。

追加開発:測定値をリアルタイムでディスプレイ表示

SSD1306有機ELディスプレイを用いた配線とプログラムコードは、他の記事にも載せているので割愛します。

リアルタイムで測定した温度と湿度を表示させると、以下のようになります。

まとめ

Raspberry Pi PicoでDHT22センサを使用する場合は、DHTライブラリのアップロードが必要になります。

SSD1306有機ELディスプレイと組み合わせることで、取得した温度と湿度はリアルタイムで表示する「温度湿度計」を作製できました。

コメント