目录
[2.1 硬件清单:](#2.1 硬件清单:)
[2.2 功能介绍:](#2.2 功能介绍:)
[资料获取 查看主页介绍:兆龙电子单片机设计](#资料获取 查看主页介绍:兆龙电子单片机设计)
一、设计背景和意义
1.1设计背景:
在日常家庭宠物全方位照料、独居宠物无人监护、多宠物家庭精细化管理、上班族远程养宠管控及宠物店规模化宠护场景的背景下,喂养精准定量、环境智能调控、健康状态监测、多场景便捷管控成为智能宠物管家类产品的核心需求。传统宠物照料方式存在明显局限:一方面,高端智能宠物管理系统(如定制化宠物健康中控平台、工业级宠护管控网关、品牌成套商用宠物照料设备)功能虽全但成本高昂,部署复杂且需专业人员上门调试与后期维护,难以普及到普通家庭、小户型住宅、租房群体及小型宠物店等日常场景,且系统生态封闭性强,不同品牌、不同协议的宠护设备与监测终端兼容性差,无法与个人移动终端、家庭智能设备、机智云物联网平台灵活联动,更换或升级成本高,无法满足不同人群(如普通宠物主人、上班族、宠物店经营者、独居老人养宠群体)的便捷宠护与健康管理需求;另一方面,普通简易宠物照料装置(如传统手动食盆、单一功能定时投喂器、基础款宠物温湿度计)虽操作简单、价格低廉,但功能单一,仅能实现基础的喂食或环境参数监测,缺乏多维度宠物状态监测、喂养环境智能调节、宠护记录存储、远程养宠控制及设备故障状态提醒(如粮桶缺粮、温湿度传感器失灵、投喂机构卡滞)等功能,无法满足现代化养宠场景下对全面覆盖、智能响应、便捷高效的宠物照料与健康管控需求。
现有关宠物管家管控方案还存在功能割裂与集成度低的问题:部分高端智能宠物管理系统虽具备多维度宠护管控与健康联动功能,但依赖复杂的软硬件架构与专属生态维护,后期使用成本高,难以覆盖预算有限的普通养宠家庭、上班族养宠群体或小型宠物店的照料场景;而低成本宠物照料装置又在功能完整性与智能化上存在欠缺,无法实现宠护数据与管家控制终端、移动 APP、机智云物联网平台的实时联动,导致宠护响应延迟、定量投喂误差偏大、个性化需求(如宠物少食多餐定时投喂、独居宠物环境恒温调控、远程查看宠物活动状态)无法满足等问题,无法为用户科学照料宠物(如精准把控投喂量与生活环境)及便捷管理宠物健康(如追溯进食规律、监测异常活动状态)提供可靠支撑。基于此,本设计以 STM32 单片机为核心,融合高精度宠护采集与辅助模块(如重量感应投喂模块、温湿度调节模块、宠物活动监测模块、语音互动模块)、LCD 显示模块、数据存储模块及基于机智云的物联网通信与异常提醒模块,构建低成本、高集成度的 STM32 单片机智能宠物管家系统 - 机智云版,以解决传统宠物照料方式操作繁琐、智能化程度低、功能单一及宠物管家管控效率低的问题。
1.2设计意义:
从使用体验与智能宠物管家精细化管控效率角度,该系统突破了传统宠物照料方式的局限:一是实现了多维度宠物状态监测与全场景宠护联动(如支持宠物进食量实时采集、居住环境温湿度精准调控、宠物活动状态监测、定时定量投喂控制,联动机智云物联网通信模块、异常声光提醒模块、宠物管家智能执行模块),无需用户手动投喂、频繁核对宠物状态或记录宠护设备运行情况,减少宠物照料的繁琐性与宠护管控的延迟性;二是配备 OLED 实时显示模块,直观呈现当前宠物剩余粮量 / 居住环境温湿度 / 投喂次数、系统运行状态(正常 / 异常)及提醒类型,同时支持数据自动存储(可通过机智云平台传输至移动 APP / 个人养宠管理平台 / 宠物店宠护管控平台),方便用户与宠物店管理员长期追溯宠物进食、环境变化等历史数据、设备运行记录,也为优化宠物照料方案、排查设备故障隐患及多宠物规模化管控提供完整数据支撑;三是新增个性化宠护预警与自动响应功能,当监测到宠护异常状态(如粮桶缺粮、环境温湿度超标、宠物长时间无活动、投喂机构卡滞),系统根据状态类型自动触发对应执行动作(同时通过声光提醒模块反馈预警 / 执行信息与设备当前工作状态,机智云同步推送至关联移动终端),并联动管家执行模块完成智能操作(如联动 "环境高温预警",自动开启宠物区通风设备、调节恒温垫温度、记录异常时间与环境参数,同步更新宠护台账),无需人工现场干预即可实现智能宠物管家的精细化管控,大幅提升了宠物照料的便捷性与宠物健康管理的高效性。
从技术实践与成本控制角度,本设计以 STM32 单片机为核心,充分利用其低功耗、高性价比的优势,搭配低成本的高精度宠护监测模块及通用外围模块,在保证宠护管控精度(核心参数监测准确率可控制在 98% 以上,投喂 / 环境调节与预警响应时间可控制在 0.5 秒以内)的前提下,有效降低了系统整体成本,相比同功能的高端智能宠物管理系统成本降低 40%-60%,更易普及到普通家庭、租房群体、小型宠物店、上班族养宠家庭及独居老人养宠场景等场景。同时,系统支持模块化扩展(如后续可新增多宠物个性化照料权限管理功能、基于机智云的远程手动投喂与环境参数设置功能、宠物健康数据统计分析功能),为后续功能升级预留了空间,具备良好的灵活性与可扩展性。
**二、**实物展示
下方为实物演示视频
下方为实物展示图片

三、硬件功能介绍
2.1 硬件清单:
-
STM32F103C8T6
-
OLED显示
-
水位传感器
-
HX711称重传感器
-
声光报警
-
DHT11温湿度传感器
-
继电器控制电路
-
水泵
-
DS1302时钟模块
-
语音识别模块
-
红外对射模块
-
ULN2003步进电机驱动模块
-
WIFI模块
2.2 功能介绍:
(1)核心主控:采用 STM32 单片机作为主控芯片,确保系统稳定运行和高效的数据处理
(2)信息显示:配备显示屏,实时展示当前时间、环境温湿度以及食物的实时重量
(3)精准喂食:通过传感器精确测量食物重量,依据设定条件精准投放食物,并在达到指定重量时自动停止
(4)灵活设置:用户可自由调节食物的投喂时间和投喂重量,满足宠物不同的饮食需求
(5)手动操作:设有按键,支持手动控制喂食,方便特殊情况下灵活干预
(6)自动加水:具备水位识别功能,当水位低于设定值时,自动进行加水操作
(7)语音提醒:每天可设置定点语音播报,按时提醒宠物进食
(8)双模式运行:支持自动和手动两种操作模式,用户可根据实际情况灵活切换
(9) 手机 APP 控制:通过WIFI APP 实时查看喂食重量和环境温湿度数据,还能对定时进行设置以及获取手机时间进行校准,实现远程手动喂食
四、软件设计流程图

五、硬件PCB展示

六、软件主函序展示
int main(void)
{
DelayInit();//系统延时函数初始化
DelayMs(1000);
uart_init(9600);//串口以初始化 波特率设置为9600
ESP8266_Init(); //WIFI模块初始化
Key_Init();//按键引脚初始化
motor_io_Init();//步进电机控制脚初始化
DHT11_Init();
TIM2_Int_Init(10000,3600);//输出话定时器 这边用到定时器2作为0.5秒钟中断发生源
TIM_Cmd(TIM2, ENABLE);//开启定时器2
DS1302_init(0x23,0x02,0x18,0x14,0x30,0x30);//时钟模块初始化
//I2C_Configuration();//开启IIC功能
music_play1();
OLED_Init();//OLED屏幕初始化
OLED_CLS();//清屏
Init_HX711pin();
Get_Maopi();
mod = 0;//开机显示开机界面
bluemod=0;
Readflash(set_code,0,20); //读取内部保存数据
DelayMs(10);
if(set_code[19] != 66)//对比内部数据是不是以及被重新覆盖 是的话载入初始化数据
{
OLED_ShowStr(0,0,"===NO FLASH===",2);
Writeflash(0,begin_code,0,20);//写入初始化数据
DelayMs(500);
Readflash(set_code,0,20);//读取写写入后的数据
sprintf(str,"Init System [%2d]",set_code[19]);//显示验证数据
OLED_ShowStr(0,4,(unsigned char *)str,2);
DelayMs(1500);
OLED_CLS();//清屏
}
while (1)
{
if(mod == 0)//待机模式下
{
Get_Weight();
DS1302_Readtime(); //获取当前日期/时间
}
DHT11_Read_Data();
display();//显示程序
testdata=0;
esp8266_play();
key();//按键程序
if(run_mod == 0) run();//自由在自动模式下才检测时间
}
}
//=============================================================================
//文件名称:Key_Init
//功能概要:GPIO初始化
//参数说明:无
//函数返回:无
//=============================================================================
void Key_Init(void) //按键引脚定义
{
//将按键接口设置为上拉电阻输入因为我们使用低电平信号触发
GPIO_InitTypeDef gpio_initstruct;
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//按键引脚定义
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA , ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
gpio_initstruct.GPIO_Mode = GPIO_Mode_IPU;
gpio_initstruct.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_0;
gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &gpio_initstruct);
//红外传感器引脚定位
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA , ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
gpio_initstruct.GPIO_Mode = GPIO_Mode_IPU;
gpio_initstruct.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12;
gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &gpio_initstruct);
//LED继电器引脚定义
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA , ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
gpio_initstruct.GPIO_Mode = GPIO_Mode_Out_PP;
gpio_initstruct.GPIO_Pin = GPIO_Pin_8;
gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &gpio_initstruct);
jdq_io = 0;
//蜂鸣器引脚定义
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB , ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
gpio_initstruct.GPIO_Mode = GPIO_Mode_Out_PP;
gpio_initstruct.GPIO_Pin = GPIO_Pin_15;
gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &gpio_initstruct);
beep_io = 0;
}
七、单片机实物资料
