ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ESPHome 控制电磁阀新手指南:继电器接线、首次烧录与自动浇水

ESPHome 控制电磁阀新手指南:继电器接线、首次烧录与自动浇水 ESPHome 控制电磁阀新手指南继电器接线、首次烧录与自动浇水【免费下载链接】esphomeESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.项目地址: https://gitcode.com/GitHub_Trending/es/esphome你家的自动浇花、燃气切断阀本质上都是一个电磁阀的通断问题。手动去拧阀门太麻烦自己写嵌入式代码又太折腾。ESPHome 正是解决这类问题的项目你只需要写一个 YAML 配置文件它就能编译出固件刷进 ESP32/ESP8266 开发板让你用 Home Assistant 或它自带的网页面板远程开关电磁阀。本文就用一块 ESP32 加一个继电器模块把一个 5V/12V 直流电磁阀接到 Home Assistant 里全程不写一行代码。一页速览材料、耗时和最终效果项目说明开发板ESP32以 NodeMCU-32S 为例ESP8266 同理继电器模块SRD-05VDC-SL-C 这类 5V 小继电器板几块钱一个电磁阀12V 或 5V 直流单阀阀体上会标电压其他杜邦线若干、与电磁阀匹配的电源适配器、一台电脑耗时熟悉流程约 1 小时第一次建议留 2 小时最终效果Home Assistant 里出现一个开关实体点一下继电器吸合、电磁阀开启再加几行配置就能实现开 10 秒自动关、漏水报警时强制关阀这类逻辑。先搞懂原理ESPHome 是怎么驱动电磁阀的电磁阀的线圈通电就开、断电就关而单片机引脚只能输出 3.3V/5V 的弱电平驱动不了继电器线圈更直接驱动不了 12V 电磁阀。所以中间要加一个继电器模块ESP32 的 GPIO 接到继电器板的 IN 脚控制吸合继电器触点COM/NO去串接电磁阀的电源回路。ESPHome 侧对应的是switch组件的gpio平台一行pin: GPIO2就声明了一个受控引脚它的底层实现在 esphome/components/gpio/switch/gpio_switch.cpp组件行为恢复模式、互锁等在 esphome/components/switch/init.py。安装 ESPHome 和烧录第一份配置在电脑上用 pip 安装命令行工具建议 Python 3.9pip install esphome装好后esphome命令可用它负责校验配置、编译固件、刷写设备一条龙。新建solenoid-valve.yaml内容如下esphome: name: solenoid-valve esp32: board: nodemcu-32s wifi: ssid: 你的WiFi名 password: 你的WiFi密码 api: ota: switch: - platform: gpio name: Water Valve pin: GPIO2 id: water_valve restore_mode: RESTORE_DEFAULT_OFF这段配置做了四件事声明 ESP32 板型、连你家 WiFi、开启 Home Assistant API 和 OTA 空中升级、用 GPIO2 创建一个名叫 Water Valve 的开关。把 WiFi 两项改成自己的restore_mode: RESTORE_DEFAULT_OFF表示掉电重启后默认关阀对水路设备来说是个安全习惯。把开发板的 USB 口连上电脑运行esphome run solenoid-valve.yaml命令会依次校验配置、编译固件、自动刷入设备全程看日志滚动即可。刷完设备会重启并连上 WiFi在 Home Assistant 里添加 ESPHome 设备输入设备提示的 IP 和密钥就能看到 Water Valve 这个开关了。此时如果继电器还没接线点开关只会看到 ESP32 的 GPIO2 电平翻转可以先用串口日志确认输出。接线图怎么看COM、NO 和共地继电器模块接线按下面的对应关系来ESP32 引脚 继电器模块 继电器负载侧 电磁阀 GPIO2 ---- IN 5V ---- VCC GND ---- GND COM ---- 电源正极 NO ---- 电磁阀正极 GND ------------------- GND电源负极、电磁阀负极三个要点负载回路走的是你的电源适配器不是 ESP32 的 5V 脚。12V 电磁阀配 12V 电源线圈电流大走 ESP32 会直接把开发板供电拉崩。电源的 GND 必须和 ESP32 的 GND 接在一起共地否则控制信号电平没有参考继电器会乱吸合或不吸合。只用 NO常开触点继电器不通电时 NO 断开、阀关通电吸合后 NO 与 COM 导通、阀开。进阶玩法定时关阀、互锁和报警切断接线完成、手动开关正常后往下加配置即可改完重新esphome run一次就生效。开阀 10 秒自动关适合浇花、冲洗这类场景script: - id: water_10s mode: restart then: - switch.turn_on: water_valve - delay: 10s - switch.turn_off: water_valvemode: restart表示重复触发时从头计时连点两次等于重新开阀 10 秒而不是叠加执行。互锁如果同一台设备上既有水阀又有气阀可以禁止两个同时开switch: - platform: gpio name: Gas Valve pin: GPIO4 id: gas_valve interlock: [water_valve] interlock_wait_time: 500msinterlock引用另一个开关的 id开启 gas_valve 时若 water_valve 还开着会等它关闭等待上限 500ms后才放行避免两个回路同时导通。报警强制关阀在阀体旁接一个常开型的泄漏/故障报警触点比如水浸传感器、压力开关把它读成二进制传感器binary_sensor: - platform: gpio name: Leak Alarm device_class: moisture pin: number: GPIO14 mode: input inverted: true on_press: - switch.turn_off: water_valveinverted: true是因为常开触点报警前是断开、报警时闭合取反后报警对应状态变为 1on_press触发时立刻关阀。device_class可以换成gas、window等Home Assistant 会据此显示正确图标。更多设备类型和动作写法见 esphome/components/binary_sensor/init.py。排坑清单点开关继电器不动作十有八九是inverted的问题。市售继电器模块的 IN 脚普遍是低电平有效拉低才吸合在 switch 里加inverted: true即可。ESP32 的 GPIO2 不推荐部分开发板上 GPIO2 上电瞬间被拉高可能出现还没连网阀就开了。换 GPIO4、GPIO5 之类普通 IO 更稳妥。12V 阀配 5V 电源阀会嗡嗡响但打不开或干脆不动作先看阀体铭牌电压再配电源。继电器咔哒但阀不开检查 NO 和 COM 是否接反、负载回路是否共地、电源功率是否够电磁阀启动电流通常是稳态的 2~3 倍。改了配置不生效ESPHome 改的是 YAML必须重新esphome run编译烧录不是保存即生效。碰 220V 阀交流高压阀请用电磁接触器或固态继电器隔离接线时断电操作本文的继电器小模块只适合低压直流场景。延伸方向把sensor组件的 ADC 平台接一个土壤湿度传感器用numeric_state自动化实现湿度低于阈值自动开阀水阀从手动变成闭环灌溉。ESPHome 还有专门的 valve 组件带开度百分比和关闭状态适合两通阀、百叶窗这类需要停在中间位置的机构可以对比 switch 的纯开关模型。在配置里加一个web_server组件不依赖 Home Assistant 也能用浏览器直接开关阀适合没有 HA 的纯 DIY 场景。熟悉单阀之后可以研究switch组件的template平台把多个 GPIO 组合成一个带逻辑的虚拟开关而不只是在硬件层互锁。【免费下载链接】esphomeESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.项目地址: https://gitcode.com/GitHub_Trending/es/esphome创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进