APP下载

基于云平台的智能门锁控制系统开发

2019-04-01王永顺玉士蒙

计算机应用与软件 2019年2期
关键词:门锁身份证密码

王永顺 玉士蒙

(北京建筑大学电气与信息工程学院 北京 100044)(建筑大数据智能处理方法研究北京市重点实验室 北京 100044)

0 引 言

随着共享经济概念的流行,在线短租行业越来越被人们接受。信息技术的进步、社会信用体系的不断完善、人们多样化的住宿需求以及大量闲置房源,这些都推动了在线短租的发展[1]。但是现有短租房门锁存在联网困难、不能实名登记、IC房卡易被复制等安全性问题。虽然有部分门锁能够通过云平台进行管理,但是成本高昂[2]。与此同时,酒店管理存在入住程序繁琐,用户等待时间长等问题[3]。

本文设计开发了一款基于云平台的智能门锁系统,该智能门锁系统包括三部分,即门锁端、云平台和手机端APP。门锁端嵌入Wi-Fi模块实现了与京东微联云平台的互联,解决了传统门锁不能联网的问题。门锁端嵌入身份证读取模块,可读取用户身份信息并进行注册登记,也可通过云平台在手机端APP注册,从而能够缩减酒店入住程序,同时使用身份证作为房卡,降低了房卡被复制的风险。除身份证识别外,门锁端还可利用密码键盘作为辅助开锁手段,密码输入设置了虚位密码功能,能够有效降低用户的安全风险。云平台将手机端和门锁端发送的数据包加上时间戳,用以显示操作时间。手机端能够对用户和门锁进行注册和控制,显示门锁当前及过去状态信息。本文中的门锁端利用STM32F103RCT6单片机作为主控芯片,单片机通过无线通信技术上传用户操作信息,保证了用户数据的可查看性。目前常用的无线通信技术主要有Bluetooth、IEEE802.11a、UWB等[4-5],其中基于IEEE802.11a协议的Wi-Fi通信具有覆盖范围广(Wi-Fi组网)、传输速度快、节省开发成本等优点[6-7],因此本文在技术上采用Wi-Fi通信。

1 总体方案

1.1 智能门锁系统组成

智能门锁系统主要由门锁端、云平台和手机端APP三部分组成。门锁端主要包括STM32F103RCT6主控单片机、数字键盘模块、身份证读取模块和Wi-Fi通信模块,用于进行身份认证和开/关锁控制。云平台使用京东微联,实现手机端与门锁端的通信。用户在手机端操作APP,用于注册和对门锁端进行远程控制。系统总体结构图如图1所示。

图1 系统及协议结构图

1.2 系统功能描述

在门锁端主要实现虚位数字密码开锁、身份证认证及开锁、双重认证开锁等功能,并可将开锁相关信息通过Wi-Fi模块上传到京东微联。数字键盘融合虚位密码技术,使用KMP算法实现虚位密码输入,以防被偷窥,同时具有密码设置、修改、删除等功能。云平台主要对Wi-Fi模块传输来的数据加上时间戳,然后将数据传到手机端,为用户提供门锁实时数据,同时可将用户在手机端的注册信息传输到门锁端。在手机端主要实现对门锁端的远程控制、注册,并可以显示门锁的操作信息,主要包括身份证号录入实现实名注册、对门锁的远程开关控制、显示当前门锁的开关状态、开关时间以及相应开锁人身份等。此外,门锁端的控制电路还具有待机、唤醒等功能,使电路在低功耗下运行。

1.3 系统协议

京东微联作为云服务器,在门锁联网过程中将Wi-Fi模块按照JoyLink协议传送来的json格式的数据进行登记并保存,主要包括身份证号、输入密码和开锁密码以及用户的操作方式等信息。同时京东微联将门锁状态等信息通过网络按照JoyLink协议发送到用户手机APP中。

门锁端单片机与数字键盘模块使用IIC协议通信,与身份证读取模块使用USART进行通信,与Wi-Fi模块使用SPI总线进行通信。门锁系统的协议结构图如图1所示。

1.4 系统注册

