基本流程
水位传感器放在水缸内上方位置,水位到达水位传感器所在的位置时,水位传感器触发,并输出信号给到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 Pinout Reference: Which GPIO pins should you use?
https://randomnerdtutorials.com/esp32-pinout-reference-gpios/
接入继电器之后,却不能控制其闭合或者断开(水位传感器也是,单独供电时,传感器信号没能正常传入ESP32)
原因分析:
ESP32的GPIO引脚最高输出为3.3V电压,无法驱动继电器工作。继电器本质上依赖电压高低差而实现电磁的吸合以及断开
高电平--电压5v---断开
低电平---低电平触发---触发电压0-1.2v---接合
解决方案:
将继电器的VCC输入使用3.3v,不要用5v,然后正常接GPIO,此时低电平0v,高电平3.3v,压差为3.3v,可以稳定工作。
(继电器的电源及信号输入都要来自ESP32)
(水位传感器的也是如此,电源独立时,传感器信号不能正确传递)
参考:
- Esp32/Esp8266 稳定控制5v继电器
https://blog.csdn.net/weixin_44636374/article/details/136107325
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的官方固件)。
-
接线
-
固件刷入
-
USB转TTL-CH340模块(TB)
-
flash_download_tool
https://www.espressif.com.cn/sites/default/files/tools/flash_download_tool_3.9.7_1.zip -
ESP32-CAM Micropython 固件
https://github.com/lemariva/micropython-camera-driver/blob/master/firmware/micropython_camera_feeeb5ea3_esp32_idf4_4.bin -
Micropython的官方ESP32固件
https://micropython.org/download/ESP32_GENERIC/
ESP32-CAM的引脚
如果不使用SD卡时,GPIO 2、4、12、13、14 和 15可以用作普通的GPIO口
参考:
- ESP32-CAM开发板引脚与用法介绍
https://www.cnblogs.com/smqh-bokeyuan/p/17480655.html - ESP32 CAM – Pinout
https://www.studiopieters.nl/esp32-cam-pinout/
其他参考资料
- Getting Started with Thonny MicroPython (Python) IDE for ESP32 and ESP8266
https://randomnerdtutorials.com/getting-started-thonny-micropython-python-ide-esp32-esp8266/ - MicroPython: ESP32/ESP8266 Relay Module Web Server (AC Appliances)
https://randomnerdtutorials.com/micropython-relay-web-server-esp32-esp8266/