- 远程宠物自动投喂系统
远程宠物自动投喂系统
绪论
随着工作节奏加快与跨城出行增多,宠物在家的无人照护问题日益凸显。一次出差几天,主人最关心的是宠物能否按时按量进食、饮水是否充足、活动区域是否异常。本设计构建一套远程宠物自动投喂系统,将STM32主控、温湿度、称重、液位、视频监测与Wi-Fi通信组合成一个完整方案,搭配手机App实现远程喂食与状态查看,并通过语音模块补充本地交互,作为低成本家庭宠物自动照护的参考实现。
系统方案设计
需求分析
- 主人外出时按计划自动出粮。
- 食盒余量低于阈值时报警。
- 饮水瓶余量低时提醒加水。
- 主人手机端实时查看温湿度、宠物活动视频。
- 现场可用语音与按键操作。
系统总体方案
系统由STM32F103C8T6主控、DHT22温湿度传感器、称重传感器(HX711)、液位传感器、舵机驱动出粮机构、ESP32-CAM视频模块、ESP8266-01S Wi-Fi模块、LU-ASR01语音识别模块、OLED12864显示模块、按键输入构成。STM32通过I2C、SPI、UART与各模块通信。
主要模块选型
| 模块 | 方案对比 | 本设计选择 |
|---|---|---|
| 主控 | STM32F103C8T6 / ESP32 | STM32F103C8T6,与传感器接口成熟 |
| 温湿度 | DHT11 / DHT22 | DHT22,精度更高 |
| 称重 | HX711+称重盘 | HX711+10kg称重传感器 |
| 液位 | 浮球开关 / 电容式 | 电容式液位,连续输出 |
| 出粮 | 舵机+旋转挡板 | 舵机SG90,便宜易用 |
| 视频 | OV2640模组 / USB摄像头 | ESP32-CAM,集成Wi-Fi+摄像头 |
| 通信 | ESP8266 / 蓝牙 | ESP8266-01S,体积小 |
| 语音 | LD3320 / LU-ASR01 | LU-ASR01,离线识别 |
硬件设计
主控与称重
主控沿用STM32F103C8T6最小系统。HX711通过两根IO线(PD_SCK、DOUT)与单片机通信,使用5kg量程称重传感器安装在出粮漏斗下方。
温湿度与液位
DHT22单总线接到PA0,电容式液位传感器AO接PA1(ADC),量程对应水箱高度。舵机控制信号接到PB0。
视频与通信
ESP32-CAM独立运行,与主控通过串口握手应答。主控通过ESP8266接入家庭Wi-Fi并连接云平台。
语音与显示
LU-ASR01通过UART3接收识别结果,主控根据命令切换模式;OLED12864使用I2C显示当前模式、出粮量、剩余水量、温湿度。
系统接线总表
| 序号 | 单片机引脚 | 外设/功能 |
|---|---|---|
| 1 | PA0 | DHT22单总线 |
| 2 | PA1 | 液位传感器AO |
| 3 | PA2/PA3/PA4 | HX711-DOUT/SCK/GND |
| 4 | PB0 | 舵机PWM |
| 5 | PB1 | 蜂鸣器 |
| 6 | PB6/PB7 | I2C(含OLED) |
| 7 | PA9/PA10 | ESP8266串口 |
| 8 | PB10/PB11 | LU-ASR01语音模块串口 |
软件设计
主程序流程
主程序周期性调度称重、温湿度、液位采样,并根据当前模式触发出粮;Wi-Fi模块接收云端指令后修改喂食计划。下表给出定时器与任务调度表。
int main(void)
{
SystemInit();
DHT22_Init();
HX711_Init();
ADC1_Init();
Servo_Init();
OLED_Init();
USART1_Init(115200); // ESP8266
USART3_Init(9600); // LU-ASR01
Buzzer_Init();
Schedule_Init(&plan);
while (1) {
float t = DHT22_ReadTemp();
float h = DHT22_ReadHumidity();
float weight = HX711_ReadWeight();
uint16_t lvl = ADC_ReadAvg(8);
Schedule_Run(&plan, &feed_ctx);
if (weight < plan.food_threshold) {
Buzzer_On();
ESP8266_Alert("food low");
}
if (lvl < plan.water_threshold) {
Buzzer_On();
ESP8266_Alert("water low");
}
OLED_Update(t, h, weight, lvl, plan);
ESP8266_SendStatus(t, h, weight, lvl, plan);
delay_ms(500);
}
}
喂食执行
Servo_SetAngle(0)关闭挡板,0.5s后Servo_SetAngle(45)打开挡板维持1.5s放粮,HX711读数下降约8g,误差控制±2g。称重阈值校准后即可长时间稳定。
语音与远程交互
LU-ASR01预先录入"投喂""停止投喂""查看状态"等命令。主控解析命令并切换模式;云端App可下发:"投喂1次""修改计划""请求视频"。ESP32-CAM定时拍摄图片上传云端。
计划与状态上报
喂食计划用结构体存储:
typedef struct {
uint8_t hour, minute;
uint16_t food_g; // 本次出粮克数
} FeedPlanItem;
每天可定义最多4次计划,主程序tick每秒检查当前时间是否命中。
系统实现与测试
调试步骤
- 称重校准:使用100g砝码测定校准系数。
- 舵机校准:实测0~180度对应出粮挡板开闭角度。
- 语音测试:分别在安静、嘈杂环境下测试LU-ASR01识别率。
- 远程控制:在4G和Wi-Fi混合网络下测试App与本地通信稳定性。
测试结果
- 称重误差±2g,长期稳定性良好。
- 出粮到位率>98%,余粮检测触发报警准确。
- LU-ASR01识别率约95%(5米安静环境)。
- App端视频延迟约1.5秒,连续运行12小时稳定。
- 断网重连后能自动同步喂食计划,时间误差<2s。
总结
本设计围绕远程宠物自动投喂这一典型场景,将STM32与多种传感器、舵机、Wi-Fi和视频模块结合,形成了一个完整的无人照护原型。经过多轮测试,系统在称重精度、出粮控制、语音交互与远程监控方面均达到了设计预期。该方案可以推广到鱼缸喂食、鸟巢补食等自动化养护场景,未来增加活动量分析后还可接入健康预警与推荐算法。
资料内容完整工程资料(原理图、PCB、代码、元件清单)

资料获取方式
