用ESP32(ESP32-CAM)(Micropython)、水位传感器、继电器、水泵 做根据水位自动加水的设备时遇到的问题记录

基本流程#

水位传感器放在水缸内上方位置,水位到达水位传感器所在的位置时,水位传感器触发,并输出信号给到ESP32(ESP32CAM)。然后ESP32(ESP32CAM)控制继电器闭合,水泵启动并工作60S。之后还是根据传感器信号,决定继电器是闭合还是断开,一直循环下去。

main.py#

点击查看 main.py
from machine import Pin
from time import sleep

# 水位传感器
sensor = Pin(26, Pin.IN)
# 继电器
relay = Pin(18, Pin.OUT)

# 断开继电器
relay.value(1)
sensorValue = sensor.value()

while True:
    if sensor.value() != sensorValue:
        sensorValue = sensor.value()
        print("Current sensor value is " + str(sensorValue))

        if sensorValue == 0:
            relay.value(0)
            print("继电器闭合")
            print("sleeping ...")
            sleep(60)
        else:
            relay.value(1)
            print("继电器断开")

过程中遇到的问题和记录#

ESP32刷入Micropython固件

直接用thonny写入Micropython官方的ESP32固件即可

Which GPIO Pins should I use ?
接入继电器之后,却不能控制其闭合或者断开(水位传感器也是,单独供电时,传感器信号没能正常传入ESP32)

原因分析:
ESP32的GPIO引脚最高输出为3.3V电压,无法驱动继电器工作。继电器本质上依赖电压高低差而实现电磁的吸合以及断开

高电平--电压5v---断开

低电平---低电平触发---触发电压0-1.2v---接合

解决方案:
将继电器的VCC输入使用3.3v,不要用5v,然后正常接GPIO,此时低电平0v,高电平3.3v,压差为3.3v,可以稳定工作。

(继电器的电源及信号输入都要来自ESP32)
(水位传感器的也是如此,电源独立时,传感器信号不能正确传递)

参考:

ESP32-CAM 刷入 Micropython 固件

使用 USB转TTL-CH340 连接 ESP32-CAM,用flash_download_tool,把micropython 固件写入 0x1000。模式选DIO,波特率可能需要改成921600,如果默认的115200不成功的话。点击下载之后,如果进度条一直不动,则按一下ESP32-CAM上的RST按钮。
另外,最开始直接用thonny刷入ESP32-CAM的固件,没能成功(ESP32可以直接用thonny刷入Micropython的官方固件)。

ESP32-CAM的引脚#

如果不使用SD卡时,GPIO 2、4、12、13、14 和 15可以用作普通的GPIO口

参考:

其他参考资料#

posted @   asashadow  阅读(402)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示