系统注册使用手机端注册和门锁端注册两种方法。用户在APP中输入身份证号,通过云平台将数据传输到门锁端进行注册,同时用户也能在门锁端输入身份证号进行注册。用户可通过注册过的身份证进行开锁密码的设置,并选择开锁认证方式。用户自行注册的方式简化了短租房和酒店的管理程序,保证了房卡的唯一性。门锁的注册/使用流程如图2所示。

图2 注册/使用流程图

2 云平台及手机端开发

2.1 云平台

京东微联作为云平台,为用户提供远程控制、双向通信,对数据进行登记和存储[8],对门锁状态及相关信息进行传输,并在数据包中加入时间戳为用户提供时间信息。

京东微联在系统中承担两项工作:接收Wi-Fi模块发送的门锁信息数据,对其进行解析、保存,并将其发送到手机端,H5交互界面提供信息数据的展示;将手机端发送的控制命令、身份证和注册等信息通过网络发送给门锁端。

京东微联官网提供开发者平台,首先需要在平台上创建产品,并对产品信息进行完善。之后云平台会给设备匹配专用的调试序列号(UUID),将UUID写入到Wi-Fi程序中即可实现虚拟设备调试。在虚拟设备调试中可对多种功能参数进行设置,并对手机端进行消息推送的设置。

京东微联云平台与门锁及手机均使用JoyLink协议通信,且提供了JoyLink协议的SDK和相关的技术文档及开发流程,将SDK移植到Wi-Fi模块中即可实现与门锁端的交互。平台会在每次的协议包中加上时间戳用以时间显示。

2.2 手机端开发

手机端主要提供HTML5交互界面,供用户查看门锁状态及开锁记录,能够对门锁状态进行控制,并可对身份证号进行注册登记。

2.2.1 JoyLink2.0协议

JoyLink2.0协议是京东微联开放平台提供的标准接入协议,主要功能包括设备发现、feedid、accesskey、localkey写入、获取设备快照,控制设备等[9]。JoyLink协议中定义的数据格式如表1所示。协议包头结构体packet包含的信息如表2所示。

表1 JoyLink数据格式

表2 协议包头结构体

2.2.2 JoyLink协议通信

APP从JoyLink SDK协议中读取设备对应的feedID是否在线,若设备在线就将控制请求提交给SDK,SDK通过UDP协议透传给门锁,门锁执行相应动作后原路返回通知APP,同时异步告知云端。设备上电后会向云端发送认证请求,云端在验证设备合法性后,会随机生成一个设备与云端生成的对话密钥,用于云端与门锁的通信。门锁认证成功后与云端建立长连接,之后控制、数据上报等数据包体进行AES加解密[9]。

2.2.3 HTML5界面开发

手机APP前端开发选用HTML5在京东微联APP中生成信息及控制界面,主要实现注册登记、门锁开关控制以及开关记录功能。手机端及云平台的开发主要是对手机端H5界面和控制逻辑的开发,主要包括HTML5、CSS、JavaScript和vue.js技术的开发。界面设计以iPhone5为主要设计尺寸(640×1 136),左右各留8 px的间距,运用栅格原理进行设计的规范样式,每列栅格均按照52 px×52 px为单位的基础栅格尺寸进行。整体布局规范从上至下依次为:顶部导航栏、状态显示区、功能控制区、底部辅助信息区。

状态显示区主要呈现设备当前的运行状态(不可控参数),可以让用户直观地获取到设备运行信息。功能控制区用于放置设备的控制功能,主要用于身份证号登记以及门锁控制,功能控制区采用卡片方式进行布局。

为解决前端界面适配的问题,首先在JavaScript中获取当前设备的宽度,对于Internet Explorer、Chrome、Firefox、Opera和Safari等浏览器来说,获取设备宽度方法为window.innerWidth,但是对于Internet Explorer 5~8浏览器获取设备的宽度方法为document.documentElement.clientWidth,所以为了兼容所有浏览器,选择用var clientWidth=document.documentElement.clientWidth‖window.innerWidth来兼容所有的浏览器,以获得浏览器宽度来适配设备。然后根据设置的baseWidth和baseFontSize的值,通过rem=Math.floor(clientWidth/baseWidth×baseFontSize)计算出设备的rem值。最后根据获得的rem值来重置页面中的控件、字体等大小,以保证页面在任意设备中都能正确显示。H5开发的界面如图3所示。

