ESPHome 智能喂食器搭建指南:定时喂食 + 定量称重,一套能用的完整方案
2026/9/14 20:44:21 网站建设 项目流程

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 做一套智能喂食器就能彻底解决:CRON 表达式决定什么时候喂,步进电机决定喂多少,HX711 称重传感器负责核对食盆里的存量。全部逻辑写在一个 YAML 文件里,硬件总成本控制在 200 元以内。

先列清单:ESPHome 喂食器的 BOM 与引脚规划 🐾

核心是一块 ESP32 开发板加三个外设,引脚规划如下表。GPIO 可自由分配,但建议先把分配定死,再照着接线:

组件引脚作用
A4988 STEPGPIO26电机脉冲
A4988 DIRGPIO27转向
A4988 ENGPIO14使能,低电平有效
HX711 DOUTGPIO19称重数据
HX711 SCKGPIO18时钟
限位开关GPIO4送料螺杆回零检测

两个容易踩的坑:电机驱动和称重模块要分开供电,电机启动瞬间电流大,混用电源会让重量读数乱跳;所有地线不要手拉手串联,统一并接回 ESP32 的 GND。

ESPHome 基础配置:时间源、日志与首次编译 🔧

接线完成后,基础配置只需要先跑通三件事:板型、日志、时间源。其中时间源最关键——不接时间,后面所有 CRON 定时都没有依据。用 SNTP 从网络对时即可,省掉一个 RTC 模块:

esphome: name: pet-feeder logger: time: - platform: sntp id: feed_clock timezone: Asia/Shanghai

上传靠一条命令搞定,以后每次改配置都是同样的方式,不再需要动串口线:

git clone https://gitcode.com/GitHub_Trending/es/esphome esphome run feeder.yaml

ESP32 步进电机控制与 HX711 称重传感器校准步骤

步进电机部分的关键是step_distance:它定义"一步等于多少物理量",之后所有target都用同一单位表达,喂食量才可复现。

stepper: - platform: a4988 name: feed_stepper step_pin: GPIO26 dir_pin: GPIO27 enable_pin: GPIO14 step_distance: 1.0 # 一步 = 1 个单位距离 max_speed: 5.0 acceleration: 10.0

称重端才是校准的核心:HX711 输出的是 ADC 原始码,需要靠calibrate_linear过滤器把"零码"和"已知重量"两组实测值映射成克数。做法是空盘记一次原始读数,再放上 100g 砝码记一次,把两组数填进去:

sensor: - platform: hx711 name: 食盆重量 id: bowl_weight dout_pin: GPIO19 clk_pin: GPIO18 gain: 128 update_interval: 2s filters: - calibrate_linear: - 0 -> 0 # 空盘原始码 - 23000 -> 100 # 100g 砝码原始码,以实测为准

容易踩的一个坑:该芯片每 80ms 才出一次新读数,update_interval设成 1s 时数据会抖,实测 2s 起步更稳。完整实现可以看 esphome/components/hx711/。

用 CRON 表达式设计喂食计划:ESPHome 定时喂食配置 ⚙️

定时器和日程表的差别在 CRON。时间组件的触发器支持从秒到星期的六段表达式,一条规则就能描述"工作日早上七点喂,晚上再补一顿":

automation: - alias: 工作日喂食 trigger: platform: time time_id: feed_clock cron: seconds: "0" minutes: "0" hours: "7" days_of_week: "MON-FRI" then: - stepper.set_target: id: feed_stepper target: 100 # 100 个单位,实测约对应 40g 粮

设计思路一句话:触发器只管"何时",动作只管"喂多少",两者互不侵入。猫最近吃得少,只改 hours 或 target 即可,电机参数不用动。后续要加规则(空盆告警、深夜加餐)也是并列再写一条 automation,复用同一套 id。表达式的具体语法规则可参考 esphome/components/time/。

进阶玩法:远程手动喂食与 OTA 升级流程 📡

人在外面想给猫加餐,不用拔线——给配置加上web_server和一个模板按钮,设备网页里就出现"手动喂食"入口:

web_server: port: 80 button: - platform: template name: 手动喂食 on_press: - stepper.set_target: id: feed_stepper target: 50

升级侧只要保留 ota 平台:改完配置执行esphome run,新固件推上去、设备自动重启加载,全程不到一分钟。后续还可以接一路摄像头看猫的进食状态,或者加个文本传感器记录食盆余量曲线。细节见 esphome/components/web_server/ 与 esphome/components/ota/。

排错清单:喂食器不动、读数乱时先查这几处

  1. 电机上电不转:先确认 EN 没有悬空,A4988 使能低电平有效,必须在配置里明确指定 GPIO;
  2. 重量严重不准:十有八九是供电问题,电机与称重分开供电,或把gain降到 64 重新校准;
  3. 定时不触发:先核对设备当前时间,SNTP 没同步时所有 CRON 都会跑偏;
  4. 动作顺序不对:重量核对要放在delay之后,给落粮留出时间。

调试时把logger临时开到 debug 等级是最快的路:日志里先确认触发器有没有 fire,再确认动作有没有执行,两步就能把问题范围缩到最小。

更多组件用法与完整配置参考,见仓库根目录的 README 与 esphome/components/ 下的各组件源码。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询