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

相关文章

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小