图3 H5主界面

页面body部分通过v-show与vue对象中的pages.index绑定,当pages.index为真时,界面显示正常,当pages.index为假时,页面显示空白。页面由三个div部分组成,最上面的是设备状态显示区,由一个image标签组成,图片像素为640 px×280 px,设备状态显示部分显示门锁的开合状态,当锁为闭合状态时,锁的颜色为蓝色,否则为红色。中间的控制部分由左右两部分组成,在HTML中用两个div区分开,而样式主要在css中定义。左侧是设备状态文字显示区,由vue对象中的变量控制,右侧是vue控件,绑定了命令下发函数。在手机端点击控件时,根据手机界面显示的状态,调用JDSMART.io.controlDevice方法,下发与现在状态相反的命令,同时也会根据返回数据来进一步更新页面。最下侧的div部分是日志查询部分,在此div标签中添加了click事件,点击该按钮会调用JDSMART.app.openUrl 方法打开使用记录查询页面,调用JDSMART.io.getWifiHistory方法查询开门的记录情况,根据返回的数据将开锁记录显示在新打开的页面上。

前端的逻辑控制是由JavaScript部分来完成的。首先页面加载后JDSMART.ready方法会对设备信息进行初始化,查询设备的状态、获取设备快照,根据得到的信息更新界面。然后设置4秒的定时函数,定时获取设备快照,以获取设备的状态。在设备控制区域的组件power通过vue绑定了click事件,当用户在手机端点击时,可以实时地发送消息到设备端,返回值为执行的结果,JavaScript根据返回的结果调用函数及时地刷新页面。

3 门锁装置

3.1 门锁硬件

硬件电路部分使用DXP进行PCB设计,通过接插件与接在锁芯上的接插件相连进行控制。门锁端可由两种方式供电:干电池供电和外置USB接口供电。控制主板主要包括声光人机交互以及电机驱动部分。

3.1.1 控制单元及Wi-Fi通信模块

门锁端控制单元的核心选择STM32F103RCT6单片机。STM32F103RCT6具有13个多种类型的通信接口,51个I/O口能够满足门锁控制系统对外围设备的控制需求[10]。Wi-Fi通信模块采用LHW100A模块,模块内嵌TCP/IP协议,能够与网络服务器进行实时通信,并且支持高速SPI接口,能够适应Wi-Fi通信模块与单片机之间通信的数据量。模块能够自动连接无线网络,以防在网络断开之后门锁部分功能失效。

3.1.2 电源模块及其接口

干电池供电采用4节干电池通过变压降到3.3 V,为单片机以及Wi-Fi通信模块供电。稳压芯片采用的是AMS1117-5.0和AMS1117-3.3芯片,将4节电池的6 V电压分别转换成5 V和3.3 V。稳压电路通过电容滤波,芯片稳压,再接滤波电容,从而得到稳定的输出电压。6 V转5 V和3.3 V稳压电路如图4、图5所示。

图4 6 V转5 V稳压电路

图5 6 V转3.3 V稳压电路

本款门锁在电源模块加入了USB接口,通过该接口用户可使用充电宝等供电设备给门锁供电,以防止门锁电量耗尽,导致门锁不能正常打开。USB供电稳压电路如图6所示。

图6 USB供电稳压电路

3.1.3 数字键盘模块

数字键盘模块使用IIC接口与单片机进行通信,单片机采用中断方式读取中断状态寄存器,检查是哪个按键产生中断。数字键盘采用4× 3数字键盘,数字键盘模块如图7所示。图中‘*’和‘#’分别作为“取消”和“确定”使用;键盘主要用于密码输入、密码修改、菜单选择、系统设置等,是人机交互的关键组成部分[11]。

图7 数字键盘模块

3.1.4 身份证读取模块

