基于ATmega16单片机的智能电子锁软件设计
2014-03-01张苍穹
李 楠,张苍穹
(1.吉林化工学院信息与控制工程学院,吉林吉林132022;2.国电长源荆州热电有限公司,湖北荆州434000)
目前市场中的锁具大致分两类,电子锁和机械锁.机械锁与电子锁相比最大的缺点在于,机械锁的金属弹子标准码外露,可用工具试探性开启[1].而对一些电子锁而言,其识别码输入接口外露,也可通过专业解码器解码开锁[2].结合两者的优缺点,在传统机械锁具的基础上进行改进,加装检测钥匙齿形的位移传感器和远程报警功能,只有检测的钥匙齿形与预设齿形一致时才能开锁.当检测到有试探性开锁时立即锁定并远程报警,大大提高了锁具的安全性,有效地防止技术性开锁.其中,对于钥匙齿形的判断是至关重要的部分,决定了系统安全性和稳定性,因此本文着重对系统软件部分进行了讨论.
1 系统组成及功能
如图1所示电子锁系统,整个电子锁系统分别采用了两个ATmega16单片机作为主、从控制器.从机通过红外对射管判断钥匙是否插入,后由光栅位移传感器采集钥匙的齿形信息,并将这些信息通过总线发送给主机.主机则根据接收到的信息发出相应的控制命令,主要包括:控制LCD12864向用户显示当前的状态信息,控制MP3-TF-16P语音模块向用户发出语音提示,若钥匙信息正确则直接开启电磁门锁,当试错超过3次时控制GSM模块向用户发送报警信息,用户可通过手机远程解锁[3].电源部分除了正常的供电模块外还配有备用电源模块,防止失电时系统无法正常工作.
图1 电子锁系统组成
2 系统软件设计
根据系统的硬件组成和功能要求,进行了软件部分的开发,利用ICCAVR开发环境编写程序并编译成目标代码.系统程序流程图如图2所示,系统通电后,单片机首先需要进行程序的初始化,包括初始化定时器、外部中断、UART、SPI总线接口以及其他各类I/O口,
并初始化设定所有记录变量、储存数组以及状态变量.初始化完成后,系统进入等待模式等待用户插入钥匙.当有钥匙插入后,光电开关检测钥匙是否插入,副控制器向主控制器发送钥匙已经插入的编码信号,开始采集钥匙齿形数据并进行钥匙齿形比对.如匹配,由主控制器控制开启电磁门锁,并向用户显示钥匙是正确的.如不匹配,则向用户显示钥匙是错误的,并累计错误次数.当累计错误超过3次后,系统将自动锁定.在锁定状态中,用户的任何操作都是无效的,主控制器将一直等待用户通过短信发送过来的密码,当密码验证正确后系统才会解锁.
图2 系统程序流程图
软件部分主要包括:光电开关检测程序,位移传感器检测程序,齿形比对程序,SPI通讯程序,GSM模块程序和显示、语音提示程序等.
2.1 光电开关检测程序设计
在用户插入钥匙时,系统需要即刻检测出钥匙的插入动作.这需要光电开关硬件电路与检测程序软件的相互配合.本系统使用的光电开关是对射式光电开关,这类光电开关检测到物体遮住光线后,会在输出口产生电平变化.可直接利用ATmega16 I/O口的定时捕获功能获取电平信息.当检测到I/O端由高电平转换为低电平,软件会修改内部状态变量从而控制内部程序的流程.
2.2 位移传感器检测程序设计
在钥匙插入过程中,钥匙的齿形会引起光栅位移传感器测量轴的运动.由于测量轴的运动会使光栅位移传感器内部光栅产生相互的位移,基于摩尔衍射检测位移量的原理,传感器的光电接收元件会接收到强度周期变化的衍射条纹.由于衍射条纹强弱变化的影响,光栅位移传感器的检测电路会产生两路脉冲信号A和B.副控制器接收来自于光栅位移传感器的信号,并通过辨别脉冲个数和相位差值获得位移的大小和方向.
位移传感器检测程序的设计就是基于上述原理,利用单片机的两个定时/计数器判别传感器输出脉冲的特性.当脉冲A上升沿时,定时/计数器0产生溢出中断,在处理中断程序时,单片机判断脉冲B的状态.当脉冲B为低电平,则判定位移为正向,同时记录一次正向脉冲个数.当脉冲B上升沿时,定时/计数器1产生溢出中断,在处理中断程序时,单片机判断脉冲A的状态.当脉冲A为低电平,则判定位移为反向,同时记录一次反向脉冲个数.为了在换向时及时记录前一运动方向中位移的距离,程序中设置了两个中间变量(分别是achange和bchange).当脉冲A比脉冲B超前,位移为正向时,置位achange,判断bchange是否为1.当bchange为1时,将bchange复位,并认为位移量由反向向正向换向一次.换向一次则将先前记录的脉冲量和方向写入储存数组中,并清除先前的记录.反之,当脉冲B比脉冲A超前,位移为正向时,职位bchange,判断 achange是否为1.当achange为1时,将achange复位,并认为位移量由正向向反向换向一次.换向一次则将先前记录的脉冲量和放线写入储存数组中,并清除先前的记录.这样编写程序,每次位移方向变化的时候,控制器会及时记录一次位移的变化量和方向.这样,控制器可以对位移量进行精确的测量.
2.3 齿形比对程序设计
当位移传感器采集到的位移变化次数大于5次,系统会将获取到的数据与预设数据进行比对并判断,将比对结果发送给主控制器.在设计程序时,为了满足这个要求,加入了钥匙齿形比对函数、结果判断函数、SPI通讯程序、编码函数以及一些中间变量如换向计数变量、位移方向和大小记录数组、预设数组、正确计数变量、错误计数变量以及状态变量.
当系统获取到钥匙齿形的全部数据(即换向计数变量大于5次后),系统进入钥匙齿形比对程序.系统依次加载钥匙齿形数据(位移方向和位移量数据),将这些数据和已知数据对比.每次对比正确时,正确计数变量加1;反之,错误计数变量加1.经过钥匙齿形比对程序后,系统进入结果判断函数.系统判断正确计数和错误计数的大小关系,当正确次数大于错误次数,系统将状态变量设为1.当正确次数小于错误次数,系统会将状态变量设为2.结果判断完成后,系统进入编码函数.编码过程中,如果系统状态变量为1时,系统将编码0x05通过SPI通讯程序发送给主控制器.如果系统状态变量为2时,系统将编码0x06通过SPI通讯程序发送给主控制器.主控制器接收到副控制器发送的编码信息后,将进行解码,并根据解码结果进入相应程序.
2.4 SPI通讯程序设计
主机与从机之间通信通过ATmega16的SPI端口完成.设计程序时,只需要适当的配置控制寄存器(SPCR和SPSR寄存器)中特定位的值,即可配置通讯模式[4].
当单片机上电后,程序将初始化SPI接口的相关控制寄存器.初始化后,副控制器每次向主控制器发送数据时,将强制拉低端的电平.这样,可以将需要传输的数据写入SPDR中,硬件会自动将数据发送给主控制器.主控制器接收数据后将产生中断,进入中断处理程序后,可以从SPDR寄存器中取出副控制器发送来的数据信息,并进入解码程序进行判断.
2.5 GSM模块程序设计
根据系统要求,当系统需要远程报警时,GSM模块需要将系统的报警信息发送给用户.当系统锁定时,系统需要根据用户发送过来的密码进行解锁.GSM模块提供了AT Command接口,用于对模块灵活控制的控制指令[5].在系统发送短消息时,系统能够使用GSM AT指令通过串口向GSM模块发送各种命令.通过AT指令,系统可以控制GSM进行SMS消息的接收和发送.
2.6 显示、语音提示程序设计
为了更好地服务用户,系统具有LCD显示功能和语音提示功能.在显示器控制上,采用串行总线进行控制.编写显示程序时,显示器制造商为用户提供了一些基本指令字和一些扩展指令,只需要设计与串行控制总线相匹配的底层读写函数,并基于这些函数设计LCD控制程序即可.MP3-TF-16P语音模块同样为用户提供了控制指令格式和基本控制指令,这些指令可以使控制器轻松的完成对语音模块的控制操作.如果控制器需要语音模块播放指定语音时,控制器可以通过串行端口向模块发送格式一定的控制指令.通过这些控制指令,控制器可以自由的控制语音模块.
3 仿真调试
通过编译后的程序,使用集成开发环境AVR Studio将目标程序写入单片机中,再利用JTAG接口在线调试程序.测试的过程分别用两把钥匙测试各项功能,一把为正确钥匙,一把为错误钥匙.首先插入正确钥匙,图3为当钥匙插入门锁时,系统判断出已经有钥匙插入.图4为经过齿痕检测,比对正确后成功驱动电磁门锁打开,并通过显示器提示.图5为当插入错误钥匙,并超过3次时,系统判断钥匙错误锁定系统,并通过GSM模块向用户绑定手机成功发送短信,进行远程报警.图6为用户通过手机发送短信,系统验证正确后成功进行远程解锁功能.
图3 判断钥匙插入功能
图4 齿痕检测正确成功开锁功能
图5 错误超过3次发送短信报警功能
图6 短信密码正确远程解锁功能
屏幕和手机所显示的内容,均为搭接硬件基础上,实物仿真测试结果,该软件能够实现正确判断钥匙是否插入,位移传感器检测,齿形信息比对,SPI通信,GSM远程报警,显示状态信息,语音提示功能.
4 结 论
本文在设计了智能电子锁硬件装置的基础上,对其软件部分进行了设计,其中位移传感器检测程序、齿形比对程序和GSM远程报警程序是软件部分的重点,决定了整个系统能否正确判断钥匙齿形信息,对电子锁的安全性起到了至关重要的作用.经实际测试表明,该软件系统能够满足整个电子锁系统的要求,准确判断是否有试探性开锁,并及时远程报警,提高了门锁的安全性,界面友好,可读性强.
[1] 顾光旭.智能密码电子锁设计[J].盐城工学院学报,2009,22(1):49-52.
[2] 王治理.电路连接的锁具研究[J].中国新技术新产品,2013,21(6):10.
[3] 李楠,张苍穹.具有远程报警功能的智能电子锁[J].吉林化工学院学报,2014,31(7):57-60.
[4] ATMEL.ATmega16 Datasheet[DB/OL].http://www.atmel.com/Images/doc2466.pdf,2010-07/2014-02
[5] SIEMENS.SIEMENS TC35/TC37 AT Command Set[DB/OL].http://wenku.baidu.com/link?url=F7AGsDXigCMoBoROBAi8RXDhfuvrxNVVtIz5hjX30G L4HdYi8uM14ksXNn_ T34aSCcwMEh4Jtlq2ipy8q6 COkzJXk1DTV626mj4SSh1L6Cu,2002-05-29/2013-09-10.