1. 前言随机密码锁是一种常见的电子锁系统,它使用数字密码代替传统的物理钥匙来进行身份验证和门锁控制。该项目基于stm32微控制器实现一个安全可靠的随机密码锁系统。
传统的机械锁存在一些安全和便捷性的问题。钥匙可能会丢失、被盗或者被复制,这会给用户带来安全风险。而且,当需要为多个用户提供访问权限时,分发和管理多个物理钥匙变得复杂。为了解决这些问题,随机密码锁系统应运而生。
随机密码锁系统基于stm32微控制器实现,具备以下特点:
高安全性:系统使用数字密码进行身份验证,密码是随机生成的,并且每次开锁时会自动更换密码。这样可以提高安全性,防止密码被破解或预测。多用户支持:系统可以为多个用户分配不同的访问权限和密码。管理员可以轻松添加、删除或修改用户信息,并设置其对应权限。多种开锁方式:除了密码输入外,系统还可以支持其他开锁方式,如指纹识别、刷卡等,增加了便捷性和灵活性。电池供电:系统采用低功耗设计,可以通过电池供电,避免线路布线的限制,适用于不同的门锁应用场景。报警功能:系统能够检测异常操作或入侵,并触发报警,提高安全性。当前支持的开锁方式:
(1)支持手机app远程开锁。通过华为云物联网平台实现远程发送指令开锁,设备上的esp8266通过连接家里路由器,在连接华为云物联网平台,可以在手机app上对设备端的rtc时间进行校准,设备唯一id获取,生成随机开锁密码,可以点击app上的开锁按钮,通过物联网平台提供的api发送指令给stm32设备完成开锁。
(2)随机密码开锁。手机app与本地设备都采用时间、作为算法种子,采用算法生成开锁密码,每一串的密码有效时间为一分钟。查看手机app上显示的密码之后,在本地设备上输入完成密码对比开锁。
2. 相关硬件2.1 wifi模块
2.2 步进电机模块
2.3 oled显示屏
2.4 stm32开发板
2.5 矩阵键盘模块
3. 手机app设计3.1 开发环境介绍上位机软件采用qt框架设计,qt是一个跨平台的c++图形用户界面应用程序框架。qt是一个1991年由qt company开发的跨平台c++图形用户界面应用程序开发框架。它既可以开发gui程序,也可用于开发非gui程序,比如控制台工具和服务器。简单来说,qt可以很轻松的帮你做带界面的软件,甚至不需要你投入很大精力。
qt官网:https://www.qt.io/
3.2 学习教程qt入门实战专栏: https://blog.csdn.net/xiaolong1126626497/category_11400392.html
qt5环境安装教程:https://xiaolong.blog.csdn.net/article/details/120654599
下载qt5.12.6下载地址: https://download.qt.io/archive/qt/5.12/5.12.6/
打开链接后选择:
qt-opensource-windows-x86-5.12.6.exe 13-nov-2019 07:28 3.7g details
软件安装时断网安装,否则会提示输入账户。
安装的时候,勾选一个mingw 32编译器即可。
3.3 实现效果
4. 创建云端设备4.1 创建设备登录官网: https://www.huaweicloud.com/
直接搜索物联网,打开页面。
https://www.huaweicloud.com/product/iothub.html
选择设备接入:
选择免费试用:
在产品页面,点击右上角创建产品:
填上产品信息:
得到产品id,保存好id,点击:
产品id为:61b9ba3a2b2aa20288c1e7f1.
点击设备页面,注册设备:
填充信息进行注册:
保存设备密匙和设备id,点击保存关闭会自动下载文件保存,后面生成密码和登录账号需要使用
关闭后就看到创建好的设备了:
点击产品页面,选择刚才创建的产品:
选择自定义模型---创建数据模型服务:
选择新增属性,创建设备的属性
4.2 创建mqtt登录账号和密匙设备创建完成接来下生成mqtt登录账号、密匙,方便设备登录云端平台。
官网工具地址: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/
打开刚才创建设备时,下载的密匙文件,把内容复制出来对应的填进去,生成即可。
4.3 拼接主题订阅与发布的格式官方文档介绍: https://support.huaweicloud.com/devg-iothub/iot_01_2127.html
在产品页面可以,看到主题的全部格式:
帮助文档:https://support.huaweicloud.com/iothub/index.html
总结的格式如下:
格式: $oc/devices/{device_id}/sys/messages/down //订阅主题: 平台下发消息给设备 $oc/devices/61b9ba3a2b2aa20288c1e7f1_qq1126626497_0_0_2021121510/sys/messages/down 格式: $oc/devices/{device_id}/sys/properties/report //设备上报数据 $oc/devices/61b9ba3a2b2aa20288c1e7f1_qq1126626497_0_0_2021121510/sys/properties/report 上属性的数据格式: //上报的属性消息 (一次可以上报多个属性,在json里增加就行了) {services: [{service_id: lock,properties:{门锁:1}}]}上面属性里的服务id和属性里的名称,在设备页面,影子设备页面查看。
4.4 mqtt客户端模拟设备登录云端下面使用mqtt客户端模拟设备登录服务器测试,看设备创建的是否ok。
服务器的ip地址是: 121.36.42.100
端口号是: 1883
打开mqtt客户端软件,按照提示,输入相关参数后,点击连接,然后再点击订阅主题,发布主题即可:
查看云端服务器的情况: 可以看到设备已经在线了,并且收到上传的数据。
修改一下锁的状态,上报属性再查看:
发现云端的状态也已经改变,现在设备上报已经ok。
接下来测试命令下发,实现远程开锁关锁的功能:
打开产品页面,新增加命令:
命令添加成功:
在设备页面,选择同步命令下发:
点击确定后,查看mqtt客户端,发现已经收到数据了:
$oc/devices/61b9ba3a2b2aa20288c1e7f1_qq1126626497/sys/commands/request_id=88e2626f-290d-405e-962d-51554445a8fd{paras:{lock:1},service_id:lock,command_name:lock}设备端解析收到的数据,就可以完成多步进电机的控制,完成开锁关锁。
5. stm32设备端代码设计stm32连接华为云iot的工程代码get: https://download.csdn.net/download/xiaolong1126626497/81993720
5.1 硬件相关原理图
5.2 程序下载配置
用于便携式免疫分析应用的三维折纸装置
详细阐述Kalman滤波模型
震惊!重磅!苹果iOS 11曝光:老用户惨遭抛弃已哭晕
基于超材料的柔性太赫兹载波包络移相器
特斯拉又翻车,特斯拉Model S起火
基于STM32+华为云IOT实现动态口令密码锁
800G系列产品互连方案简介
陶瓷基板研磨抛光的三大好处
苹果AirPods Max全面评测
IPTV未获得奥运金牌---错失露脸机会,显示市场杂乱无章
C语言入门教程-数组
警方通报特斯拉成都11连撞事故:轻伤3人
采用自由口通信模式实现工控PC机与主控PLC之间的通信
LLC谐振变换技术在开关电源中的应用
深入了解法国DynaBox精密蜗轮蜗杆减速机应用、特点及选型指引
PIR传感器成为楼宇自动化创新选择
智能电视启动缓慢的原因分析
AD9371宽带RF收发器挑战无线电架构的设计
高智能多参数土壤肥料养分检测仪的介绍
MWC三部旗舰手机齐发 诺基亚会搭载骁龙835成为黑马吗?