身份证读取模块采用公安部统一认证的身份信息读取模块。本设计只利用身份证号来核对并登记身份信息,门锁会将用户的身份证号传输到云平台进行登记注册,进而对相关信息进行采集,包括身份证号、开锁方式、注册时间以及注册有效时长等信息。STM32通过串口采用轮询法来对身份证读取模块进行信息采集,模块收到单片机的查询信息会对该查询进行回应并将身份证号传输给单片机,单片机对身份证号进行验证,判断该身份证的有效性。身份证读取模块如图8所示。

图8 身份证读取模块

3.1.5 控制主板

控制主板上的功能模块主要包括功能指示灯、蜂鸣器、输入按键、电机驱动等模块。在每个输入输出引脚连接光电耦合器进行光电隔离,以提高系统的抗干扰能力。电机驱动电路采用直流电机驱动芯片MX08,该芯片给锁芯内部的电机提供驱动,电机驱动电路图如图9所示。在接收到开锁/关锁信号后,电机正转/反转并带动锁舌移动。锁舌一端有限位开关,当锁舌移动到指定位置后会触发限位开关,电机停止转动。蜂鸣器采用无源蜂鸣器,当输入端有输入时会触发蜂鸣器,单片机使用PWM方波控制无源蜂鸣器发出声音,蜂鸣器驱动电路如图10所示。掉电保护电路采用法拉电容串接电阻的方法,放电时间足够单片机执行紧急存储的时间。

图9 电机驱动电路

图10 蜂鸣器驱动电路

3.2 单片机程序开发

单片机程序开发是在keil的编程环境下完成的,包括身份证识别模块控制程序、数字键盘控制程序、KMP算法、SPI通信程序以及休眠唤醒、掉电存储等附属功能的程序编写。

3.2.1 身份证识别模块

单片机在上电后对系统以及各通信模块接口进行初始化并进入循环操作,单片机通过串口持续发出寻卡指令,当收到寻卡成功指令后,发出读取身份信息指令,身份证识别模块将采集到的身份信息统一通过串口传给单片机。控制单元在接收到身份信息后对身份证号数据进行筛选,之后进行保存并对比。身份证识别模块的信息传递工作流程图如图11所示。

3.2.2 数字键盘模块程序开发

KMP算法是字符串匹配中是最常用的算法之一,同时也是效率较高的算法[12]。KMP算法的基本思想是当一次匹配过程中出现失配时,无需追溯主串指针,而是充分利用已经得到的“部分匹配”的结果将模式向右滑动尽可能远的一段距离后继续比较,从而提高了模式匹配的效率[13]。

数字键盘模块在上电之后执行复位并进行初始化,软件配置使能触摸中断功能,按键状态发生变化时中断引脚产生中断信号,此时单片机发送查询指令查询中断状态寄存器,判断按键动作情况。

门锁的有效密码设置为6位数字,在按下按键后控制单元会通过数组将读取到的按键值进行保存,当读取到“#”按键触发时,会与系统中存储的密码进行比对。系统使用了虚位密码技术,使用KMP算法将用户输入的大于等于6位的用户密码与系统密码进行逐字符匹配。若系统密码包含在用户密码中,即字符串a包含字符串b,则系统返回匹配结果为真,驱动电机开锁,并通过Wi-Fi模块上传门锁状态,否则系统会发出错误信号,电机无动作。

数字键盘模块与控制单元的通信数据采用IIC时序,数据类型是12位的按键状态寄存器的数据。数字键盘模块工作流程如图12所示。

图12 数字键盘模块工作流程图

3.2.3 掉电信息存储

在门锁使用过程中,电池电量耗尽或其他原因而导致系统掉电复位进而导致门锁不能正常开启。本文将单片机的FLASH模拟EEPROM配合掉电保护电路来进行密码信息以及身份信息的存储。在门锁掉电之后掉电保护电路放电以提供单片机进行紧急存储的所需电源,在重新上电后系统会读取FLASH,将读取的密码信息分别重新存储到相应的数组中。使用单片机自身的FLASH代替EEPROM能够降低系统功耗,同时节约成本。

