Raspberry Pi Pico W + DHT11溫濕度量測

通常我們第一次拿到一個新的開發板,最新會想要使用就是DHT11溫濕度感測器,因為它便宜好用,而且直接使用數位接腳即可取得所需的數值。在這一篇文章中我們就來看看如何利用別人做好的現成的函式,套用在自己的 Pico W板子上。

在開始連接DHT11之前,先來看看如何使用晶片內建的溫度感測器。根據說明文件的內容,內建的溫度感測器是放在編號4的ADC上,也就是ADC(4),但是它讀出來是一個數值,我們需要把它轉換成電壓之後再換算成實際的溫度,所以讀到的數值要經過一些計算才會得到正確的晶片表面溫度。但是,是否和實際的溫度一致,還要看電壓的穩定度而定。

以下是修改自說明文件範例程式的程式碼,對於如何計算以及如何校準有興趣的同學,可以直接去參考RP2040這顆晶片的說明手冊。

from machine import ADC
import time
 
ts = ADC(4)
cfactor = 3.3 / (65535)
 
while True:
    value = ts.read_u16() * cfactor 
    temperature = 27 - (value - 0.706)/0.001721
    print(temperature)
    time.sleep(2)

以下是執行的結果:

上述的方法取得的是晶片表面的溫度,環境的溫濕度則是要靠DHT11,DHT11是數位型的溫濕度感測器共有3支接腳,如下所示:

以這個感測器為例,右側是GND接地(在此例接到實體接腳的第38腳),中間是VCC接正3.3V~5V(在此例請接到實體接腳的第36腳),左側是信號輸出線,直接接到GPIO的任一接腳。在這個例子中,我們把它接到第29腳,也就是GP22的那支接腳。由於我們是連接到麵包板上,為了日後方便連接其它的感測器,所以電源是從匯流排處拉出來。接線圖如下所示:

接線完成之後最重要的是讀取DHT11數值內容的函式。不同的裝置讀取的副程式都不同,不是每一個都可以使用。對於Pico W來說,筆者找到的是以下這個連結所提供的dht.py程式。

https://www.instructables.com/DHT11-With-Raspberry-Pi-Pico/

請進入該網頁,找到dht.py的程式碼,像是下面這個樣子:

複製裡面所有的程式碼,在自己的Thonny編輯環境中開啟一個新的程式檔案,貼上剛剛複製好的程式內容,然後選擇儲存到Pico的板子上,一樣命名為dht.py就可以了。

以下的程式即是應用上述的dht.py,每2秒偵測一次目前的溫濕度:

from machine import Pin
import time
from dht import DHT11
pin = Pin(22, Pin.OUT, Pin.PULL_UP)
sensor = DHT11(pin)
while True:
    time.sleep(2)
    try:   
        sensor.measure()
        t  = (sensor.temperature)
        h = (sensor.humidity)
        print("{}, {}%".format(t, h))
    except:
        pass

執行的過程如下所示:

One thought on “Raspberry Pi Pico W + DHT11溫濕度量測

發佈留言

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