基于Z-Wave无线技术的指纹锁系统设计

http://www.chinaaet.com/article/218940

摘  要: 结合新兴的低功耗的Z-Wave短距无线通信技术,设计一种应用于酒店的智能指纹锁无线管理与控制系统。该系统的门锁硬件电路包括主控制器S3C2440、指纹采集模块、电机驱动模块及ZM3102无线模块,对门锁节点中Z-Wave通信模块的硬件设计和软件设计进行详细说明,并研究了Z-Wave网络的结构、协议、软件开发,充分考虑指纹数据传输的方案设计,并对传输性能进行测试。测试结果表明:系统能够在低功耗工作情况下实现对指纹数据的采集、存储、传输和控制,并且运行良好。
关键词: Z-Wave;ARM;指纹锁;指纹数据传输

    随着微电子技术、传感器技术、无线通信以及嵌入式计算等技术的飞速发展,以及物联网概念的提出与应用推广,短距无线通信技术得到了广泛应用。物联网是通过传感设备,按照约定的协议,将物品与互联网连接起来,进行信息传输通信,以实现智能化识别、定位、跟踪、监控和管理的一种网络[1-2]。Z-Wave[3-4]是丹麦Zensys公司推出的一种新兴的基于射频的、低成本、低功耗、高可靠、适于网络的短距离无线通信技术,具有比ZigBee更低的功耗和更高传输距离,在智能家居应用方面有较大优势[5-6]。国外Yaledigital、Baldwin及国内Followgood等公司将Z-Wave用于智能指纹门锁上,实现了指纹门锁的远程控制与反馈,但是它们仅利用Z-Wave作控制,却未用于指纹数据的传输。
    本文将Z-Wave无线通信技术与ARM[7-8]嵌入式技术结合运用于酒店指纹密码锁上,旨在实现远程控制和指纹数据传输,设计一种应用于酒店客户的无线智能指纹锁方案,方便酒店人员对门锁进行管理和控制,具有广阔的应用前景。
1 系统总体结构设计
    系统总体结构如图1所示,由前端、中端、后端三部分组成。系统前端为Z-Wave指纹门锁,是该系统的核心部分,用于采集用户指纹及密码等输入、开关门禁、防撬警报等。系统中端为Z-Wave路由节点,用于接力无线信号和传输路径选择,该路由节点可为市场上已有非电池供电类Z-Wave认证产品,如Z-Wave灯座等。系统后端由PC上位机管理控制可视化软件与Z-Wave USB Dongle插件组成,本文设计采用Aeon Labs公司生产的Z-Stick[9]作为PC控制终端接收的插件。

    系统的用户信息传输及验证流程如下:用户在后端PC上进行指纹采集、密码设置等信息登记,通过连接PC的Z-Stick将指纹、密码等数据通过无线方式发送给目标门锁。如果目标门锁距离不在Z-Stick直接传输的范围内,Z-Stick会通过路由节点经过多跳转发给目标门锁。最终门锁接收到数据信息并保存。当用户开门时输入指纹或密码,门锁内的ARM处理器会对输入信息与保存在存储器内的数据进行比对,验证通过则为用户开锁。
    系统的远程控制、警报等信号传输流程与上述信息传输类似。用户使用记录、警报等信息上传为上述信息传输的逆过程,由前端往后端传输。传输结束后,系统将自动进入低功耗休眠状态,等待外部信号(指纹、键盘、无线、防撬触动等)以外部中断方式唤醒系统,从而使系统进入正常工作状态。