3.3 Wi-Fi模块程序开发

3.3.1 Wi-Fi模块工作流程

Wi-Fi模块在上电后进行系统初始化,包括系统时钟初始化、SPI初始化以及JoyLink2.0协议中各种参数的配置等。然后监察系统的网络配置,如果有配置网络连接的信息,则按照之前的配置尝试连接到Wi-Fi,如果没有则等待配置oneshot。oneshot配置的过程:手机连接路由器,打开oneshot软件,配置已连接Wi-Fi的信息,然后向Wi-Fi模块广播网络配置的信息,包括ssid、password以及加密方式,Wi-Fi模块按照手机端发来的配置信息连接路由器。联网成功后,Wi-Fi模块一方面接收STM32通过SPI总线发来的数据,另一方面接收云平台发来的数据命令。

3.3.2 JoyLink通信

Wi-Fi模块与京东微联云平台使用京东提供的JoyLink2.0协议进行通信。Wi-Fi模块网络配置成功后,会向云平台发送认证请求,门锁认证成功后会与云平台建立长连接,并发送设备快照,之后即可进行数据传输,控制请求及回应等操作。Wi-Fi模块每隔一定时间会发送心跳请求,以确保门锁在线。Wi-Fi模块开发流程图如图13所示。

图13 Wi-Fi模块开发流程图

3.3.3 SPI通信

STM32与Wi-Fi通信模块使用高速SPI接口进行通信。当STM32向Wi-Fi模块传输数据时首先发出片选信号,Wi-Fi通信模块进入接收模式等待单片机数据的传入。之后利用透传功能将数据传输到云端进行处理并将处理结果下发至Wi-Fi通信模块和手机用户APP,提醒用户采取相应的措施。单片机通过SPI通信向Wi-Fi模块读数据的程序如下:

GPIO_ResetBits(GPIOA, GPIO_Pin_4);

SPI1_ReadWriteByte(0x10);

for(i=0;i

{

*(RXBuf+i)=SPI1_ReadWriteByte(0xff);

}

GPIO_SetBits(GPIOA, GPIO_Pin_4);

SetSPIStatus(SPI_DATA_IN);

STM32单片机进行片选并向Wi-Fi模块发送读数据指令,之后向Wi-Fi模块发送无效数据以得到有效数据,关闭片选并将SPI有关位进行置位。写数据与读数据类似。单片机向Wi-Fi模块写数据的程序如下:

GPIO_ResetBits(GPIOA, GPIO_Pin_4);

SPI1_ReadWriteByte(0x90);

//写数据命令

for(i=0; i

{

SPI1_ReadWriteByte(*(TXBuf+i));

}

GPIO_SetBits(GPIOA, GPIO_Pin_4);

4 结 语

本文设计开发的智能门锁控制系统主要包括门锁端、云平台和手机端APP三部分。使用Wi-Fi模块通过互联网实现云平台和手机端对门锁端控制与信息采集。门锁端使用身份证代替IC卡作为房卡,并且数字键盘结合KMP算法设置虚位密码功能,分别实现身份证、数字密码以及手机端控制三种开锁方式进行开锁操作。同时能够实现实名认证、内部锁定、掉电保护、备用电源接口等功能。

本文所设计开发的智能门锁控制系统能够保障用户的安全,使用方便。所采用的虚位密码技术能够有效防止偷窥等行为,安全可靠性高;使用身份证代替IC卡作为房卡,能够有效解决IC房卡易被复制等安全性问题;使用云平台进行实名登记,能够减少酒店的入住程序,并且在解决联网问题的同时,能够降低开发成本。经过测试,证明本文所开发的门锁控制系统稳定可靠,具有很好的应用前景。

猜你喜欢

门锁身份证密码
2011款别克凯越车中控门锁失灵
密码里的爱
6款热门智能门锁推荐
旋转门锁
密码抗倭立奇功
据说最近流行晒身份证,各路大神都被炸了出来
趣说古人的“身份证”
密码藏在何处
Relationship between Interlocutors’ Choice of Speech Strategies and Their Power Strength
夺命密码