esp32降温系统

做了一个大致的降温系统,超过28度开启风扇!

demo.py

#降温系统
from machine import I2C, Pin, Timer,PWM
from ssd1306 import SSD1306_I2C
import onewire, ds18x20

#风扇设置
pwm = PWM(Pin(12),freq=10000,duty=512)#设置pwm
pin_dir = Pin(14,Pin.OUT,value = 1)#设置正转

# 显示屏设置
# 初始化I2C通信,sda为数据线,连接到GPIO 23,scl为时钟线,连接到GPIO 19
i2c = I2C(sda=Pin(23), scl=Pin(19))
# 初始化SSD1306 OLED显示屏,尺寸为128x64像素,使用之前初始化的I2C对象,并设置I2C地址为0x3c
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)
 
# 单总线温度传感器设置
# 使用Y12引脚(GPIO 18)创建单总线对象,用于与DS18x20温度传感器通信
ow = onewire.OneWire(Pin(18))
# 创建DS18x20对象,用于读取温度数据
ds = ds18x20.DS18X20(ow)
 
# 扫描总线上的设备地址
# 扫描并获取连接到单总线上的DS18x20传感器的ROM地址列表
rom = ds.scan()
 
# 定义RUN函数,该函数将作为定时器的回调函数
def RUN(t):
    
    # 触发温度转换
    ds.convert_temp()
    # 读取第一个(或唯一一个)传感器的温度值
    temp = ds.read_temp(rom[0])
    #判断是否超过指定温度,这里以28度为例
    if temp >= 28:
        pwm.duty(1000*1023//100)
    else:
        pwm.duty(0*1023//100)
    # 清空OLED显示屏
    oled.fill(0)
    # 在OLED显示屏上显示文本"Temperature"
    oled.text("Temperature", 0, 0)
    
    # 在OLED显示屏上显示温度值,保留两位小数
    oled.text("{:.2f} C".format(temp), 0, 32)
    # 更新OLED显示屏以显示新内容
    oled.show()
    
def main():
    # 初始化定时器
    # 创建一个定时器对象,不指定初始值(-1)
    time0 = Timer(-1)
    # 初始化定时器,设置周期为1000毫秒(1秒),模式为周期性(PERIODIC),并指定回调函数RUN
    time0.init(period=1000, mode=Timer.PERIODIC, callback=RUN)
 


main.py

from demo import main

if __name__ == "__main__":
    main()

电路自行搭建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值