热度 4
2023-12-21 13:24
933 次阅读|
2 个评论
总体设计 设计来源 随着社会科技的迅猛发展,智能化安防系统在家居安全领域得到了广泛的应用。为了提升居民生活质量和家庭安全性,我决定开发一款基于STM32的智能防盗门系统。 在传统的门锁系统中,使用物理钥匙进行开锁存在一些不便之处,例如容易丢失、难以记忆等问题。而基于STM32的智能防盗门系统将采用密码锁和指纹识别等先进技术,为用户提供更加方便、安全的门禁控制方式。同时,通过集成无线通信模块,用户可以实现远程控制。 项目的设计来源于对智能家居安全领域的市场需求以及对传统门禁系统的不足的深入分析。我们选择了STM32作为主控芯片,以其卓越的性能和灵活性,为系统提供稳定可靠的硬件支持。为了实现多种认证方式,我们引入了RFID和指纹传感器,并通过精心设计的软件算法实现了高效的用户认证流程。 在项目开发中,我注重安全性、可维护性和用户友好性的平衡。通过对系统的全面设计,我将安全置于首位,并提供了友好的用户界面,方便用户轻松操作。 通过这一项目,我打造一种更加智能、安全、便捷的门禁系统,提升家庭安全感,为智能家居领域的发展贡献一份力量。 功能需求分析 1.夜间感应开灯:当检测在夜间的时候,当用户接近到智能防盗门时,防盗门的照明系统打开,方便用户进行开锁。 2.IC卡开门:无线频率辨识(RFID)技术,是一种在卡片与读卡装置之间无需直接接触的片只需在读卡器的读卡范围内晃动即可,即可达到开门的目的。 3.蓝牙开门:利用手机蓝牙配对连接进行开门 4.指纹解锁开门:利用生物技术将门锁与指纹解锁结合在一起达到开门的目的。 设计思路 传统的防盗门在便利性和安全性方面存在一定的短板,用户对门禁系统的需求逐渐提升。智能门锁因其高隐私性、大编码量、低随机开锁成功率以及密码灵活变化等优势,成为了满足用户更高需求的理想选择。为此,我们将移动互联网和无线通信技术融入智能门锁系统,不仅简化了操作流程,还推动了人机交互的发展。 借助STM32F103RCT6单片机卓越的实时性能、最大程度的集成整合、配置灵活以及强大的编程和控制能力,我们设计了一款以STM32F103RCT6为主控制器的智能防盗门系统。该系统整合了键盘模块、HC-06蓝牙模块、OLED屏模块和无线传输等外围电路,构建了一个全面的智能防盗门管理体系。 除了基本的门禁功能外,我们还在系统中增加了夜间感应开灯模块。这一功能旨在提升用户体验,当用户接近防盗门时,系统能够智能地开启照明,方便夜间操作。在白天或用户离开防盗门附近时,系统则能够智能地关闭照明,实现了节能环保的目标。 通过这一设计,我们旨在为用户提供一种更便捷、更安全、更智能的防盗门系统。整合了先进的技术和用户友好的功能,这一系统将满足现代生活对安全和便利的双重需求,为智能家居领域的发展注入新的活力。 前期准备 硬件准备 STM32F103RCT6 开发板 HC-06蓝牙模块 OLED显示屏 光照传感器 人体红外传感器 继电器 RC522无线射频模块 电子锁 AS608指纹模块 12V电源 功能实现 模块介绍 RC522近场通信模块:是一种短距离的高频无线通讯技术,允许电子设备之间进行非接触式点对点数据传输,在十厘米(3.9英寸)内交换数据 蓝牙模块:是一种集成蓝牙功能的 PCBA板,用于短距离无线通讯,按功能分为蓝牙数据模块和蓝牙语音模块。蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯,大致可分为三大类型:数据传输模块、蓝牙音频模块、蓝牙音频+数据二合一模块等等,模块具有半成品的属性,是在芯片的基础上进行过加工,以使后续应用更为简单。像SKYLAB的BLE4.2/5.0蓝牙模块SKB369/BLE5.0蓝牙模块SKB501是属于数据传输模块,仅支持数据传输,不支持音频传输。 光学指纹模块:利bai用光的折射和反射原理,光从底部射向 三棱镜,并经棱镜射出, 射出的光线在手指表面指 纹凹凸不平的线纹上折射的角度及反射回去的光线明暗就会不一样。CMOS或者CCD的光学器件就会收集到不同明暗程度的图片信息,就完成指纹的采集。半导体指纹模块:无论是电容式或是电感式,其原理类似,在一块集成有成千上万半导体器件的“平板”上,手指贴在其上与其构成了电容(电感)的另一面,由于手指平面凸凹不平,凸点处和凹点处接触平板的实际距离大小就不一样,形成的电容/电感数值也就不一样,设备根据这个原理将采集到的不同的数值汇总,也就完成了指纹的采集。射频指纹模块:利用生物射频指纹识别技术,通过传感器本身发射出微量射频信号,穿透手指的表皮层去控测里层的纹路,来获得最佳的指纹图像。防伪指纹能力强,射频识别原理只对人的真皮皮肤有反应,从根本上杜绝了人造指纹的问题。 红外传感器:红外测距传感器是一种传感装置,是用红外线为介质的测量系统,测量范围广,响应时间短,主要应用于现代科技,国防和工农业领域。红外测距传感器具有一对红外信号发射与接收二极管, 利用的红外测距传感器LDM301发射出一束红外光,在照射到物体后形成一个反射的过程,反射到传感器后接收信号,然后利用CCD图像处理接收发射与接收的时间差的数据。经信号处理器处理后计算出物体的距离。这不仅可以使用于自然表面,也可用于加反射板。测量距离远,很高的频率响应,适合于恶劣的工业环境中。 OLED显示屏:OLED显示屏是利用有机电致发光二极管制成的显示屏。由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。此设计采用IIC方式进行数据读取。 OLED(Organic Light-Emitting Diode,又称有机电激发光显示、有机发光半导体)是有机发光二极管的英文缩写。其是一种利用多层有机薄膜结构产生电致发光的器件,它很容易制作,只需要低的驱动电压,这些特征使得OLED在满足平面显示器的应用上显得非常突出。OLED显示屏比LCD更轻薄、亮度高、功耗低、响应快、清晰度高、柔性好、发光效率高。单色屏幕的像素是一个像素就是一个发光二极管。OLED是”自发光”,像素本身就是光源,所以对比度极高,显示效果很犀利,绝无朦朦胧胧、拖泥带水之感,深受爱好者追捧,可惜当前技术所限制,无法大尺寸化,价格比TFT液晶屏高得多。 功能开发 OLED_Init();//OLED初始化 OLED_ColorTurn(0);//0正常显示,1 反色显示 OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示 yemian(); 人机交互显示 //初始页面函数 void yemian(void) { OLED_Clear(); //根据取模软件取模而成 OLED_ShowChinese(0,0,7,16);//智 OLED_ShowChinese(18,0,8,16);//能 OLED_ShowChinese(36,0,9,16);//房 OLED_ShowChinese(54,0,10,16);//盗 OLED_ShowChinese(72,0,11,16);//门 OLED_Refresh(); delay_ms(500); } //开门成功 void opean_OLED(void) { OLED_Clear(); OLED_ShowChinese(0,0,12,16);//开 OLED_ShowChinese(18,0,13,16);//锁 OLED_ShowChinese(36,0,15,16);//成 OLED_ShowChinese(54,0,16,16);//功 OLED_Refresh(); delay_ms(500); } //关门成功 void close_OLED(void) { OLED_Clear(); OLED_ShowChinese(0,0,12,16);//开 OLED_ShowChinese(18,0,13,16);//锁 OLED_ShowChinese(36,0,17,16);//失 OLED_ShowChinese(54,0,18,16);//败 OLED_Refresh(); delay_ms(500); } RC522无线射频卡解锁 思路 首先在RFID标签卡片上的块中存放数据,通过检测卡片中的数据,来判断是否有可以打开防盗门的权限。 写卡 首先,我们需要在IC卡中写入数据。 读卡 根据读取卡片中的数据是否是具备权限的,来检测是否开门 主要程序 status= PcdRequest(REQ_ALL,TagType);//寻卡 if(!status) { status = PcdAnticoll(SelectedSnr);//防冲撞 if(!status) { status=PcdSelect(SelectedSnr);//选定卡片 if(!status) { snr = 1; //扇区号1 status = PcdAuthState(KEYA, (snr*4+3), DefaultKey, SelectedSnr);// 校验1扇区密码,密码位于每一扇区第3块 { if(!status) { status = PcdRead((snr*4+0), bufRC522); // 读卡,读取1扇区0块数据到buf -buf if(!status) { for(i=0;i<16;i++) { sprintf((char *)dtbuf,"%02X ",bufRC522 ); printf((char *)dtbuf); } printf("\r\n"); bufRC522 =0x00; bufRC522 =shuju;//数据 status = PcdWrite((snr*4+0), bufRC522); // 写卡,将buf -buf 写入1扇区0块 if(!status) { } for(i=0;i<16;i++) { sprintf((char *)dtbuf,"%02X ",bufRC522 ); printf((char *)dtbuf); } printf("\r\n"); WaitCardOff(); } } } } } } APP解锁 蓝牙解锁原理 蓝牙解锁的原理就是串口传输数据,通过串口传输和手机的APP进行传输数据,蓝牙接收到的数据进行检测。 我在前面的一篇文章,系统的讲过串口传输,想了解的读者可以自行观看。 思路 首先,通过手机APP连接手机搜索到的蓝牙,连接成功后,在APP中点击开锁。智能防盗门接收到指令后,进行开锁。 重要程序 ///重定向c库函数printf到串口,重定向后可使用printf函数 int fputc(int ch, FILE *f) { /* 发送一个字节数据到串口 */ USART_SendData(DEBUG_USARTx, (uint8_t) ch); /* 等待发送完毕 */ while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET); return (ch); } ///重定向c库函数scanf到串口,重写向后可使用scanf、getchar等函数 int fgetc(FILE *f) { /* 等待串口输入数据 */ while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET); return (int)USART_ReceiveData(DEBUG_USARTx); } 简单的使用 scanf("%c", &GetData); printf("GetData = %c\n", GetData); if(GetData=='A') suo=0;//开 else if(GetData=='B') suo=1;//关 夜间感应开灯 思路 通过光照传感器检测智能防盗门周围的光照强度来判断是白天还是夜间。根据人体红外传感器判断是否有人到达智能防盗门前准备进入,之后选择是否进行开关灯。 scanf("%c", &GetData); printf("GetData = %c\n", GetData); if(GetData=='A') suo=0;//开 else if(GetData=='B') suo=1;//关 重要程序 原理 利用光的折射和反射原理,光从底部射向三棱镜,并经棱镜射出,射出的光线在手指表面指纹凹凸不平的线纹上折射的角度及反射回去的光线明暗就会不一样。CMOS或者CCD的光学器件就会收集到不同明暗程度的图片信息,就完成指纹的采集。 思路 首先,用户需要先录入可以进入智能防盗门的人员的指纹。然后分别进行标号、命名进行存储。 之后,对想要进入智能防盗门的人员进行指纹识别,当识别到是具备允许进入的权限的人员的时候,进行开门,否则进行关门。 效果演示 总结 本文通过指纹解锁、RFID解锁、APP解锁和夜间感应开灯实现一个完整的智能防盗门项目