本記事の内容
Raspberry Pi PicoとDHT22センサを使用して、MicroPythonで温度と湿度を計測してみました。
後半では、SSD1306有機ELディスプレイと組み合わせて、取得した温度と湿度をリアルタイムで確認できる装置を作製しています。
DHTセンサとは?
DHTセンサとは、空気中の温度と湿度を同時に測定することができる汎用デジタルセンサの一つです。当ブログではI2C通信のBMPセンサを何度か使用してきましたが、DHTセンサはI2CでもSPIでもなく、独自の通信規格となっています。
DHTセンサには、DHT11とDHT22の二種類がありますが、違いは以下の表の通りです。測定範囲と精度が優れている方がDHT22と理解すればいいでしょう。
| DHT11 | DHT22 | |
| 測定温度 | 0~50°C(±2°C) | -40~80°C(±0.5°C) |
| 測定湿度 | 20~80%(±5%) | 0~100%(±2-5%) |
| サンプリング時間 | 1秒 | 2秒 |
| 値段 | 310円/個~ | 620円/個~ |
必要なもの
- Raspberry Pi Pico
- DHT22センサ
- (SSD1306有機ELディスプレイ)
DHT22センサで温度と湿度を測定するだけであれば、Raspberry Pi Picoとセンサだけで十分です。有機ELディスプレイは、測定値をディスプレイ表示させる場合の追加開発です。
配線


Raspberry Pi PicoとDHT22センサは以下の通りに接続します。DHT22センサのoutは、Raspberry Pi PicoのGPピンであれば、どこでも問題ありません。
| DHT22 | Raspberry 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ディスプレイと組み合わせることで、取得した温度と湿度はリアルタイムで表示する「温度湿度計」を作製できました。





コメント