2 系统硬件设计
    系统硬件结构如图2所示,主要包括主控制器S3C2440和存储器模块、电源管理模块、Z-Wave无线通信模块、指纹采集和矩阵键盘输入模块、电机驱动模块等。系统硬件分为ARM核心板、Z-Wave无线通信板和外围电路扩展底板。1.2 V电源为ARM内核供电、1.8 V/2.5 V/3.3 V电源为存储器供电、3.3 V电源为IO和Z-Wave供电、5 V电源为U盘/SD卡/指纹采集模块/LED背光供电、12 V电源为电机驱动电路供电。当用户通过指纹采集模块为输入正确的指纹或是通过矩阵键盘输入正确的开锁密码,以及PC端通过远程为用户发出开锁信号时,系统会驱动电机为用户开锁。键盘输入时,系统会为用户开启LED背光,并伴有蜂鸣器发出的按键音提示。倘若防撬开关被触动,系统会立即向后端发送无线警报信号。SD卡和U盘接口为当无线传输不可用时,用于人工插入外部存储设备并导入用户指纹、密码设置以及系统程序的更新升级。

2.1 核心处理器选择
    由于本文门锁系统工作在电池供电及指纹数据运算等情况下,要求系统核心控制器具有较低功耗,有较强的运算能力且具有丰富的硬件接口。综合考虑,核心处理器选择三星公司的基于ARM920T内核的32位RISC微控制器S3C2440[8],其具有丰富的片上资源(如16 KB指令Cache、16 KB数据Cache等)和外部硬件接口(IIC、SPI、USART等)。
2.2 无线通信模块电路
    无线通信模块电路如图3(a)所示,包括Z-Wave模块ZM3102[3]、EEPROM以及天线和匹配电路。Sigma Designs公司开发的ZM3102模块是一块高度集成的射频通信模块,载有ZW0301芯片、晶振、射频前端和电源滤波,通过异步串行接口与外部数据通信,其实物如图3(b)所示。无线通信模块板上的非易失性外部存储EEPROM用于存储Z-Wave网络节点信息、网络拓扑信息等使得重新上电后依然保持掉电前的网络状态。由于锁体被安装嵌入至门内与墙体相连,并且锁体外壳为金属材质,对电磁信号有强屏蔽作用,增加了对无线信号的阻碍,故将天线接口设计成SMA接口,便于将天线引至锁体外表面。
3 Z-Wave网络与软件架构
     Zensys公司提供的Z-Wave 软件开发工具箱(SDK),其不同的版本对不同系列芯片的组网与通信功能有所区别。本文基于SDK版本04.54.01进行无线通信功能开发。
3.1 Z-Wave网络
      如图4所示,Z-Wave网络是一种最多支持232个节点的网状结构网络(Mesh Network),Z-Wave协议规定网络由两种基本设备组成:控制节点(Controller)和从节点(Slave)。Controller能够建立、管理、维护网络,能够向Slave发出网络命令;Slave是接收命令的节点,提供传感数据或者执行命令响应。Controller又被分为便携式的(Portable)、静止的(Static)及桥接(Bridge)3类;Slave可以分为3类:普通的、路由型(Routing)、增强型(Enhanced)。建立Z-Wave网络,要求必须要有一个Controller。本文中以后端的Z-Stick作为Controller进行网络组建,按加入节点的顺序为节点分配Node ID,Z-Stick的Node ID=1(默认)。Slave也可根据供电方式分为市电供电和电池供电两类,特别注意电池供电类Slave无法进行路由选择和中继,如本文中的门锁设备。

 

3.2 Z-Wave软件架构
    Z-Wave SDK提供方便开发的软件架构、应用程序接口(API)及程序流程,如图5所示。系统上电后进行系统建立(System Startup)、硬件初始化(ApplicationInitHW)配置硬件环境、软件初始化(ApplicationInitSW)设置通信模式、速率、网络信息、从EEPROM里读取节点信息等,接着进入主循环(ApplicationPoll),最终调用Z-Wave协议栈[10]。

    主循环程序以switch-case编写的状态机方式等待、接收、分析、回应等处理串口数据帧。若硬件初始化失败则进入测试主体(ApplicationTestPoll)。模块天线接收到信息并正确解析后,将以中断方式调用ApplicationCommandHandler来进一步对信息帧进行处理。在组网或者是网络信息变更时,Controller和Slave节点会分别调用ApplicationControllerUpdate和ApplicationSlaveUpdate更新响应。
