STM32 智能家居项目 FreeRTOS 密码锁 指纹锁 GSM远程控制 设计报告

本文主要是介绍STM32 智能家居项目 FreeRTOS 密码锁 指纹锁 GSM远程控制 设计报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   资料下载: https://download.csdn.net/download/vvoennvv/88503621

一、概述

        使用STM32F407芯片,FreeRTOS系统,门禁支持密码输入、指纹输入;人体感应灯可实现家居环境中人体自动识别,并用来控制灯光部分的开、关以及延时功能;GSM远程控制通过手机远程向GSM模块发送短信,并识别短信的内容,根据器内容实现对家庭电器、窗帘、照明的本地或远程控制。

二,整体设计

2.1 密码系统

       设计为有两个6位数字密码,并可以进入系统后选择修改密码。首先,系统会不断扫描是否有按键按下。当检测到密码输入时,会将输入的数值保存一个字符串中,并显示“*”来防止偷窥,可以通过“显示”按键来显示或隐藏密码。密码最多输入6位输入完成后按确认键,系统就会将字符串的密码一位位地和系统保存的密码进行比较,当存在不同时,系统会显示“密码错误”并清空输入的密码。输入密码正确则跳转进入系统的主界面。在主界面可以选择修改密码进入,然后选择密码修改。

2.2 指纹识别

       (1)不断检测指纹;
       (2)录入图像。当你的手指放在光学指纹窗口的时候执行这个指令,就可以把指纹的图像拍下来。
       (3)生成特征。当你的指纹图像拍下来之后,调用这个指令就可以把图像中的指纹特征记录下来。AS608里面有2个缓存区可以存这个特征。
       (4)搜索指纹。调用这个指令就会将已经存在Flash里面的指纹模板和缓存区的指纹特征一一比对,如果有搜索到,则开锁进入系统主界面。
      要注意的是,调用的时候需要指明比对的特征是缓存区1还是缓存区2,即你要选择第二步生成的特征所存储的缓存区。

2.3 人体感应      

        人体红外检测模块HC-SR501只有三个管脚(VCC,GND,DATA),电源VCC和地GND,数据输出管脚DATA。当检测到有人体活动时,DATA输出高电平,平常没有检测到有人体活动时输出为低电平。

2.4 GSM远程控制

        系统不断检测是否有短信输入,当接收到信息时,屏幕提示信息输入,并读取判断短信内容,如果短信中有“on”则开灯,有“off”则关灯,如果都没有则不执行退出。该开灯关灯功能都会使人体感应功能关闭,可在设置中恢复。
 

三,设计报告

 

在该项目的系统中我主要以stm32F407系列单片机作为主控芯片,正点原子STM32F4开发板的接口丰富,芯片功能强大,资源都可以灵活配置,可以方便的进行各种外设的实验和开发,适合新手的开发学习。
门禁系统方面主要有密码输入部分和指纹识别部分组成。密码输入部分我选择4*4的键盘输入模块,该模块结构简单,易于连接实现密码键盘功能。通过对键盘的按键不断扫描,可以检测被按下的按键,进而确定用户的密码输入。通过编程实现将输入密码一位位与系统保存的密码相比较。正确密码后,主控芯片就会发送指令控制继电器驱动进行开锁,输入密码错误则会提示错误信息。进入系统内部后,能对用户的密码进行修改功能。这里就要用到stm32内部的flash来存储密码。将修改后的密码写入到flash中,防止密码掉电后丢失。
指纹模块部分则使用as608指纹模块,ATK-AS608指纹识别模块是一款比较成熟的指纹模块,官方提供了指纹录入、指纹识别、指纹删除等一系列功能,方便我们进行设计调用。通过给AS608发送特定的指令,就可以调用里面的算法,进行相应的指纹操作。所以我们编程实现,系统开机就会自动读取模块中存储的指纹方便进行比对,然后不断检测指纹模块是否有指纹输入,检测到指纹后调用指纹匹配指令进行指纹对比,匹配成功则开锁进入系统总界面,匹配失败则显示错误信息。开锁后可以选择进行添加指纹、删除指纹的操作。添加指纹时,系统发送添加指纹指令,然后与指纹模块通讯一步步进行指纹录取,最后通过4*4按键模块输入指纹ID存储进指纹模块当中;删除指纹,调用模块的删除指纹指令,然后使用4*4按键模块进行输入指纹ID进行删除,也可以选择一键清空操作。
人体识别控制灯光部分使用HC-SR501人体检测模块来实现,当该模块检测到有人体靠近的时候,模块引脚就会输出高电平到开发板,开发板检测到电平的输入后,控制连接灯光的引脚输出,来达到人体识别控制灯光的目的。当我们进入系统控制界面时,就可以选择灯光设置来对灯光各项参数进行设置。该灯光设置部分需要有总的开关控制和延时设置。总开关设置,该部分通过定义一个全局变量来判断控制实现。当总开关按钮按下,先判断全局变量是0还是1,是0说明灯功能是开着的,就进行关灯并将全局变量置1;反之是1说明灯是关闭的,就开灯并将全局变量置0。延时设置,用户可以直接通过4*4按键模块输入需要的延时数值,确定后该数值会存储到系统内部flash,每一次亮灯前都会先自动读取flash中的数值,确定延时时间再进行亮灯。这样就能方便精确地去控制灯光的延时时间了。
短信远程控制家电部分采用sim800c实现短信的接收、和开发板通讯。开发板系统可以通过调用模块的指令实现与模块的通讯和模块功能的设置。系统开机时,我们首先需要通过串口与sim800c建立通讯,检测sim卡是否正常。通讯成功后,系统需要不断检测串口的输入,检测到有短信传入后有显示提示,然后直接读取短信内容,检测短信内容字符串中是否含有“开灯”、“关灯”等操作内容,有则执行相关操作否则当作其他短信过滤掉。
关于系统的显示,我们采用正点原子的2.8寸电阻触摸屏进行显示,使系统的操作界面简洁明了便于操作,同时显示返回错误信息,提醒用户。最后将这些模块和功能都集合到一起,就能构建成我们的系统作品了。

3.3可能出现的工作难点与拟解决的方法
其中的难点就是实现开发板与各部分模块的正确通讯,还有各部分功能的组合,协调不发生冲突。在此,查阅了有关资料,决定采用freertos操作系统来实现各部分功能任务协调执行。将需要实时检测执行的功能任务设置成高优先级,随时去执行,而缺少实时性的任务设置成低优先级。在执行后或不执行时通过延时挂起函数来暂时挂起高优先级任务,去执行低优先级的任务。这样就能解决各功能任务相互冲突的问题了。

四,总结

一个学习STM32不可多得的项目,通过该项目可以熟悉STM32各种片内资源的使用。

 资料下载: https://download.csdn.net/download/vvoennvv/88503621

这篇关于STM32 智能家居项目 FreeRTOS 密码锁 指纹锁 GSM远程控制 设计报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

MyCat分库分表的项目实践

《MyCat分库分表的项目实践》分库分表解决大数据量和高并发性能瓶颈,MyCat作为中间件支持分片、读写分离与事务处理,本文就来介绍一下MyCat分库分表的实践,感兴趣的可以了解一下... 目录一、为什么要分库分表?二、分库分表的常见方案三、MyCat简介四、MyCat分库分表深度解析1. 架构原理2. 分

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py