Raspberry Pico + LM35類比式溫度感測IC

如果我們只是想要量測溫度,並沒有量測濕度的需求,那麼使用LM35這顆類比式IC會是比較好的選擇,因為它的溫度輸出是類比信號,直接以電壓的方式把溫度呈現輸出接腳,對於可以具有ADC類比輸入的Pico來說,讀取溫度數值可以立即取得,非常迅速,在讀取速度上比DHT11快多了。

常見的LM35是以電晶體的型式包裝,看起來像是下面這個樣子(在接腳的上方會有LM35的字樣,不過因為拍照設備及環境的關係,在下圖中看不太出來):

它的3支接腳中,左側是Vcc,在這裡我們把它接上來自於Pico板子上的3.3V電源,右側的接腳則是接地,直接把它接到板子上的GND。中間的是電壓信號輸出,把它接到Pico上的ADC0~ADC2任一個皆可。在這個例子中,我們把它接到ADC1,也就是實體接腳的第32腳。

以下是每隔0.2秒在Shell中顯示目前溫度的程式碼:

from machine import ADC
import time

temp_sensor = ADC(1)

while True:
    val = temp_sensor.read_u16()
    temp = (val/65536) * 3.3 * 100
    print(temp)
    time.sleep(0.2)

以下是在Shell中輸出的結果截圖:

結合之前的SSD1306微型顯示器的成果,我們可以利用以下的程式,把目前的溫度顯示在SSD1306顯示器上:

from machine import ADC, Pin, I2C
import time
import ssd1306

i2c = I2C(0, sda=Pin(16), scl=Pin(17))
disp = ssd1306.SSD1306_I2C(128, 64, i2c)
temp_sensor = ADC(1)

while True:
    val = temp_sensor.read_u16()
    temp = round((val/65536) * 3.3 * 100, 2)
    disp.fill(0)
    disp.text('NKUST CCET', 0, 0)
    disp.text('Min-Huang Ho', 0, 8)
    disp.text("Temp:{}C".format(temp), 0, 30)
    disp.show()
    time.sleep(1)

此程式的執行畫面如下:

如果你使用的是Pico W的話,也可以透過MQTT把溫度資料傳送出去喔。

發佈留言

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