Raspberry Pico RP2040 + MicroPython + TMP102
TI TMP102溫度感測器雖然有點年紀了, 但是幾年前我買了一個由sparkfun製作的模組, 這期間也使用過其他廠商的產品, 例如ASAIR AM2320, DHT11, TMP36, Bosch BME280。用起來, TMP102算是很好用的, 雖然只有單一的溫度感測功能, 但他很穩定, 使用的人也多, 很容易找到資源。
今天只想簡單的把微控制器接上TMP102, 讀一下溫度, 特別是冬天想做個麵包, 溫度是很重要的控制因素, 太冷的話, 發酵不起來的。
接線方法如下圖, 就2個模塊: Pico 和 TMP102。他們之間使用I2C溝通, 也就是實體線路SDA, SCL二條線, SDA我使用藍色的線, SCL我用紅色的線。不要忘記, 電路元件是要供電才會動的, 所以還要再接上GND, VCC。
用照片看不清楚的話, 我把Pico的Pinout圖放在下面, 我把使用到腳位打勾, 共4個Pin: 38 GND, 36 3V3(OUT), 22 GP17 (I2C0 SCL), 21 GP16 (I2C0 SDA)。各位可以用來和照片相互對照。其中39 VSYS (當接USB供電時, 此腳位是5V), 其實是用來輸入電源供電給Pico的, 這裡要改用36 3V3(OUT)比較適合。
目前和MicroPython最匹配的軟體開發環境應該是Thonny, https://thonny.org/ 下載安裝後, 開啟Thonny, 在他的功能表Tools -- Options..., 切換到Interpreter頁面, 如下圖, 可以看到可以選擇到Pico這塊開發板, 在右下角的藍色字(Install or update firmware)按下去後, 依其說明就可以幫你的Pico安裝最新的MicroPython了。
建議裝好後, 先試一下, 是不是可以驅動Pico板子上的LED, 程式很簡單, 如下:
from machine import Pin
led = Pin(25, Pin.OUT)
led.toggle()
沒問題後, 我們來看TMP102的驅動, 他的操作方式也不複雜, 主要就是讀取幾個暫存器, 詳見其datasheet: https://www.ti.com/lit/ds/symlink/tmp102.pdf?ts=1673313827211&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTMP102%253Futm_source%253Dgoogle%2526utm_medium%253Dcpc%2526utm_campaign%253Dasc-null-null-GPN_EN-cpc-pf-google-kr%2526utm_content%253DTMP102%2526ds_k%253DTMP102%2526DCM%253Dyes%2526gclid%253DEAIaIQobChMIsbz22Ou7_AIV0NKWCh05mQ2sEAAYASAAEgIn-fD_BwE%2526gclsrc%253Daw.ds
好累! 可以不用讀嗎? 當然可以, 其實有人已經讀完, 還幫你把驅動都寫好了。khoulihan/micropython-tmp102: https://github.com/khoulihan/micropython-tmp102 就是一個。我們就用他的驅動吧! 同樣先下載, 解壓縮後, 會看到一個tmp102目錄, 其下有數個.py的檔案, 大家先把這個目錄和其下的檔案都先搬到Pico去吧! 搬完之後, 用Thonny先檢查一下, 應該會出現如下圖的模樣 (紅筆圈起來的部份)。
最後一步, 輸入程式:
然後執行:from tmp102 import Tmp102
i2c = machine.I2C(0, scl=machine.Pin(17), sda=machine.Pin(16))
sensor = Tmp102(i2c, 0x48)
print(sensor.temperature)
留言