2023年6月15日 星期四

MicroPython 學習筆記 : DHT22 溫溼度感測器測試

二哥嵌入式課程本周要驗收實作成果, 他上周要我幫他再買兩顆 DHT22 來測試 (奧松原廠晶片, 一片 145 元), 因為他去中將電子買的 DHT22 不太穩 (一片 220 元), 那塊 STM32F429 開發板有時讀不到溫濕度資料, 我今天用 D1 mini 的 MicroPython 測試每一片都 OK, 可見應該是 Driver 的關係. 

以下測試參考 Ranerd 的這篇 :


文中使用的 DHT22 模組為四隻腳, 但現在市面上的都是 +Vcc (左), GND (右), 以及 Data (中) 三隻腳, 以前要接的電阻現在應該已經整合到模組裡面去了. 原始程式使用 GPIO14 與 DHT22 中間的 Data 腳相接, 我改為 GPIO12. 另外於 while 無窮迴圈外加一層 try except 用來捕捉 Ctrl + C 鍵盤中斷事件, 這樣程式才不會停不下來 : 

from machine import Pin
from time import sleep
import dht 

sensor = dht.DHT22(Pin(12))
try:
    while True:
      try:
        sleep(2)
        sensor.measure()
        temp = sensor.temperature()
        hum = sensor.humidity()
        temp_f = temp * (9/5) + 32.0
        print('攝氏溫度: %3.1f C' %temp)
        print('華氏溫度: %3.1f F' %temp_f)
        print('濕度: %3.1f %%' %hum)
      except OSError as e:
        print('無法讀取 DHT22 輸出')
except KeyboardInterrupt:
    pass

結果可正常讀取溫濕度值 : 




執行中按 Ctrl+C 可隨時終止執行 :




參考 : 


沒有留言 :