基于Zigbee的智能门锁控制终端设计
系统结构
智能门锁控制
本文智能门锁控制终端内部包括:ZigbeeCC2530通信模块、RFID阅读器、按键键盘和19232显示液晶,系统结构图如图1所示。
使用ZigbeeCC2530读取RFID卡号与键盘输入的密码数据,将读取的RFID卡号数据或密码数据打包成数据包,通过Zigbee通信模块无线传输数据,将数据传输至终端设备,终端设备返回数据对比信息至智能门锁控制终端,用于是否进行开门操作。液晶的主要是用于显示使用者的当前操作状态。具体设计制作产品如图2所示。
硬件设计
Zigbee处理器电路
本文选用TZigbee芯片CC2530F256作为处理器,以Zigbee协议栈为通信载体,此芯片射频组是在2.4GHz频段,电路图如图3所示。
CC2530芯片是最实用的片上系统首选,不仅成本低而且功耗也很小,是TI公司专门设计基于IEEE 802.15.4协议的Zigbee芯片,这块芯片上集成了8051内核,带有256 KB的内存和8 KB的RAM,足以提供智能门锁控制终端的信息处理与控制操作。
门锁控制电路
本文智能门锁控制终端所使用的机械门锁为灵性锁,灵性锁使用的是步进电机进行锁芯的伸缩控制,由于步进电机的工作电压是直流12 V,而CC2530的驱动电压为直流3.3 V,所以本文采用一个复合管电路进行门锁的控制,电路图如图4所示。
门锁驱动端口接CC2530的P2_0端口,作用是CC2530可以通过P2_0驱动门锁电路,发送一个低电压信号就可控制12 V驱动电机工作。低电压信号控制高电压信号也可以采用继电器来进行驱动,但是本文为了门锁功耗、安全性能与门锁设计体积的考虑,采用复合管电路进行门锁驱动控制。
RFID读卡接口电路
本文采用的RFID读卡器电路为RC522读卡器电路,射频识别技术是不需要接触就可以实现数据通信,它主要是通过交变的电磁场进行通信。RC522读卡器电路是由阅读器、天线、应答器三大部分组成。阅读器主要是用来读取应答器的信息;天线是在应答器与阅读器之间进行数据的传递;应答器主要由耦合电路元件和芯片组成,每一个应答器都有一个独一无二的ID码,这个码在芯片制作的时候就储存在芯片的ROM中,无法进行更改,智能门锁设计中主要就是利用这个编码来确认应答器的身份。RFID读卡器与CC2530接口电路图如图5所示。
RC522读卡器部分只用了5个接口连接到CC2530芯片处理器,SDA是RC522的数据接口用来传输数据,连接在CC2530芯片上的P1_7口;SCK是RC522的时钟接口,连接在芯片的P0_1口;MOSI是RC522的主输出从输入,连接在芯片上的P1_2口;MISO是RC522的主输入从输出,连接在芯片上的P0_4接口;RST为RC522的复位接口,连接在芯片上的P1_3口用来复位电路。
模拟键盘电路
本文为了节省端口数量,所使用的按键采用了分压式模拟,电路图如图6所示。
当不同的按键被按下后,输出不同的电压信号,使用Zigbee自带的AD转换器,采集电压信号,根据不同的电压值来判定不同的按键。根据计算可得,二极管钳制了大约0.6 V电压,一共13个200 Ω电阻,理想情况下,大约每个电阻分的0.2 V电压,通过CC2530芯片P0_0端口使用AD转换器功能将模拟信号转化为数字信号识别按键。
液晶显示电路
本文中使用的液晶为19232液晶显示器,液晶显示器与CC2530之前采用的是串行传输的方式,硬件电路连接只需要3根线,与CC2530数据传输也只需要3个IO口,占用芯片的引脚少,接口6是液晶显示屏的使能端,与CC2530芯片的P0_7引脚连接;接口5是液晶显示屏的数据输入端,与芯片的P0_6引脚连接;接口4是液晶显示屏的时钟输入端,与芯片的P0_5引脚连接。并且可以通过调节RT可变电阻可以调节液晶的的对比度,使液晶显示屏上的字更加清晰。
软件设计
主流程设计
在系统软件程序设计时,选择IAR公司的IAR Embedded Workbench作为开发环境,智能门锁控制端作为Zigbee无线传输网络中的一个终端节点,终端设备作为一个协调器来工作。主程序流程图如图7所示。
首先进行各个部分的初始化操作,如将液晶进行初始化以及RFID读卡器进行模式设置等一些操作,初始化完成后;调用液晶显示子函数,显示欢迎光临页面,接着液晶会根据不同的状态而现实不同的页面。接着调用RFID读卡程序与按键检测程序,同时检测读取RFID卡号与密码键入,当读取到RFID卡号或4位密码后,发送身份审核数据包,并且等待上位终端返回审核结果,以执行门锁驱动操作。
RFID读卡流程设计
RFID读卡流程图如图8所示。
RFID射频卡放到读卡器上时,则进入读卡程序。首先是开始寻找RFID卡,读取RFID序列号,为了RFID的读卡稳定,在程序中设计了两次寻卡过程,当两次读卡号为相同时则会保存下来。同时为了避免多张射频卡同时放在读卡器上面时会数据碰撞,在寻卡结束后会进行防冲撞检测,当通过防冲撞检测后,则确认为有效卡号,并将卡号打包成数据包后加密发送至上位控制器审核身份,等待返回信息,以返回信息来判断是否进行开门操作。
键值读取流程设计
按键读取程序程序设计由CC2530处理器不断检测按键AD端口的数据,判断转换的数据是否在有效键值内的数据,如果是则将数据保存下来,如果连续保存下16个相同的有效键值后,则可以确认为按下了一个有效按键,等待4位密码输入完成后,将4位密码打包成数据包加密后发送给上位控制器,等待审核信息,进行开关门操作。
数据加密技术
本文中为了提高安全性能,所使用的无线传输数据包是需要数据加密的,所采用的数据加密方式是基于普通加密方式上的一种升级版,是为了增加安防的可靠性而设计的,将Zigbee传输的串口ASCLL码数据进行加密,在我们现实生活中,普通的加密方式有很多,比如:移位加密、DES和CC2530自带的AES等。
本文采取的数据加密方式核心是基于同或及异或的一种加密方式,我们通过将数据所需加密的数据进行一定的加密;所需加密的数据可以查询密码本得到,密码本内数据是通过外部软件随机获得,写入到ROM中,为了使加密的数据可以达到更高等级安全系数,密码本的数据可以更加具有随机性,或者可以进行多次加密计算。
本文中所传输中的数据包是一个具有16位的字符型数据的数组,格式如图9所示;
其中包括5位发送者ID位、8位数据位、2位加密位和1位结束位(0xff),加密位即是将5位发送者ID和8位数据位加密,加密程序如图10所示,2位加密位本文中设计的是前者为同或加密,后者为异或加密。
具体过程为:首先将同或加密位数据在密码本中查找到真正的有效数据,本文采用的是双重提取的方式提取数据,比如同或位为0时,我们在密码表中查得数据为0x67,此时再次查找0x67位置的数据就是真正的有效同或数据,将有效数据与数据相同或后,再使用同种方式将后者的异或加密的有效数据取出,将同或后的数据再进行异或操作。操作完成后,即是加密后所需传输的数据。解密方式即与加密方式是个相同操作,即可将数据还原。
本次密码加密设计可以多种方式来提高安全性能,比如通过更改密码本中数据位置提高安全性能,密码本中一共有256个数据,即0x00~0xff;通过电脑软件Excel将256个数据随机排列,制作成密码本,256个数据排列顺序有256256的数据排列方式。
还可以通过增加加密位来提高安全性能,本次设计只执行了同或和异或两次运算,如增加加密位,再进行相应运算,可以在同或与异或的基础上添置加减移位等一系列计算,会使加密更为安全。