【单片机毕业设计】【mcuclub-dz-046】基于STM32的智能行李箱的设计与实现

本文主要是介绍【单片机毕业设计】【mcuclub-dz-046】基于STM32的智能行李箱的设计与实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

一、基本介绍

项目名:基于单片机的行李箱的设计
项目编号:mcuclub-dz-046
单片机:STM32F103C8T6
功能简介:
1、通过HX711可测量行李箱重量,并通过WIFI发送到手机APP中显示
2、通过GPS可获取行李箱经纬度,手机APP可一键获取
3、通过手机APP可一键声光报警,查看行李箱位置
4、可进行指纹开锁或手机APP一键开锁(继电器模拟),手机APP中有添加指纹和删除指纹按键

二、32实物图

单片机型号:STM32F103C8T6

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

供电接口:TYPE-C

三、原理图

软件版本:AD2013

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

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

 四、PCB图

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

两层板,上下覆铜接地。

 五、系统框图

基于STM32单片机的行李箱,按照输入方式大概可以分为输入、中控和输出三部分,中控通过STM32单片机对输入的数据进行处理,控制输出;输出包括四部分,第一部分是称重模块,通过该模块,可以对当前行李箱重量进行检测;第二部分是GPS定位模块,通过该模块,检测当前行李箱的位置;第三部分是指纹模块,用户可以通过该模块进行开关密码需;第四部分是供电模块,通过该模块,给整个系统进行供电;输出由两部分组成,第一部分是声光报警模块,通过该模块,用户手机进行控制,寻找行李箱的具体位置;第二部分是继电器控制电磁锁,通过该部分,用户可以控制密码箱的开关;除此之外,还有WiFi连接手机模块,用户可以远程查看当前行李箱的位置及其远程控制添加或者删除指纹,系统框图如图2-1所示。

六、软件设计流程

系统的主流程图如图4-2所示。在主程序中,需要对使用的模块进行初始化处理,然后进入第一个函数检测函数,该函数主要通过调用称重模块和指纹相应的驱动函数获取测量值,并通过4G模块将监测的数据传输到手机端,用户也可以通过手机端发送指令,设备根据用户发送的指令执行对应的处理;紧接着进入第二个函数处理函数,指纹触发,比对指纹模式,搜索成功,开锁,搜索失败,红灯亮,添加指纹模式,指纹添加成功,蜂鸣器响一声,添加失败,红灯亮,指纹库已满,红灯亮,删除指纹模式,删除成功,蜂鸣器响一声,删除失败,红灯亮,读取失败,红灯亮,接收到手机端下发的声光报警指令,进行声光报警,2s,发送数据。

 七、部分程序展示

软件版本:keil5

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

*******处理函数
*****/
void Manage_function(void)
{uint8_t i, k;if(FINGERPRINT == 1)																	//指纹触发{switch(flag_srarch_fingerprint)											//根据标志位实现功能{case 1:																						//比对指纹模式if(FPM10A_Find_Fingerprint() != FPM10A_Fail)		//搜索成功,开锁{SUO = 1;while(FINGERPRINT == 1);}else																						//搜索失败,红灯亮{												LED = 0;Delay_ms (500);										while(FINGERPRINT == 1);LED = 1;				}break;case 2:																						//添加指纹模式f_id = FPM10A_Find_Fingerprint();								//搜索指纹if(f_id == FPM10A_Fail)													//指纹不存在,开始录入{if(FPM10A_Read_Index_Table() == FPM10A_OK)		//查找指纹模块索引{//一共256个指纹(只查找了一页)for(i=0; i<32; i++){for(k=0; k<8; k++){if((FPM10A_RECEICE_BUFFER[10+i] & (0x01<<k)) == 0)	//查找到可用ID{f_id = i*8+k;break;}}if(f_id >= 0)break;}if(f_id >= 0){if(FPM10A_Add_Fingerprint(f_id) != FPM10A_Fail)	//指纹添加成功,蜂鸣器响一声{Delay_ms(100);BEEP = 1;Delay_ms (500);BEEP = 0;flag_srarch_fingerprint = 1;while(FINGERPRINT == 1);}else																						//添加失败,红灯亮{LED = 0;Delay_ms (500);LED = 1;flag_srarch_fingerprint = 1;}}else																							//指纹库已满,红灯亮{LED = 0;Delay_ms (500);LED = 1;flag_srarch_fingerprint = 1;}}else																								//添加失败,红灯亮{LED = 0;Delay_ms (500);LED = 1;flag_srarch_fingerprint = 1;}}break;case 3:																									//删除指纹模式f_id = FPM10A_Find_Fingerprint();											//读取指纹if(f_id != FPM10A_Fail)																//读取成功{if(FPM10A_Delete_One_Fingerprint(f_id) == FPM10A_OK)//删除成功,蜂鸣器响一声{BEEP = 1;Delay_ms (500);BEEP = 0;flag_srarch_fingerprint = 1;while(FINGERPRINT == 1);	}else																								//删除失败,红灯亮{LED = 0;Delay_ms (500);LED = 1;flag_srarch_fingerprint = 1;}}else																									//读取失败,红灯亮{LED = 0;Delay_ms (500);LED = 1;flag_srarch_fingerprint = 1;}break;}}if(flag_beep == 1)						//接收到手机端下发的声光报警指令,进行声光报警						{if(time_num % 10 == 0)	{BEEP = ~BEEP;LED = ~LED;			}}else{LED = 1;BEEP = 0;}if(flag_2s == 1)							//2s,发送数据{flag_2s = 0;Aliyun_Send_Data();}
}

这篇关于【单片机毕业设计】【mcuclub-dz-046】基于STM32的智能行李箱的设计与实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/464104

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry