猛禽洛的程式筆記庫

[MicroPython] 在Raspberry PI PICO上使用DHT22/DHT11溫濕度感測器模組

DHT22 是一款低成本數位溫濕度感測器,使用電容式濕度感測器和熱敏電阻測量周圍空氣,並輸出數位訊號。

幾款溫濕度計的使用心得,DHT22精準度算普普,比DHT11好太多了,AHT系列20與21都不錯用,主推。

DHT22與DHT11用法與接法都一樣,但DHT11太爛了不建議用。

DHT22規格:
工作電壓:3V~5.5V
輸出型式:數位訊號
溫度測量範圍:-40℃~80℃
溫度精準度:0.5℃
濕度測量範圍:0~100%RH
濕度精準度:2%RH
尺寸:28.2mm x 13.1mm x 5.5mm
重量:6g

接線方式:

Raspberry PI PICODHT22/DHT11
電源3.3v+
任一GPIO (22)out
GND

主程式:

MicroPython韌體本身已經包含dht套件庫,所以不用另外安裝。

from machine import Pin, Timer
import dht

# 溫度感測器,這裡使用GPIO 22讀取
dht22 = dht.DHT22(Pin(22, Pin.IN))
# 定時抓溫度
th_timer = Timer()
# 抓溫度tag
tag_measure_th = False


def measure_th():
    dht22.measure()
    current_temp = dht22.temperature()
    current_humidity = dht22.humidity()
    print("溫度= " + str(current_temp) + "°C 濕度= " + str(current_humidity) + "%")


# 開始測量溫度
def start_measure_show_th(t):
    global tag_measure_th
    tag_measure_th = True


def main():
    global tag_measure_th

    # 測量溫度定時器 每3秒量測一次,此感測器不能太頻繁量測
    th_timer.init(mode=Timer.PERIODIC, period=3000, callback=start_measure_show_th)

    # 不斷檢查Tag是否被觸發,觸發後才去執行耗時處理,避免程式卡死
    while True:
        if tag_measure_th:
            measure_th()
            tag_measure_th = False


# 開始執行
main()

輸出如下:

溫度= 27.1°C 濕度= 50.2%
溫度= 27.1°C 濕度= 50.2%
溫度= 27.1°C 濕度= 50.2%
溫度= 27.1°C 濕度= 50.1%
溫度= 27.1°C 濕度= 50.2%
溫度= 27.1°C 濕度= 50.2%

-END-

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *