1. 项目背景与核心价值
去年帮朋友改造的简易喂食器现在成了小区里的"明星产品",每天都有邻居来打听这个会定时放粮的"铁盒子"是怎么做的。这次升级版在保留核心功能的基础上,增加了手机远程控制、余粮监测和喂食记录分析三大实用功能。整套系统硬件成本控制在200元以内,比市面同类产品便宜至少60%,特别适合有宠物又经常加班的上班族。
我选择STM32F103C8T6作为主控,这颗Cortex-M3内核的MCU性能足够应对喂食器的所有任务,而且开发资源丰富。最关键的是它的低功耗特性,配合18650电池组可以连续工作30天以上,即使突然断电也不会影响预设的喂食计划。
2. 硬件系统设计详解
2.1 核心部件选型对比
电机部分测试了三种方案:
- 普通直流电机+限位开关(成本15元,但噪音大)
- 步进电机28BYJ-48(成本22元,需要驱动板)
- 伺服电机SG90(成本9元,精度足够)
最终选择SG90方案,实测转动角度误差<2°,配合3D打印的螺旋送料机构,每次出粮量误差控制在±0.5g以内。这里有个细节:要在电机轴和送料螺杆之间加装硅胶垫片,否则高频运转时的震动噪音会让宠物受惊。
2.2 余粮检测创新方案
市面上的商用喂食器多用称重传感器,但成本太高(约80元)。我采用红外对管+编码盘的设计:
- 粮仓底部安装透光率编码盘
- 每落下1g饲料遮挡一个光栅
- STM32通过外部中断计数
实测检测误差<3%,物料成本仅6.8元。关键是要在红外接收管前端加装聚焦透镜,避免环境光干扰。代码中需要做软件去抖处理:
c复制void EXTI0_IRQHandler() {
static uint32_t last_time = 0;
if((HAL_GetTick() - last_time) > 10) { // 10ms消抖
food_count++;
}
last_time = HAL_GetTick();
__[HAL](https://taotoken.net/?utm_source=hardware)_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);
}
3. 软件系统架构设计
3.1 定时喂食逻辑实现
采用STM32的硬件RTC+定时器组合方案:
- RTC维持准确时钟(误差<2分钟/月)
- TIM2用于产生喂食脉冲信号
- 关键数据结构设计:
c复制typedef struct {
uint8_t hour; // 喂食小时
uint8_t minute; // 喂食分钟
uint8_t enable; // 是否启用
float amount; // 出粮量(g)
} FeedSchedule;
FeedSchedule schedule[4]; // 最多4个定时点
在RT-Thread操作系统上创建三个线程:
- 喂食控制线程(优先级最高)
- 网络通信线程
- 状态监测线程
3.2 手机APP通信方案
没有采用常见的WiFi模块,而是选用更稳定的4G Cat.1模组(EC200S),理由有三:
- 覆盖范围远大于WiFi
- 无需依赖家庭路由器
- 支持阿里云物联网平台直连
通信协议采用轻量级的MQTT,每个喂食器有独立Topic:
code复制pet/feed/${deviceID}/control // 控制指令
pet/feed/${deviceID}/status // 状态上报
APP端关键控制指令示例:
json复制{
"cmd": "feed_now",
"amount": 15.5,
"[token](https://taotoken.net?utm_source=hardware)": "a1b2c3d4"
}
4. 关键问题解决实录
4.1 出粮堵塞问题
初期测试时发现,螺旋送料机构在运转约500次后会出现卡死现象。通过高速摄影分析发现是粮食品质导致的:
- 油脂含量高的饲料易粘附
- 颗粒直径>8mm时容易卡住
解决方案:
- 在粮仓内壁涂覆食品级特氟龙涂层
- 增加震动电机(间断启动)
- 软件上加入堵转检测:
c复制if(motor_current > 250mA) {
HAL_GPIO_WritePin(VIB_GPIO_Port, VIB_Pin, GPIO_PIN_SET);
osDelay(300);
HAL_GPIO_WritePin(VIB_GPIO_Port, VIB_Pin, GPIO_PIN_RESET);
}
4.2 低功耗优化技巧
为延长电池续航,采取了以下措施:
- 主频降至36MHz(仍满足需求)
- 外设分时供电控制
- 网络模块心跳间隔优化至5分钟
- RTC Alarm唤醒策略
实测功耗对比:
| 模式 | 电流消耗 | 续航时间 |
|---|---|---|
| 初始方案 | 45mA | 7天 |
| 优化后 | 8.2mA | 32天 |
5. 生产组装注意事项
5.1 结构装配要点
3D打印件需要特别注意:
- 粮仓壁厚≥2mm(防宠物啃咬)
- 活动部件预留0.3mm间隙
- 使用PETG材料(比PLA更耐潮)
电机安装时要先做动平衡测试,我的土办法是:
- 用手机水平仪APP测量
- 在电机外壳贴配重胶泥
- 直到高速运转时手机显示振动<0.1G
5.2 电路安全设计
必须加入的防护电路:
- 电机反电动势吸收二极管
- 电源输入端TVS管
- 饲料检测光电隔离电路
特别提醒:所有220V转5V的电源模块必须通过CCC认证,我拆解过某宝9.9元的"爆款"模块,里面居然省掉了安规电容!
6. 功能扩展方向
现有系统预留了这些接口:
- 摄像头接口(可加装宠物行为分析)
- 语音模块插座(支持录制主人呼唤)
- 环境传感器I2C接口
最近正在试验通过分析进食时间规律来预测宠物健康状态,初步算法逻辑:
python复制def health_analyzer(feed_records):
interval = np.diff(feed_records['time'])
if np.mean(interval) > 1.5*std_interval:
return "饮食异常警告"
elif feed_records['amount'].sum() < 0.7*avg_amount:
return "食欲减退警告"
这个项目最让我意外的是,有位养了10只猫的客户把10台喂食器组成集群,通过我的开源网关程序实现了协同喂食管理。所以下次升级准备加入Mesh组网功能,看来小产品也能玩出大花样。