news 2026/11/6 16:09:58

花半天给猫做了个自动喂食器,我家猫终于不用饿肚子加班了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
花半天给猫做了个自动喂食器,我家猫终于不用饿肚子加班了

💡 阅读提示:本文记录我用ESP8266和一个小舵机,给猫主子DIY自动喂食器的全过程。成本极低、零基础友好,更关键的是——猫很满意。

🚨 开篇:我加班,猫也跟我一起“加班”

去年下半年,项目赶进度,我几乎天天加班到十点。

某天深夜回家,打开门,年糕(我的猫)蹲在空碗旁边,用一种“你知道我等了多久吗”的眼神看着我。然后它走到水碗边喝了一口水,又回头看看空碗,再看看我。

那一刻我挺难受的。

我也试过出门前多放点猫粮,但年糕的问题是——它会一口气吃完,然后吐。医生说“少食多餐”,但我的工作时间没法满足这个要求。

也考虑过买自动喂食器。去电商平台一看:带摄像头和Wi-Fi的,三百多块起步;不带Wi-Fi的定时款,也得一百多。而且用户评价里有人说卡粮,有人说被猫拆了,有人说断电后时间重置……

我看着手上那块吃灰的ESP8266开发板,冒出一个念头:要不,我自己做一个?

于是有了下面这个故事。

一、我要做什么样的喂食器?

先说清楚我的目标,不是什么高大上的产品,就解决三个问题:

  1. 定时出粮:每天早晚各一次,每次出一份(约15g),这样年糕就不会一次性吃撑。

  2. 手动补粮:我下班回家如果觉得它今天表现好,可以按一下按钮或者手机点一下,额外奖励一顿。

  3. 别卡粮:这个最关键,做不好的话猫会饿肚子。

至于远程视频、语音逗猫、App数据分析……这些功能固然酷,但对我来说不是必需品。先把基础功能做稳,比什么都重要。

一句话总结:一个能定时出粮、不卡粮、猫喜欢的喂食器。

二、硬件准备

我尽量用家里现成的东西,不够的再买。

组件来源价格
ESP8266 NodeMCU吃灰库存0元
SG90舵机之前做别的东西剩下的0元
5V 2A充电头+USB线旧手机充电器0元
塑料瓶(1.5L)喝完的矿泉水瓶0元
纸盒快递纸箱0元
杜邦线若干库存0元
热熔胶枪之前买的0元

是的,全部成本为0元。即使你什么都没有,买齐这些材料也花不了多少钱——ESP8266约15元,SG90舵机约5元,其他东西都能找到替代品。

我没有用3D打印机,因为不是每个人都有。我用的是纸盒+热熔胶,丑是丑了点,但管用。

三、工作原理(一句话版)

舵机上面装一个“十字形”的拨片,放在瓶口下方。

舵机转一下 → 拨片跟着转 → 猫粮从瓶口掉下来一份 → 舵机复位 → 停止出粮。

就这么简单。

四、制作过程(全记录)

4.1 粮仓:一个矿泉水瓶

把一个1.5L矿泉水瓶底部切掉,倒扣过来。瓶口朝下,作为出粮口。

为什么要用透明瓶子?因为能一眼看到还剩多少猫粮,不用每次都打开看。

4.2 出粮机构:纸板+舵机

这是最核心的部分。我做了一个简易滚筒:

  • 用硬纸板剪一个圆片,直径略大于瓶口

  • 在圆片上开一个“槽”(大概占圆片的1/4)

  • 把舵机的摇臂固定在圆片中心

  • 舵机不转的时候,圆片的实心部分堵住瓶口,猫粮掉不下来

  • 舵机转90°,槽口对准瓶口,猫粮掉下来一份

  • 舵机再转回来,又堵住了

第一次测试:失败。

纸板太软,猫粮的重量把纸板压弯了,舵机转不动。而且纸板边缘不光滑,猫粮卡在缝隙里。

第二次改进:换成塑料瓶盖+硬质塑料片。

我把一个矿泉水瓶盖切掉一半,粘在舵机摇臂上,然后在瓶盖上开槽。塑料材质更硬,猫粮不会卡。

第三次测试:成功了。

