1、前言
这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉小洪学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,小洪学长分享优质毕业设计项目,今天要分享的是基于STM32单片机宠物喂食器设计 嵌入式自动喂食宠物屋系统。设计通过单片机实现,主要功能有自动喂食系统、自动喂水系统、温度调节系统,该装置利用传感器采集食物重量、水温水位、电动机喂食开关、水泵出水开关等信息,这些信号经过单片机处理后从而产生相应的模拟量输出。自动喂食系统,将圆形的转盘分为不同的区域(该区域可以根据存人食物的种类进行整),利用电机带动转盘上的盛装盒该系统工作过程如下通过压力传感器检测当前食物重量,通过LCD液晶 显示当
前时间、温湿度和当前食物重量、采用按键进行设置多个投喂时间和投喂的粮食重量。当时间到达投喂时间,并且粮食剩余量小于设置的粮食重量,电机会正转,模拟进行投食,重量达到设置标准之后,电机反转,模拟停止投喂。或者预先设定时间,转盘可以按照设定的时间旋转,从而实现- -天多食的喂食功能。也可让宠物自己按键进行投食。设定不同的模式:主人在家时,主人可以手动确定不同的时间喂食的食品和选择食品的类;主人不在家时,主人可以提前加入食物,设定固定的时间喂食宠物,也可以根据宠物生长需求填换不同的粮食。设计不同的食物存储空间该存储空间可以存储宠物- -定天数内需要食用的食物,且保持食物的新鲜食物的出口可以调整,适用于不同形状和大小的食物.自动喂水系统饮水加热装置可以预先设置想要的水温,狗和猫咪喝水的温度在20摄氏度左右比较合适,通过温度传感器监测水温,并且温度上升到设定值后,机器进入待机状态,自动进入保温模式。此外可以增加童锁功能,防止宠物不小心触碰到。以及断电保护功能,当饮水机在加热过程中由于意外断电也会停止工作。废水清理通过时钟设定时间,-天更换一次饮水, 通过内置水泵,排空旧水,将新水通过过滤器过滤后输送到饮水机,从而实现饮水安全。同时设置单独按钮,当主人发现饮水有所污染,可以手动更换饮水。温度调节系统宠物房的温度控制- -般都是通过温度传感器来探测室内的温度,再把信号传输到控制系统,通过传感器测量出的温度和预设的温度比较,将采集到的温度信息通过LED液晶显示屏进行显示,并根据实际温度的变化来实现各种颜色的灯的开、关。如果温度过高,则打开风扇降温,如果温度过低,则启动加热元件加热。可以设置不同的颜色,以满足不同宠物的需要。如果想让整个宠物房的温度更舒适,可以在每个房间的门上设置出风口。当温度处于0~10°C时,LED1亮,表示给宠物通风频率为六小时- -次;当温度处于10 ~20°CLED2亮,表示给宠物通风频率为五小时一-次温度处于20 ~ 30°C时,LED3亮,表示给宠物频率为四小时一次;当温度处于30°C以上时,给宠物通风频率为三小时一次,不同的频段。
2、简介
设计通过单片机实现,主要功能有自动喂食系统、自动喂水系统、温度调节系统,该装置利
用传感器采集食物重量、水温水位、电动机喂食开关、水泵出水开关等信息,这些信号经过
单片机处理后从而产生相应的模拟量输出。
3、组成
本设计由STM32F103C8T6单片机最小系统+TFT1.44显示电路+超神波模块+温湿度模块+重力传感器+继电器+温度模块+时钟模块+舵机+水泵电路+风扇电路+按键+电源电路组成。
4、实现效果
整体展示
哔哩哔哩视频链接:
https://www.bilibili.com/video/BV1gN4y1S7Gp/?spm_id_from=333.1387.list.card_archive.click
5、设计原理
5.1STM32F103C8T6简介
- STM32系列处理器是意法半导体ST公司生产的一种基于ARM 7架构的32位、支持实时仿真和跟踪的微控制器。选择此款控制芯片是因为本系统设计并非追求成本的最低或更小的功耗,而是在实现本设计功能的前提下能够提供更丰富的接口和功能以便于设计实验系统各实验项目所需的外围扩展电路。此款控制芯片在完成单片机课程的学习后上手较为容易,在医疗器械中应用广泛,具有很好的学习、实验研究价值。
- 一、STM32的主要优点:
- (1)使用ARM最新的、先进架构的Cortex-M3内核
- (2) 优异的实时性能
- (3) 杰出的功耗控制
- (4) 出众及创新的外设
- (5) 最大程度的集成整合
- (6) 易于开发,可使产品快速将进入市场
- 二、STM32——最佳的平台选项
- 对于使用同一平台进行多个项目开发而言,STM32是最
- 佳的选择:
- (1) 从仅需少量的存储空间和管脚应用到需要更多的存储空间和管脚的应用
- (2) 从苛求性能的应用到电池供电的应用
- (3) 从简单而成本敏感的应用到高端应用
- (4) 全系列脚对脚、外设及软件的高度兼容性,给您带来全方位的灵活性。您可以在不必修改您原始框架及软件的条件下,将您的应用升级到需要更多存储空间或精简到使用更少存储空间/ 或改用不同的封装的规格。
- STM32F103C8T6单片机核心板接口电路图如下图所示。
STM32单片机核心板接口原理图
6、部分核心代码
#include "stm32f10x.h" #include "delay.h" #include "usart.h" #include "MENU/menu.h" #include "GPIO/gpio.h" #include "MYDATA/mydata.h" #include "pwm.h" #include "DHT11/dht11.h" #include "DS18B20/ds18b20.h" #include "HCSR/hcsr.h" #include "TFT.h" #include "timer.h" #include "DS1302/ds1302.h" #include "HX711/HX711.h" /****************洪核单片机工作室******************* *** 洪核单片机 *** 项目:STM32自动喂食宠物屋系统 *** BILIBILI:洪核单片机 *** 小红书:洪核单片机 *** 授权IP:洪核单片机 *** 版本:V01.01 *** MCU:STM32F103C8T6 ******************洪核单片机***********************/ uint8_t tempbuc = 50; uint16_t titemp = 0; uint16_t t_min = 18; uint16_t t_max = 32; uint16_t w_yz = 1000; uint16_t s_yz = 100; float csb = 0; float rongqishen = 250; uint16_t JULI = 0; uint8_t year = 0; uint8_t month = 0; uint8_t day = 0; uint8_t time = 0; uint8_t minute = 0; uint8_t second = 0; uint8_t week = 0; u8 set_time_flag=0; uint8_t setyear = 0; uint8_t setmonth = 0; uint8_t setday = 0; uint8_t settime = 0; uint8_t setminute = 0; uint8_t setsecond = 0; int main(void) { delay_init(); //延时函数初始化 TIM3_Int_Init(499,7199);//50ms InitClock(); ReadDS1302Clock(TM); DS18B20_Init(); GP_IOInit(); TFT_Init();//TFT TFT_Clear(BLACK); TFT_PutString(5,0,"READY..... ",RED,BLACK); hcsr_Init();// PWM_Init(); delay_ms(100); Init_HX711pin(); //HX711 Get_Maopi(); delay_ms(100); DHT11_Init(); delay_ms(1000); while(1) { //获取按键值 key_scan(); //进入菜单界面显示处理数据 GetKeylnput(&Keystatus); //获取传感器数据 SensorDataGet(); delay_ms(100); } }