基于STM32的远程宠物自动投喂系统

远程宠物自动投喂系统

绪论

随着工作节奏加快与跨城出行增多,宠物在家的无人照护问题日益凸显。一次出差几天,主人最关心的是宠物能否按时按量进食、饮水是否充足、活动区域是否异常。本设计构建一套远程宠物自动投喂系统,将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每秒检查当前时间是否命中。

系统实现与测试

调试步骤

  1. 称重校准:使用100g砝码测定校准系数。
  2. 舵机校准:实测0~180度对应出粮挡板开闭角度。
  3. 语音测试:分别在安静、嘈杂环境下测试LU-ASR01识别率。
  4. 远程控制:在4G和Wi-Fi混合网络下测试App与本地通信稳定性。

测试结果

  • 称重误差±2g,长期稳定性良好。
  • 出粮到位率>98%,余粮检测触发报警准确。
  • LU-ASR01识别率约95%(5米安静环境)。
  • App端视频延迟约1.5秒,连续运行12小时稳定。
  • 断网重连后能自动同步喂食计划,时间误差<2s。

总结

本设计围绕远程宠物自动投喂这一典型场景,将STM32与多种传感器、舵机、Wi-Fi和视频模块结合,形成了一个完整的无人照护原型。经过多轮测试,系统在称重精度、出粮控制、语音交互与远程监控方面均达到了设计预期。该方案可以推广到鱼缸喂食、鸟巢补食等自动化养护场景,未来增加活动量分析后还可接入健康预警与推荐算法。

资料内容完整工程资料(原理图、PCB、代码、元件清单)

资料获取方式

相关推荐
数据智研1 小时前
【数据分享】300个城市-5G试点城市DID数据(2014-2025)
大数据·运维·人工智能·信息可视化·数据分析
一水鉴天1 小时前
词、术语、概念:从特征集收束到统一拓扑变换的升格与降格模型 20260915(豆包)
开发语言·人工智能
honsor1 小时前
工业级网口温湿度变送器 ModbusTCP 机房动环环境监测终端
运维·网络·人工智能·物联网·安全·云计算·智能温湿度监测系统
benbenAItalk1 小时前
真人克隆数字人的素材与成品视频生成:还原度和批量稳定性怎么控?
人工智能·科技·音视频
nanawinona1 小时前
搜索“2026年量化开发”时,先看规则是否足够清楚
人工智能·python
johnsong1 小时前
GPT-6 Astra 的能力数字与对齐声明:哪些能信
人工智能·语言模型
qq_214782611 小时前
再见Visio,再见draw.io,又一个画图Skill
人工智能·机器学习·draw.io
倔强的石头1061 小时前
【深度学习】词嵌入技术_从Word2Vec到现代Embedding
人工智能·深度学习·机器学习