4.3 电路连接(超简单)

ESP8266引脚:

  • 舵机信号线 → D4(GPIO2)

  • 舵机VCC → 5V(Vin)

  • 舵机GND → GND

就三根线,不需要其他外设。

4.4 供电

直接插USB充电头,5V供电。舵机和ESP8266共用USB电源。

实测:SG90舵机工作在5V时,待机电流约5mA,动作时约200mA。一个普通USB充电头完全够用。

五、代码(复制即可用)

以下是Arduino代码,功能包括:

  • 定时出粮:每天7:00、12:00、19:00各出一次

  • 手动出粮:按一下ESP8266上的Flash按键(GPIO0),立刻出一份

  • 防卡粮保护:舵机每次动作后记录时间,连续动作超过5次会暂停10分钟

#include <ESP8266WiFi.h> #include <Servo.h> #include <TimeLib.h> #include <NtpClientLib.h> Servo feederServo; // WiFi配置 const char* ssid = "你的WiFi"; const char* password = "你的密码"; // 时间配置 int8_t timeZone = 8; // 北京时间 // 舵机引脚 #define SERVO_PIN 2 // D4 // 手动出粮按键(ESP8266的Flash按键) #define MANUAL_BTN 0 // D3 // 参数 int feedAngle = 90; // 每次旋转角度 int feedCount = 0; // 已出粮次数 unsigned long lastFeedTime = 0; // NTP时间同步 NTPClient ntpClient(ntpUDP, "pool.ntp.org", 60 * 60 * 8, 60000); void setup() { Serial.begin(115200); // 连接WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("WiFi Connected"); // 初始化NTP ntpClient.begin(); ntpClient.update(); // 舵机初始化 feederServo.attach(SERVO_PIN); feederServo.write(0); // 初始位置(关闭) // 按键 pinMode(MANUAL_BTN, INPUT_PULLUP); // 启动提示 Serial.println("Cat Feeder Started"); } void loop() { ntpClient.update(); time_t now = ntpClient.getEpochTime(); struct tm *tm_info = localtime(&now); int hour = tm_info->tm_hour; int minute = tm_info->tm_min; // 1. 定时出粮(7:00、12:00、19:00) if (minute == 0) { if (hour == 7 || hour == 12 || hour == 19) { if ((now - lastFeedTime) > 60) { // 防止重复触发 feed(); lastFeedTime = now; } } } // 2. 手动出粮(按Flash按键) if (digitalRead(MANUAL_BTN) == LOW) { delay(50); if (digitalRead(MANUAL_BTN) == LOW) { feed(); while (digitalRead(MANUAL_BTN) == LOW) delay(10); } } delay(1000); } void feed() { // 防卡粮保护:如果最近10分钟内出粮超过5次,暂停 if (feedCount > 5) { Serial.println("Too many feeds, wait 10 minutes"); delay(600000); // 暂停10分钟 feedCount = 0; return; } Serial.println("Feeding..."); // 舵机转90°(出粮) feederServo.write(feedAngle); delay(300); // 等待猫粮落下 // 舵机复位 feederServo.write(0); delay(300); feedCount++; Serial.print("Feed count: "); Serial.println(feedCount); }

第一次测试出粮:看到猫粮“哗啦”掉下来的时候,年糕吓了一跳,但很快跑过来吃光了。

六、调试中的问题

问题1:出粮量不稳定

第一次测试,有时出5g,有时出20g,完全看猫粮颗粒的形状和运气。

解决:在瓶口加了一个“限流片”——一块硬纸片,中间剪一个洞,洞的大小刚好让一粒猫粮通过。这样每次只有落在洞口附近的几粒会被拨出来,出粮量稳定在12-18g之间。

问题2:纸盒被猫拆了

年糕对“会出粮的盒子”产生了极大兴趣。第三天回家,发现纸盒已经被抓烂了,露出里面的舵机。

解决:换了一个塑料收纳盒(超市10块钱买的),盖子钻孔穿电源线,底部固定舵机。猫再也抓不坏了,而且防水防潮。

问题3:断电后时间重置

有一次家里跳闸,喂食器断电了。重新通电后NTP会自动同步时间,所以不需要加电池维持时钟。

