【STM32项目开源】STM32单片机智能宠物喂养系统

目录

一、设计背景和意义

1.1设计背景:

1.2设计意义:

二、实物展示

三、硬件功能介绍

[2.1 硬件清单:](#2.1 硬件清单:)

[2.2 功能介绍:](#2.2 功能介绍:)

四、软件设计流程图

五、硬件PCB展示

六、软件主函序展示

七、单片机实物资料

[资料获取 查看主页介绍:兆龙电子单片机设计](#资料获取 查看主页介绍:兆龙电子单片机设计)


一、设计背景和意义

1.1设计背景:

在日常家庭宠物科学喂养、独居宠物无人照料监护、多宠物家庭定量投喂管理、上班族远程喂养控制及宠物店规模化喂养场景的背景下,投喂精准定量、喂养时间智能管控、宠物进食状态监测、多场景便捷适配成为宠物喂养类产品的核心需求。传统宠物喂养方式存在明显局限:一方面,高端智能宠物喂养系统(如定制化宠物健康管理中控平台、工业级精准投喂控制网关、品牌成套商用宠物喂养设备)功能虽全但成本高昂,部署复杂且需专业人员上门调试与后期维护,难以普及到普通家庭、小户型住宅、租房群体及小型宠物店等日常场景,且系统生态封闭性强,不同品牌、不同协议的喂养设备与监测终端兼容性差,无法与个人移动终端、家庭智能设备、宠物店管理平台灵活联动,更换或升级成本高,无法满足不同人群(如普通宠物主人、上班族、宠物店经营者、独居老人养宠群体)的便捷宠物喂养与健康管理需求;另一方面,普通简易宠物喂养装置(如传统手动食盆、单一功能定时投喂器、基础款大容量储粮桶)虽操作简单、价格低廉,但功能单一,仅能实现基础的食物盛放或固定时间投喂,缺乏多维度喂养状态监测、投喂量智能调节、喂养记录存储、远程投喂控制及设备故障状态提醒(如粮桶缺粮、投喂卡滞、设备断电)等功能,无法满足现代化养宠场景下对全面覆盖、智能响应、便捷高效的宠物喂养与健康管控需求。

现有关宠物喂养方案还存在功能割裂与集成度低的问题:部分高端智能宠物喂养系统虽具备多维度喂养管控与健康监测功能,但依赖复杂的软硬件架构与专属生态维护,后期使用成本高,难以覆盖预算有限的普通养宠家庭、上班族养宠群体或小型宠物店的喂养场景;而低成本宠物喂养装置又在功能完整性与智能化上存在欠缺,无法实现喂养数据与移动 APP、家庭智能终端、宠物店管理平台的实时联动,导致投喂响应延迟、定量投喂误差偏大、个性化需求(如宠物少食多餐定时投喂、远程查看进食状态、缺粮自动提醒)无法满足等问题,无法为用户科学喂养宠物(如精准把控投喂量与投喂时间)及便捷管理宠物健康(如追溯进食规律、监测异常进食状态)提供可靠支撑。基于此,本设计以 STM32 单片机为核心,融合高精度投喂控制与辅助模块(如 RTC 定时模块、重量感应模块、投喂执行模块、语音提醒模块)、LCD 显示模块、数据存储模块及蓝牙通信与异常提醒模块,构建低成本、高集成度的 STM32 单片机智能宠物喂养系统,以解决传统宠物喂养方式操作繁琐、智能化程度低、功能单一及宠物喂养管控效率低的问题。

1.2设计意义:

从使用体验与时间日程精细化管理效率角度,该系统突破了传统时间管理与显示方式的局限:一是实现了多维度时间信息呈现与全场景日程联动(如支持实时时间显示、日期节日精准呈现、星期历法自动换算、计时倒计时功能,联动蓝牙通信模块、异常声光提醒模块、日程智能播报执行模块),无需用户手动核对时间、设置简易闹钟或记录重要日程,减少时间管理的繁琐性与日程提醒的延迟性;二是配备 OLED 实时显示模块,直观呈现当前精准时间 / 日期 / 星期、节日节气提示、系统运行状态(正常 / 异常)及日程提醒类型,同时支持数据自动存储(可通过蓝牙传输至移动 APP / 个人日程管理平台 / 小型办公统筹平台),方便用户与办公管理员长期追溯历史日程记录、时间校准记录与设备运行记录,也为优化个人作息规划方案、排查设备故障隐患及办公日程高效统筹提供完整数据支撑;三是新增个性化日程预警与自动提醒执行功能,当监测到预设时间节点(如起床提醒、用药定时、办公会议、学生上课、商铺营业 / 打烊、重要纪念日),系统根据日程类型自动触发对应执行动作(同时通过声光提醒模块反馈提醒信息与系统当前工作状态,蓝牙同步推送至关联移动终端),并联动语音播报模块执行智能提醒操作(如联动 "老人用药提醒",自动播报用药时间、用药剂量、完成状态记录,同步更新日程完成台账),无需人工手动干预即可实现时间与日程的智能化精细化管控,大幅提升了时间管理的便捷性与日程统筹的高效性。

从技术实践与成本控制角度,本设计以 STM32 单片机为核心,充分利用其低功耗、高性价比的优势,搭配低成本的高精度时间采集模块及通用外围模块,在保证计时精度(核心时间参数准确率可控制在 98% 以上,日程提醒与响应时间可控制在 0.5 秒以内)的前提下,有效降低了系统整体成本,相比同功能的高端智能时间管理系统成本降低 40%-60%,更易普及到普通家庭、学生宿舍、小型办公场所、个体商铺及老人居家照料等场景。同时,系统支持模块化扩展(如后续可新增方言语音播报功能、多人个性化日程权限管理功能、远程校时与日程同步更新功能),为后续功能升级预留了空间,具备良好的灵活性与可扩展性。

**二、**实物展示

下方为实物演示视频

演示视频https://www.bilibili.com/video/BV1kPpYzuEZE/?spm_id_from=333.1387.upload.video_card.click&vd_source=2a672ca4e8794dca68cbe6d047b42ca5

下方为实物展示图片

三、硬件功能介绍

2.1 硬件清单:

  • STM32F103C8T6

  • LCD1602显示

  • HX711称重模块

  • DS1302时钟模块

  • DHT11温湿度传感器

  • ULN2003步进电机驱动

  • WIFI模块

2.2 功能介绍:

(1)DHT11 模块测温湿度,数据显在 LCD1602 屏

(2)HX711 模块测储料仓余料重量,数据显在屏

(3)DS1302 模块确保 LCD 屏显示准确年月日时分

(4)按键电路识别 4 个按键的操作指令

(5)监测喂食开关状态,状态显在 LCD 屏

(6)步进电机(配 ULN2003 驱动)执行自动投食,按按键 4 设喂食时间

(7)凭 HX711 传感器反馈,控制步进电机正反转调投食量

(8)按按键 2/3,控制步进电机(配 ULN2003 驱动)开 / 关手动投食

(9)LCD1602 屏显示时间、温湿度、食物重量、喂食状态

(10)按按键 1 设时间、按键 4 设喂食时间 / 重量,参数存好显在屏

(11)APP 同步显示温湿度、余料重量、时间、喂食状态

(12)APP 有 "手动喂食开 / 关" 按钮,点了指令控步进电机

(13)可在 APP 设单个 / 多个喂食时间,同步到 DS1302 模块执行

四、软件设计流程图

五、硬件PCB展示

六、软件主函序展示

复制代码
void  get_weight(void)				    //获得称重
{
    volatile unsigned long cur_adc_value = 0;

    cur_adc_value = ReadCount();//读取HX711的AD值

    if (cur_adc_value <= FullScale)
    {
        weight = 0;
    }
    else
    {
        cur_adc_value = cur_adc_value - FullScale;//获取净重

			  ///最终目的是把cur_adc_value最后两位取整
        if (cur_adc_value > 55)//55只是一个微动值的判定,因为HX711是一款24位高精度的AD芯片,一般很微小的值也能感应到
        {
            if (cur_adc_value % 100 >= 55)//余数大于55
            {
							   //////////把cur_adc_value值以55为基准进行取舍,假如cur_adc_value=257,则这里我们取整为300。再假如cur_adc_value=240,则我们取整200
                cur_adc_value = cur_adc_value + (100 - (cur_adc_value % 100));
            }
            else
            {
							   //////////把cur_adc_value值以55为基准进行取舍,假如cur_adc_value=89,则这里我们取整为100。再假如cur_adc_value=40,则我们取整0
                cur_adc_value = cur_adc_value - (cur_adc_value % 100);
            }
        }
        else
        {
            cur_adc_value = 0;
        }
        weight = cur_adc_value * RATIO;//乘上RATIO系数,得到正确的重量值
    }
}

 int main(void)
 {	
	u8 temperature=0;
	u8 humidity=0; 
	u8 flag1=0;

	delay_init();	    //延时函数初始化	  
	KEY_GPIO_Init();    //按键初始化
	HX711_GPIO_Init();  //hx711引脚初始化
	To_Zero();
	DS1302_Init(&SysDate);
	LCD_Init();         //屏幕初始化
	MOTOR_GPIO_Init();//步进电机初始化
	DS1302_DateRead(&SysDate);//读取时间
	delay_ms(100);
	while(DHT11_Init()==1)
	{
			LCD_Write_String(0,0,"  DHT11 Init!  ");
	}
  LCD_Write_String(0,0,"                ");
  LCD_Write_String(0,0,"W:  .   kg T:  C");//第一行显示的内容
	LCD_Write_String(0,1,"  :  :     H:  %");//第二行显示的内容
	while(1)
	{     
        if (setn==0 && chakan==0)
        {
					  DS1302_DateRead(&SysDate);//读取时间

						Display_Time();//显示时间
					  //称重,得到重量值weight,单位为g
						get_weight();
					   //显示重量值
						Display_Weight();

            DHT11_Read_Data(&temperature,&humidity);//读取温湿度
					  LCD_Write_Char(13,0,temperature/10+0x30);
						LCD_Write_Char(14,0,temperature%10+0x30);
					  LCD_Write_Char(13,1,humidity/10+0x30);
						LCD_Write_Char(14,1,humidity%10+0x30);
					if((SysDate.hour==nz_shi && SysDate.min==nz_fen && SysDate.sec==nz_miao)||
						 (SysDate.hour==nz_shi2 && SysDate.min==nz_fen2 && SysDate.sec==nz_miao2)||
						 (SysDate.hour==nz_shi3 && SysDate.min==nz_fen3 && SysDate.sec==nz_miao3)
						)
						{
								//三个喂食时间,任意一个时间到,则开启电机
								if(weight < food_weight)openFlag = 1;//开启
						}
					 if(openFlag == 1 && shoudong_guan==0)//喂食时间到,自动打开电机
					 {
							 if(weight < food_weight && flag1==0)
							 {
									 count_ss++;
									if(count_ss <= 100)MotorCW();//正转一段时间
									else {MotorStop();count_ss = 100;}//停止一段时间
							 }
							 else
							 {
									 if(flag1 == 0)
									 {
											flag1 = 1;
									 }
							 }
					 }

        }
				keyscan();//按键扫描
    }

	}

七、单片机实物资料

资料获取 查看主页介绍:兆龙电子单片机设计

相关推荐
Y1rong1 小时前
STM32之串口(三)
stm32·单片机·嵌入式硬件
Y1rong2 小时前
STM32之串口(二)
stm32·单片机·嵌入式硬件
夜月yeyue2 小时前
VFS (虚拟文件系统) 核心架构
linux·c++·单片机·嵌入式硬件·架构
Y1rong2 小时前
STM32之串口(一)
网络·stm32·嵌入式硬件
想睡觉的树2 小时前
解决keil5编译慢的问题-亲测有效-飞一般的感觉
c语言·stm32·嵌入式硬件
__万波__2 小时前
STM32L475串口打印改为阻塞式打印兼DMA, 两种打印方式实时切换
stm32·单片机·嵌入式硬件
猫猫的小茶馆2 小时前
【Linux 驱动开发】二. linux内核模块
linux·汇编·arm开发·驱动开发·stm32·嵌入式硬件·架构
开源能源管理系统2 小时前
MyEMS开源能源管理系统助力合成氨行业生产
开源·能源·能源管理系统·合成氨
風清掦2 小时前
【江科大STM32学习笔记-03】GPIO通用输入输出口
笔记·stm32·单片机·学习