4 数据传输
    ARM主控制器以波特率115 200 b/s、8 bit无校验数据位、1 bit停止位方式通过异步串行口(UART)与Z-Wave无线模块进行通信。其帧定义如图6所示,帧头SOF为0x01,长度LEN为除SOF和CHECKSUM外所有的数据字节数,类型TYPE有两种:请求REQ(0x00)和应答RES(0x01),命令COMMAND为SDK规定的命令类型,负载PAYLOAD为应用数据,校验CHECKSUM是0xFF与除SOF和CHE-CKSUM外所有的数据进行“异或”运算。

    本文设计的指纹锁采集一枚用户指纹的数据大小为1 600 B,在使用Z-Wave进行数据传输时需要将指纹数据分段成多个帧。由于Z-Wave无线传输的数据帧长度限制,除去协议帧头、长度、命令校验等,考虑到应用层协议也将消耗多个字节,本文方案设定每一帧传输的指纹数据量为40 B,分成40次传输。指纹数据传输流程与控制如图7所示,数据传输初始先发送一帧总的信息帧,包含用户ID、密码、数据帧数量和定义、时间戳等内容,接着发送指纹数据。每一帧数据发送后都会等待接收方回复确认(ACK)再发送下一帧,直至所有数据发送完毕。如果未能收到接收方的ACK,则停留100 ms后再次尝试发送该帧,最多可尝试5次。

5 系统传输测试结果
    在室内、走道等建筑体内部环境的不同距离下进行实验测试,测试以每组20次传输为基础,一共传输820帧(16 800 B)数据,最后统计取平均数做为结果,传输丢包率与传输距离的关系如表1所示,其中A项数据为用PCB天线传输测得,B项数据为外接天线测得。

    从测试结果可以看出:由于受建筑内部室内墙体、走道拐角等环境因素的影响,在传输距离增大时,节点间数据传输的出错概率加大。在不加功率放大(PA)的情况下,Z-Wave无线信号传输距离有限,板载PCB天线与外接天线在传输性能上有所差异,PCB天线传输距离约为25 m,外接天线时传输距离有一定提高,能达到30 m以上。为减少数据错误率和丢帧率,保证数据传输的高效性和可靠性,节点间隔较大时应适当加入中继节点,或者考虑使用PA对信号功率放大以增加传输距离。
    测试过程中使用了Sigma Designs公司提供的无线侦听测试软件Zniffer,选用一个设备节点烧录sniffer_ZW030x固件,通过RS232串口线与PC连接,PC客户端Zniffer能够解析侦听设备并捕捉到节点间传输信息。该软件能够辅助分析数据出错的原因,实验验证了方案设计的可行性和有效性。
    本文将Z-Wave无线通信技术和ARM嵌入式技术与指纹锁结合,设计并实现了一种酒店应用的智能化的无线指纹锁管理控制系统,弥补了现有指纹锁无法远程传输指纹的不足,拓宽了指纹锁的功能与应用范围,提高了实用性与可靠性。
参考文献
[1] 周立功.ARM嵌入式系统基础教程(第2版)[M].北京:北京航空航天大学出版社,2008:1-4.
[2] 吴帆,杨之乐,林小玲,等.一种嵌入式无线车辆信息采集系统设计[J].传感器与微系统,2013,32(2):116-121.
[3] Zensys.ZM3120C Z-Wave module datasheet[EB/OL].[2007-04-23].http://z-wavesupport.sigmadesigns.com.
[4] 刘晗.基于Z-wave技术的智能家居系统设计[D].上海:复旦大学,2012.
[5] 赵敏,常杰,孙棣华.基于ZigBee和ARM的分布式RFID信息采集系统的设计[J].传感器与微系统,2011,30(9):105-108.
[6] 彭建华,王新.ZigBee与Z-Wave通信技术比较研究[J]. 山西电子技术,2012(4):62-64.
[7] 于明.ARM9嵌入式系统设计[M].北京:电子工业出版社,2007.
[8] S3C2440A 32-bit RISC microprocessor user′s manual(preliminary)[EB/OL].[2004-06-03].http//:www.samsung.com.
[9] Aeotec Z-Stick series 2[EB/OL].[2012-08-13].http://aeotec.com/z-wave-usb-stick.
[10] Zensys.Z-Wave ZW0201/ZW0301 application program guide(v4.54.01)[EB/OL].[2012-06-01].http://z-wavesup-port.sigmadesigns.com.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hibernate一对一关联------主键关联(亲测成功)

