本記事の内容
Seeeduino xiao RP2040とDHT11/22センサを使用して、気温と湿度を測定する方法をまとめました。
前半がDHT11センサ編、後半がDHT22センサ編となっており、最後に両者の測定結果を並べて比較しています。
必要なもの
- Seeeduino xiao RP2040
- DHT11/22センサ
DHT11センサ編
配線

DHT11センサのVCCとGNDは、それぞれSeeeduino xiaoの3V3とGNDに繋ぎ、OUTを適当なGPピンと繋げます。
DHT11 | Seeeduino xiao |
VCC | 3V3 |
OUT | P0 |
NONE | |
GND | GND |
プログラムコード
まず最初に、先人の知恵を拝借して、Githubよりdht.pyをいただきます。ファイル名はdht.pyで問題ありません。
気温と湿度を測定するメインコードは以下の通りです。
from machine import Pin
from time import sleep
from dht import DHT11, InvalidChecksum
while True:
sleep(1)
pin = Pin(0, Pin.OUT, Pin.PULL_DOWN)
sensor = DHT11(pin)
print("Temperature: {}".format(sensor.temperature))
print("Humidity: {}".format(sensor.humidity))
実行結果

問題なく測定することができました。若干ですが、気温が高く表示されている気がします。。。
DHT22センサ編
配線

配線に関しては、DHT11センサの配線と大差はありません。VCCとGNDをそれぞれSeeeduino xiaoの3V3とGNDに繋ぎ、OUTを適当なGPピンと繋げます。
DHT22 | Seeeduino xiao |
VCC | 3V3 |
OUT | P0 |
GND | GND |
プログラムコード
こちらも、DHT22ライブラリをGithubから頂いてダウンロードします。いつも通り、dht22.pyをSeeeduino xiaoにアップします。
気温と湿度を測定するメインコードは以下の通りです。
from machine import Pin
from time import sleep
from dht22 import DHT22
dht22 = DHT22(Pin(0,Pin.IN,Pin.PULL_UP))
while True:
sleep(1)
T, H = dht22.read()
print("Temperature: {}".format(T))
print("Humidity: {}".format(H))
実行結果

こちらも問題なく気温と湿度が測定できました。
(まとめに代えて)DHT11とDHT22を比較してみると
せっかく手元に2種類のDHTセンサがあるので、同時に測定して気温と湿度の結果を比較してみました。

残念ながら、測定時の気温と湿度の正確な値は分からないので、どちらが正確なのかを判断することはできていません。
分かったことは、DHT11、DHT22いずれも、気温と湿度の測定に関しては十分に使えるということぐらいでしょうか。
コメント