top of page

STEM|用Raspberry Pi Pico 搭建測温器

製作一個使用Raspberry Pi Pico和熱敏電阻來測量溫度並在屏幕上顯示的線路項目,需要一些基本的硬件和軟件準備。以下是所需步驟的詳細說明:

Raspberry Pi Pico Pins

所需硬件


1. **Raspberry Pi Pico**

2. **熱敏電阻(NTC或PTC)**

3. **電阻(通常10kΩ,用於與熱敏電阻形成分壓電路)**

4. **OLED顯示屏(如SSD1306)**

5. **面包板和跳線**

6. **電源(如USB線)





線路連接


熱敏電阻分壓電路

1. 將熱敏電阻的一端連接到3.3V電源。

2. 將電阻的一端連接到GND。

3. 將熱敏電阻和電阻的另一端連接在一起,並連接到一個Pico的ADC引腳上(例如GP26)。


OLED顯示屏連接

1. 將OLED顯示屏的VCC連接到Pico的3.3V。

2. 將OLED顯示屏的GND連接到Pico的GND。

3. 將OLED顯示屏的SDA連接到Pico的SDA(GP4)。

4. 將OLED顯示屏的SCL連接到Pico的SCL(GP5)。


電路圖


3.3V

|

|-------------+

| |

Thermistor |

| |

+---+----+

|

GP26

|

10kΩ

|

GND


OLED Display

VCC -> 3.3V

GND -> GND

SDA -> GP4 (SDA)

SCL -> GP5 (SCL)



編寫軟件


我們將使用MicroPython來編寫Pico的程序,讀取熱敏電阻的值並在OLED顯示屏上顯示溫度。


安裝MicroPython固件


1. 下載MicroPython固件(`.uf2`文件)並將其燒錄到Pico。

2. 使用Thonny IDE或其他MicroPython編輯器進行編程。


安裝所需庫


在Thonny IDE中,可以使用以下命令安裝所需的庫:


import sys

import machine

import ssd1306


from machine import Pin, ADC, I2C

from ssd1306 import SSD1306_I2C


初始化I2C接口

i2c = I2C(0, scl=Pin(5), sda=Pin(4))


初始化OLED顯示屏

oled_width = 128

oled_height = 64

oled = SSD1306_I2C(oled_width, oled_height, i2c)


初始化熱敏電阻連接的ADC

thermistor = ADC(Pin(26))


def read_temperature():

# 讀取ADC值並計算電壓

adc_value = thermistor.read_u16()

voltage = adc_value * 3.3 / 65535

# 使用熱敏電阻公式計算溫度(需要根據具體熱敏電阻調整公式)

# 這裡以簡單線性近似計算為例

# 溫度轉換公式(假設10kΩ NTC熱敏電阻)

resistance = 10000 / (3.3 / voltage - 1)

temperature_c = 1 / (1 / 298.15 + 1 / 3950 * math.log(resistance / 10000)) - 273.15


return temperature_c


def main():

while True:

temperature = read_temperature()

oled.fill(0)

oled.text('Temperature:', 0, 0)

oled.text('{:.2f} C'.format(temperature), 0, 10)

oled.show()

time.sleep(1)


if __name__ == '__main__':

main()




代碼解釋


1. **I2C和OLED初始化**:設置I2C接口並初始化OLED顯示屏。

2. **熱敏電阻讀取**:從ADC讀取電壓值,然後使用公式計算溫度。這裡使用了簡單的線性近似,可以根據具體的熱敏電阻特性曲線進行更精確的計算。

3. **顯示溫度**:將讀取的溫度值顯示在OLED屏幕上,並每隔一秒更新一次。


這樣,您就完成了一個基於Raspberry Pi Pico的簡單溫度測量系統,並可以在OLED屏幕上實時顯示溫度數據。

Comments


bottom of page