【Raspberry Pi Pico】DHT11センサで気温湿度測定器を作製

Pico-dht11-topRaspberry Pi

本記事の内容

Raspberry Pi PicoにDHT11デジタル温度湿度センサを取り付けて、気温と湿度を測定してみました。

SSD1306有機ELディスプレイを用いて、測定した気温と湿度を画面表示させるコードも用意しています。

DHTセンサのおさらい

DHTセンサとは、空気中の温度と湿度を同時に測定することができる汎用デジタルセンサです。

DHT11とDHT22の二種類が広く知られていますが、違いは以下の通りです。測定範囲と精度が優れている方がDHT22で、安価な方がDHT11と理解すればいいでしょう。

基本的にDHT11の測定範囲があれば、たいていの環境では気温も湿度も測定できます。

DHT11DHT22
測定温度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
  • DHT11センサ
  • (SSD1306有機ELディスプレイ)
created by Rinker
Raspberry Pi
¥919(2024/04/15 11:03:51時点 Amazon調べ-詳細)
1 個 DHT11 デジタル温度と湿度センサー
Reland Sun

配線

DHT11とRaspberry Pi Picoは以下の通り繋ぎます。DHT11のデジタル出力ピンは、Raspberry Pi Picoの任意のGPIOピンに繋ぎ、GNDの隣のピンは今回は使用しません。

DHT11Raspberry Pi PicoSSD1306
VCC㊱3V3(OUT)VDD
OUT⑳GP15
NONE
GND㊳GNDGND
㉒GP17SCK
㉑GP16SDA

DHT11の配線を逆にすると、ショートして一瞬で焼け焦げかねないので、くれぐれも気を付けてください。

プログラムコード

dht.pyの用意

先人の知恵を拝借して、Githubよりdht.pyをいただきます。ファイル名はdht.pyで問題ありません。

ssd1306.pyの用意

こちらも同様に先人の功績を拝借して、Githubから頂きます。ファイル名はssd1306.pyで問題ありません。

dht11-calc.pyの作成

本題のコードは、How to Electronics様のサイトから引用させていただきます。I2Cのピンと、DHT11と繋いだGPIOピンの記載部分のみ書き換えています。

from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
import utime as time
from dht import DHT11, InvalidChecksum
 
i2c = I2C(0, scl=Pin(17), sda=Pin(16), freq=200000)
print("I2C Address      : "+hex(i2c.scan()[0]).upper()) 
print("I2C Configuration: "+str(i2c)) 
 
oled = SSD1306_I2C(128, 64, i2c) 
 
while True:
    time.sleep(1)
    pin = Pin(15, Pin.OUT, Pin.PULL_DOWN)
    sensor = DHT11(pin)
    t  = (sensor.temperature)
    h = (sensor.humidity)
    print("Temperature: {}".format(sensor.temperature))
    print("Humidity: {}".format(sensor.humidity))
    oled.fill(0)       
    
    oled.text("Temp: ",10,10)
    oled.text(str(sensor.temperature),50,10)
    oled.text("*C",90,10)
    
    oled.text("Humi: ",10,30)
    oled.text(str(sensor.humidity),50,30)
    oled.text("%",90,30)
    
    time.sleep(1)
    oled.show()

実行結果とまとめ

問題なくDHT11センサから取得した気温と湿度の値を、SSD1306有機ELディスプレイに表示させることができました。

DHT11センサと22センサの両方を使ってみましたが、これと言った違いは感じられませんでした。DHT11の方が安くて小さいので、案外使い勝手が良いかもしれません。

コメント