楼主: cgs2018
111 0

[经济学教育] 【单片机毕业设计】【dz-855】喵非喵猫粮投喂器的设计与实现 [推广有奖]

  • 0关注
  • 0粉丝

准贵宾(月)

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
1000 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2018-9-20
最后登录
2018-9-20

楼主
cgs2018 发表于 2025-11-28 11:28:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

一、项目概述

项目名称:喵非喵猫粮投喂器的设计与实现

项目编号:dz-855

核心控制器:STM32F103C8T6 单片机

本系统是一款基于单片机的智能宠物喂食设备,具备多种智能化功能,具体如下:

  • 集成时钟模块,可设定定时投喂时间;当到达指定时间时,自动执行5秒投喂操作,并通过语音提示“过来吃饭了”;
  • 搭载称重传感器,实时监测猫粮剩余量;当余量低于预设阈值时,手机端将接收到弹窗及震动提醒;
  • 配备湿度检测单元,用于监控猫粮环境湿度;若湿度超过上限,系统启动通风机制,同时向手机发送报警信息;
  • 内置摄像头模块,支持远程实时查看猫咪状态;
  • 采用红外感应技术,当检测到猫在投喂区域停留超过30秒,自动触发一次投喂;
  • 配置OLED显示屏,用于本地显示重量、温湿度、时间以及投喂和通风状态;
  • 设有独立按键,可用于界面切换、参数设置及手动控制投喂与通风功能;
  • 通过WiFi模块实现数据上传与远程交互,用户可在手机端设置各项阈值并远程操控投喂与通风。

二、系统架构设计

本设计以STM32F103C8T6为核心主控芯片,构建了一个集感知、处理与执行于一体的智能控制系统。整体结构划分为三大模块:输入模块、中控模块与输出模块。

中控模块:由STM32F103C8T6单片机构成,负责接收各输入信号,进行逻辑判断与处理,并协调控制输出设备运行。

输入模块包含以下七个部分:

  1. 称重模块:采集当前猫粮容器内的食物重量;
  2. 时钟模块:提供精确的时间信息,支撑定时任务的实现;
  3. 湿度检测模块:监测储粮区空气湿度,防止粮食受潮;
  4. 红外避障模块:感知是否有猫靠近投喂位置;
  5. 摄像头模块:实现对猫咪活动区域的实时图像采集;
  6. 独立按键模块:支持用户进行界面导航、参数调整及手动控制指令输入;
  7. 供电电路:为整个系统提供稳定电源支持。

输出模块主要包括三个部分:

  1. 显示单元:OLED屏幕显示当前重量、温湿度、时间、设备工作状态(如投喂/通风开关)等信息;
  2. 继电器控制模块:使用两个继电器分别控制投喂电机和通风风扇的启停;
  3. 语音播报模块:在特定事件发生时(如定时投喂开始),播放提示音“过来吃饭了”。

通信扩展模块(WiFi):兼具输入与输出双重功能。一方面接收来自手机端的配置指令(如设定时间、阈值、手动控制命令);另一方面将系统采集的数据上传至移动端,实现远程监控与交互。

三、硬件实物展示

主控芯片型号:STM32F103C8T6

PCB板特征:绿色双层板,厚度为1.2mm,上下层均覆铜并接地,提升抗干扰能力;

元器件封装:主要采用插针式元件,部分降压芯片使用贴片封装;

供电接口:采用TYPE-C接口,便于连接与供电。

四、电路原理图说明

设计软件:Altium Designer 2013(AD2013)版本

连线方式:采用网络标号方式进行电气连接,提高图纸可读性与布线效率;

注意事项:所提供的原理图为各功能模块的外部引脚连接图,并未展示模块内部详细电路结构。

五、PCB布局图说明

PCB图由原理图导入生成,大部分元器件封装由设计者自行绘制,不对外提供独立封装库文件,仅提供完整连接的源工程文件;

PCB为双层结构,顶层与底层均进行覆铜处理并接地,增强系统稳定性;

板上设有项目编号标识,位于单片机底座下方,安装完成后被芯片遮挡,外部不可见。

六、程序代码展示

开发环境:Keil uVision5(Keil5)

软件架构采用模块化设计思想,将逻辑控制代码与硬件驱动代码分离:

  • main.c 文件:包含主程序逻辑,负责系统初始化、任务调度与状态管理;
  • 其他 .c 文件:存放各外设模块的驱动程序,如LCD驱动、WiFi通信、传感器读取等。
/**********************************
函数名:处理函数
传参值:无
返回值:无
**********************************/
void Manage_Function(void)
{
	if(display_num == 0)										//测量界面
	{
		if((ds1302_buf[4] == time_hour_1 && ds1302_buf[5] == time_min_1 && ds1302_buf[6] == 0 && flag_time_1 == 1) ||
			 (ds1302_buf[4] == time_hour_2 && ds1302_buf[5] == time_min_2 && ds1302_buf[6] == 0 && flag_time_2 == 1) ||
			 (ds1302_buf[4] == time_hour_3 && ds1302_buf[5] == time_min_3 && ds1302_buf[6] == 0 && flag_time_3 == 1))	  //达到定时时间
		{
			flag_tw = 1;
			if(flag_bb == 0)
			{
				Huart2_Send_Str("过来吃饭了");
				flag_bb = 1;
			}
		}	

		if(weight_value < weight_min)					//当重量小于最小值重量标志位为打开弹窗
		{
			flag_zl = 1;
		}
		else																	//否则关闭弹窗
		{
			flag_zl = 0;
		}

		if(humi_value > humi_max)							//湿度大于最大值打开通风和弹窗
		{
			RELAY_TF = 1;
			
			humi_tc = 1;
			flag_tf = 0;
		}
		else																	//否则关闭通风和弹窗
		{
			humi_tc = 0;
			if(flag_tf == 0)
			{
				RELAY_TF = 0;
			}
		}
		
		if(BZ == 0)														//当避障检测30S打开投喂
		{
			flag_begin_30s = 1;
			if(flag_finish_30s == 1)
			{
				flag_tw = 1;
			}
		}
		else																//否则关闭投喂
		{
			flag_begin_30s = 0;
			flag_finish_30s = 0;
		}
	}
	else																		//设置界面
	{
		flag_bb = 0;
		flag_tw = 0;
		RELAY_TW = 0;
		RELAY_TF = 0;
	}
	
	if(flag_tw == 1)												//当投喂标志位为1
	{
		RELAY_TW = 1;

		flag_begin_5s_tw = 1;									//五秒计时打开
		if(flag_finish_5s_tw == 1)						//当五秒到达标志位为1
		{
			flag_tw = 0;
		}
	}
	else																		//否则关闭
	{
		RELAY_TW = 0;
		flag_begin_5s_tw = 0;
		flag_finish_5s_tw = 0;
	}	

	
	if(flag_finish_5s == 1)									//5秒上传一次数据
  {
    flag_begin_5s = 0;
    Aliyun_Send_Data();
    flag_begin_5s = 1;
  }
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:毕业设计 单片机 function Display finish

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2026-1-8 05:31