基于STM32的智能快递柜设计与实现【单片机毕业设计】

最近设计了一个项目基于STM32的智能快递柜的设计与实现,与大家分享一下:

一、基本介绍

项目名:快递柜
项目编号:mcuclub-dz-184
单片机类型:STM32F103C8T6
具体功能:
1、通过4个舵机模拟4个柜子的打开和关闭
2、通过DS18B20检测温度值,通过MQ-135检测气体值,当温度值或气体值大于设置最大值,进行声光报警,最大值可通过按键设置
3、通过内部RTC获取时间,可通过按键修正时间
4、通过4*4矩阵键盘,可输入存入快递柜编号、存入8位取件码、和发送的手机号,也可进行存取操作
5、通过GSM模块发送信息,当超过24h后,每天的12:00发送一次提醒信息
6、通过WIFI模块,可手机端查看快递柜的使用情况,可打开、关闭快递柜
7、通过OLED显示时间和信息

二、32实物图

单片机型号:STC89C32

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

三、原理图

软件版本:AD2013

电路连线方式:网络标号连线方式

注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

四、PCB图

由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。

两层板,上下覆铜接地。

五、系统框图

本设计以单片机为核心控制器,加上其他模块一起组成此次设计的整个系统,其中包括中控部分、输入部分和输出部分。中控部分采用了单片机控制器,其主要作用是获取输入部分的数据,经过内部处理,逻辑判断,最终控制输出部分。输入由四部分组成,第一部分是温度检测模块,通过该模块检测快递柜柜内的温度状态;第二部分是空气质量检测模块,通过该模块检测快递柜柜内有害气体值;第三部分是矩阵键盘模块,通过高门槛可以输入存入快递柜编号、存入8位取件码、和发送的手机号,也可进行存取操作;第四部分是供电模块,通过该模块可给整个系统进行供电。输出由四部分组成,第一部分是显示模块,通过该模块可以显示显示时间和信息;第二部分是舵机模块,通过4个舵机模拟4个快递柜门的打开和关闭;第三部分是声光报警模块,通过该模块进行报警提醒;第四部分GSM检测模块,通过GSM模块发送信息,当超过24h后,每天的12:00发送一次提醒信息;除此之外,WIFI模块既作为输入又作为输出,WIFI模块和手机进行连接,可以手机端查看快递柜的使用情况,也可以打开、关闭快递柜。具体系统框图如图2.1所示。

六、软件设计流程

七、部分程序展示

软件版本:keil5

逻辑程序和驱动程序分开,分布于main.c和其他.c文件

*******数据上报函数
             数据更改时,将数据发布给服务器temp_max gas_max
*****/
void Aliyun_Send_Data(void)
{
    sprintf(send_data,"{\"method\":\"thing/event/property/post\",\"id\":\"203302322\",\"params\":{\"temp_value\":%d.%d,\"gas_value\":%d,\"gas_max\":%d,\"temp_max\":%d},\"version\":\"1.0.0\"}",
                    temp_value/10,temp_value%10,gas_value,gas_max,temp_max);
    
    Aliyun_Publish(topics_post, send_data);  //添加数据,发布给服务器
    memset(send_data,' ',512);
    Delay_ms(300);
        sprintf(send_data,"{\"method\":\"thing/event/property/post\",\"id\":\"203302322\",\"params\":{\"door_1\":%d,\"door_11\":%d,\"door_2\":%d,\"door_22\":%d,\"door_3\":%d,\"door_33\":%d,\"door_4\":%d,\"door_44\":%d},\"version\":\"1.0.0\"}",
    (_Bool)express[0].door_state,(_Bool)flag_door1_state,
    (_Bool)express[1].door_state,(_Bool)flag_door2_state,
    (_Bool)express[2].door_state,(_Bool)flag_door3_state,
    (_Bool)express[3].door_state,(_Bool)flag_door4_state);
    Aliyun_Publish(topics_post, send_data);  //添加数据,发布给服务器
    memset(send_data,' ',512);
}

作者:单片机俱乐部–官方

物联沃分享整理
物联沃-IOTWORD物联网 » 基于STM32的智能快递柜设计与实现【单片机毕业设计】

发表评论