回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

Beetle RP2350进阶研究——温度检测 中等

头像 创客维克多 2025.06.04 30 0

继续研究,这次终于可以测试温湿度了。但是这里我只需要温度就行了,因为天气热了就自动打开风扇降温。

但是继电器模块用RP2350带不动,所以用了板载Led灯和屏幕显示的Fan ON和Fan OFF来代替。目前气温十29°C,显示Fan OFF,Led灯也是灭的。吹一下气,温度就超过了30,屏幕显示Fan ON,Led灯也亮了。说明式样成功了。

需要注意的是,我用的是SH1106屏幕,需要安装依赖库才能在ide里导入。导入成功后,出现了一个奇怪的现象,内容是倒过来显示的,需要运行一下正常显示的程序后再运行测温程序,就可以正常显示了。

步骤1 需要运行正常显示的SH1106屏幕程序

代码
from machine import Pin, SoftI2C
import sh1106,dht,time,machine
 
i2c = SoftI2C(scl=Pin(5), sda=Pin(4))
oled = sh1106.SH1106_I2C(128, 64, i2c)
d = dht.DHT11(Pin(27))

oled.write_cmd(0xA1)
oled.write_cmd(0xC8)
oled.text("Oled Test",30,30)
oled.show()

步骤2 运行测温程序

代码
from machine import Pin, I2C
import dht
import sh1106
import time

dht_pin = Pin(27, Pin.IN)
sensor = dht.DHT11(dht_pin)
fan=Pin(26,Pin.OUT)
led=Pin(25,Pin.OUT)

i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=40000)
oled = sh1106.SH1106_I2C(128, 64, i2c)

while True:
    try:
        sensor.measure()
        temp = sensor.temperature()
        humi = sensor.humidity()
        
        oled.fill(0)
        oled.text('Temp: {}C'.format(temp), 5, 10)
        oled.text('Humi: {}%'.format(humi), 5, 20)
        oled.show()
        
    except OSError as e:
        print('Failed to read sensor.')
    
    if temp>=30:
        fan.on()
        led.on()
        oled.text('Fan ON',5,30)
        oled.show()
    else:
        fan.off()
        led.off()
        oled.text('Fan OFF',5,30)
        oled.show()
    time.sleep(2)


评论

user-avatar