【STM32项目】智能快递柜
目录
系统功能
实物图片
原理图和PCB
软件设计
项目链接
系统功能
主控采用STM32F03C8T6。
采用ESP8266-12F作为WIFI模块连接云平台,实现远程开柜。
通过GSM模块(SIM900A)自动发送取件提醒短信至用户手机。
采用四个舵机模拟4个快递柜门开/关。
采用矩阵键盘实现密码开柜。
通过DS18B20采集温度。
通过MQ-135检测气体浓度。
当温度和气体浓度超限触发声光报警。
实物图片
原理图和PCB
硬件系统框图如下:
系统硬件原理图如下:
系统PCB效果图如下:
软件设计
系统的主流程图如下图所示。在主程序中:首先对各个模块进行初始化,随后进入while主循环,在主循环中,首先进入第一个函数按键函数,该函数主要分为两部分,第一部分为调用按键扫描函数获取按键键值,第二部分通过键值进行相应的处理操作,包括切换界面、设置阈值等;紧接着进入第二个函数监测函数,该函数主要通过调用相应的驱动函数获取时间、气体值、温度值,并通过GSM模块发送短信,通过WIFI模块可以手机端查看快递柜的使用情况,用户也可以通过手机端发送指令,设备根据用户发送的指令执行对应的处理;紧接着进入第三个函数显示函数,该函数显示监测的温度值、气体值以及最大值;最后进入第四个函数处理函数,该函数主要判断当前温度、MQ-135气体值是否在设置的阈值之内,当温度不在设置的范围内,进行声光报警;当MQ-135气体值值大于设置最大值,进行声光报警。
部分主程序:
/********************************** 函数声明 **********************************/ void Key_function(void); //按键函数 void Monitor_function(void); //监测函数 void Display_function(void); //显示函数 void Manage_function(void); //处理函数 void Aliyun_Send_Data(void); //数据上报函数 void Aliyun_Send_Test(void); /**** ******* 主函数 *****/ int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //配置中断优先分组 Delay_Init(); //延时初始化 Gpio_Init(); //IO初始化 Key_Init(); //按键初始化 Oled_Init(); //OLED初始化 Oled_Clear_All(); //清屏 Adc_Init(); //ADC初始化 DS18B20_Init(); //DS18B20温度传感器初始化 Usart1_Init(9600); //串口1初始化 Usart2_Init(115200); //串口2初始化 //Usart3_Init(115200); //串口3初始化 TIM2_Init(9,719); //定时器初始化 Oled_ShowString(1,7,"RTC"); //RTC实时时钟初始化 Oled_ShowCHinese(2,2,"初始化中"); while(RTC_Init()); Oled_Clear_All(); Oled_ShowString(1,6,"WIFI "); Oled_ShowCHinese(2, 2, "初始化中"); ESP8266_Init(); //初始化ESP8266 while(Aliyun_DevLink()) //接入阿里云 Delay_ms(500); Aliyun_Subscribe(topics_set, 1); //订阅主题 Delay_ms(500); Aliyun_Send_Data(); //数据上报初始状态 Oled_Clear_All(); //清屏 while(1) { Key_function(); //按键函数 Monitor_function(); //监测函数 Display_function(); //显示函数 Manage_function(); //处理函数 time_num++; //计时变量+1 if(time_num % 10 == 0) LED_SYS = ~LED_SYS; if(time_num >= 5000) { time_num = 0; } } }项目链接
链接: https://pan.baidu.com/s/1fm6bRnC0yKNQKzYt15ejXw?pwd=gapa
提取码:gapa