1、创建两个实体(Company.java和Login.java)代码如下: 1 package wck.stu.vo.onetoonein;2 3 public class Company {4 private String id "";5 6 private String companyName "";7 8 private Str…

INTEL和AMD两大巨头的前身

仙童半导体公司,曾经是世界上最大、最富创新精神和最令人振奋的半导体生产企业,为硅谷的成长奠定了坚实的基础。更重要的是,这家公司还为硅谷孕育了成千上万的技术人才和管理人才,它不愧是电子、电脑业界的“西点军校”&#xff0…

servlet加载资源两种方式-内外(初始化参数).properties文件

在servlet中加载资源很方便,通过servletContext,这个是web服务器加载完web项目返回的参数之一,还有servletConfig,得到web项目一些配置信息,request和response,等等,我们现在用的这个servletContext也叫做C…

java 登录编程_Java编程通过session访问需要登录的页面

使用Java访问一般网页,进行数据抓取等比较简单,直接用URL和URLConnection连接所需要的网站地址即可,然后对返回的html源码进行处理分析,获取感兴趣的内容。不过如果是需要登录后才能访问的网页就不能直接传入网站url进行连接了&am…

ZDB5202烧成控制器方法

1.跳线和ZDB5202的安装位置如下图 黄色开关设置为off状态,就是靠近班子里面的一方。 2.打开z-wave programmer软件,设置如下图,注意烧写接口为spi,烧写的时候会提示的。选yes是uart,选no是spi。…

controller配对与接触配对

1. 当点击添加按钮后 以上数据,都是z-wave主控制器与pc controller软件的交换。 2. 当连续点击从结点的配对按钮后。 3. 当点击remove按钮后 4. 当连续点击从结点接触配对按钮后

php可以调用windowsapi吗_2.如何调用WindowsApi

2.如何调用WindowsApi在上一篇章节中 很不专业的介绍了一下WindowsApi 如果你本身就知道 那你也压根不用看 如果你本身就不知道 就算我说的再多 估计你也觉得是多余 所以还是来点实际的首先 在C#中想要调用那些Api(当然不一定是Windows提供的Api) 你得添加一个引用:…

php获取跳转后url,php获取跳转后真实url的方法

php获取跳转后真实url的方法发布时间:2020-08-01 14:17:56来源:亿速云阅读:68作者:清晨这篇文章主要介绍php获取跳转后真实url的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一…

定界符在php中,php定界符如何使用

定界符给字符串定界的方法使用定界符语法(“<<结束标识符必须从行的第一列开始。同样&#xff0c;标识符也必须遵循 PHP 中其它任何标签的命名规则&#xff1a;只能包含字母数字下划线&#xff0c;而且必须以下划线或非数字字符开始。举个例子&#xff1a;<?php $str…

php protobuf 二进制,PHP环境中使用ProtoBuf数据格式

1、syntax"proto3":表明使用的是proto3格式&#xff0c;如果不指定则为proto22、package test:定义包名为test&#xff0c;生成类时&#xff0c;会产生一个目录为test3、message Person:消息主体内容&#xff0c;里面为各个字段的定义二、生成对应的PHP类定义好Perso…

工具系列:PyCaret介绍_模型训练详细教程

工具系列:PyCaret介绍_模型训练详细教程 PyCaret初始化 setup任务&#xff1a;自动推断数据类型 必需参数默认转换实验记录模型验证GPU支持示例 PyCaret模型训练 compare_models 示例更改排序顺序只比较几个模型返回多个模型设置预算时间设置概率阈值禁用交叉验证在集群上进行…

php怎么调试小程序,教你如何配置微信小程序

这篇文章主要介绍了微信小程序 教程之小程序配置的相关资料,这里对app.json,pages,window等做了详细介绍&#xff0c;对于初学开发微信小程序的朋友&#xff0c;掌握这些还是比较重要的&#xff0c;需要的朋友可以参考下微信小程序——配置以下就是小编对小程序配置的资料进行的…

php中的控制器是什么意思,理解PHP中的MVC编程之控制器_php

简单来讲&#xff0c;控制器的作用就是接受请求。它使用获取的方法&#xff0c;在这里是通过URI&#xff0c;载入一个功能模块来刷新或者提交一个表述层。控制器将使用$_GET自动全局变量来判断载入哪一个模块。一个请求的例子&#xff0c;看起来像这样&#xff1a;http://examp…

GitHub---最简单的使用

大神就不要喷我了&#xff0c;写这个只是希望新人能够对自己写的项目更方便的本地管理。&#xff08;其实我也只会这点东西w&#xff09; 这两天稍微看了看GitHub&#xff0c;之前不是很明白这个版本控制器到底是什么意思&#xff0c;现在略微有了解&#xff0c;这是对项目代码…

php apache配置测试端口,详解安装配置Windows版apache服务器及压力测试

下载Apache1、下载地址&#xff1a;http://httpd.apache.org/download.cgi2、点击链接Files for Microsoft Windows&#xff1a;安装步骤1、先安装apache补丁1)下载地址&#xff1a;https://www.microsoft.com/zh-cn/download/confirmation.aspx?id481452)如果没有安装&#x…

ASCII,Unicode和UTF-8

1. ASCII码 我们知道&#xff0c;在计算机内部&#xff0c;所有的信息最终都表示为一个二进制的字符串。每一个二进制位&#xff08;bit&#xff09;有0和1两种状态&#xff0c;因此八个二进制位就可以组合出256种状态&#xff0c;这被称为一个字节&#xff08;byte&#xff09…

matlab中solve和resolve,resolve和solve的区别

solve和resolve的区别在于&#xff1a;首先solve一般用于解决难题。如solve a problem, solve a riddle, solve an algebra problem。而resolve 是用在解决矛盾&#xff0c;或者是解决大难题&#xff0c;较显示问题的严重性。如resolve a conflict。其他有关slove的词dissolve&…

shell变量详解

1 shell变量基础 shell变量是一种很“弱”的变量&#xff0c;默认情况下&#xff0c;一个变量保存一个串&#xff0c;shell不关心这个串是什么含义。所以若要进行数学运算&#xff0c;必须使用一些命令例如let、declare、expr、双括号等。shell变量可分为两类&#xff1a;局部变…

if和case用法比较

Case语句时并发语句&#xff0c;需要采用并行逻辑来实现&#xff0c;不存在逻辑的优先级别。If……else语句时多级嵌套语句&#xff0c;通常采用逻辑的串联来实现&#xff0c;该结构具有优先级别问题。这两种结构分别如下图所示&#xff1a; Always (a or b or c or d or s[1:…

PHP实训笔记,【学习笔记19】实验吧 让我进去

知识点MD5拓展攻击解题思路打开网站后看到&#xff0c;什么都没有&#xff0c;尝试抓包分析360截图17860604827894.PNGBurp 抓包发现&#xff0c;Cookie有东西。先是把source0改成source1,得到源码。、、、$flag "XXXXXXXXXXXXXXXXXXXXXXX";$secret "XXXXXXXX…