七、实际使用效果

用了一个月,大致情况:

  • 定时出粮:每天3次,年糕的体重稳定在4.2kg,没有继续胖,也没有吐过。

  • 手动出粮:按键在盒子上,我回家随手按一下,就当跟它互动。

  • 卡粮次数:总共出现过2次卡粮,一次是猫粮颗粒太大(换了一款小颗粒猫粮后解决),一次是限流片移位了(用热熔胶固定后解决)。

年糕的适应过程很有意思:

  • 第1-2天:听到舵机声音就跑过来,吃得很开心

  • 第3-5天:开始守株待兔,提前坐在喂食器前面等

  • 第2周:学会了用爪子拍盒子,试图人工触发(当然没用,因为按键在内侧)

现在每天早上7点,年糕会准时蹲在喂食器前面等,比闹钟还准。

八、可以怎么升级

如果你也想做,还可以加上这些功能:

  1. 余量监测:在粮仓内壁贴一个红外对射传感器,猫粮低于某个位置时微信提醒“该加粮了”

  2. 远程手动出粮:接入Blynk或巴法云,手机上一键出粮,加班时也能远程投喂

  3. 监控摄像头:旧手机装一个IP摄像头App,看看猫有没有好好吃饭

  4. 饮食记录:每次出粮时在云端记录时间戳,形成饮食日志

九、成本与时间

项目花费
时间一个周末下午(约4小时)
金钱0元(全部用库存)
如果重新买ESP8266(15)+舵机(5)+塑料盒(10)=30元

对比成品喂食器:100-300元不等,功能更多的甚至更贵。DIY版本的满足核心需求(定时+手动出粮),而且坏了可以自己修。

十、一个观察

年糕不会说话,但它的行为告诉我它喜欢这个喂食器。

每次听到舵机转动的声音,它会竖起耳朵,小跑到喂食器前面。吃完之后会舔舔嘴,然后去窗台上晒太阳。

对我来说,每天给猫定时定量喂食,看着它健康地长肉、不吐不拉,比省下两百块钱更有意义。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/6 16:09:57

2026年Java AI编程实战:上下文锚定与PROMPT-JAVA提示工程

1. 为什么2026年还在谈“AI编程工具使用方法”&#xff1f;——一个被严重低估的实操断层很多人看到“2026年AI编程工具”这个标题&#xff0c;第一反应是&#xff1a;这不就是Copilot、Cursor、CodeWhisperer那几款老面孔吗&#xff1f;再加点Claude Code的宣传稿&#xff0c;…

作者头像 李华
网站建设 2026/11/6 16:09:58

别踩2026视频语音转文字工具常见误区 实测对比整理的新手选型经验

简短结论 当前视频语音转文字工具没有通用最优解&#xff0c;不同工具功能侧重差异较大&#xff0c;新手选型最常见的误区是盲目追求大而全或只看免费额度忽略后续需求。对自媒体、会议记录、课堂整理场景来说&#xff0c;适合核心需求的才是最高效的&#xff0c;听脑AI适合需要…

作者头像 李华
网站建设 2026/11/4 21:56:05

CTFAK 2.0:Clickteam Fusion逆向工程架构深度解析与实战指南

CTFAK 2.0&#xff1a;Clickteam Fusion逆向工程架构深度解析与实战指南 【免费下载链接】CTFAK2.0 Updated version of the Clickteam Fusion Army Knife Decompiler 项目地址: https://gitcode.com/gh_mirrors/ct/CTFAK2.0 CTFAK 2.0作为Clickteam Fusion游戏引擎的逆…

作者头像 李华
网站建设 2026/11/5 19:04:19

DPAA数据平面开发:PPAC框架核心机制与PPAM接口实战解析

1. 项目概述&#xff1a;深入PPAC框架与DPAA应用开发在嵌入式网络处理&#xff0c;尤其是高性能网关、路由器或安全设备的数据平面开发中&#xff0c;如何榨干硬件每一分性能&#xff0c;同时保证软件的灵活性与可靠性&#xff0c;是每个资深工程师面临的终极挑战。如果你正在基…

作者头像 李华