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