李 楠,張蒼穹
(1.吉林化工學(xué)院信息與控制工程學(xué)院,吉林吉林132022;2.國電長源荊州熱電有限公司,湖北荊州434000)
目前市場中的鎖具大致分兩類,電子鎖和機(jī)械鎖.機(jī)械鎖與電子鎖相比最大的缺點在于,機(jī)械鎖的金屬彈子標(biāo)準(zhǔn)碼外露,可用工具試探性開啟[1].而對一些電子鎖而言,其識別碼輸入接口外露,也可通過專業(yè)解碼器解碼開鎖[2].結(jié)合兩者的優(yōu)缺點,在傳統(tǒng)機(jī)械鎖具的基礎(chǔ)上進(jìn)行改進(jìn),加裝檢測鑰匙齒形的位移傳感器和遠(yuǎn)程報警功能,只有檢測的鑰匙齒形與預(yù)設(shè)齒形一致時才能開鎖.當(dāng)檢測到有試探性開鎖時立即鎖定并遠(yuǎn)程報警,大大提高了鎖具的安全性,有效地防止技術(shù)性開鎖.其中,對于鑰匙齒形的判斷是至關(guān)重要的部分,決定了系統(tǒng)安全性和穩(wěn)定性,因此本文著重對系統(tǒng)軟件部分進(jìn)行了討論.
如圖1所示電子鎖系統(tǒng),整個電子鎖系統(tǒng)分別采用了兩個ATmega16單片機(jī)作為主、從控制器.從機(jī)通過紅外對射管判斷鑰匙是否插入,后由光柵位移傳感器采集鑰匙的齒形信息,并將這些信息通過總線發(fā)送給主機(jī).主機(jī)則根據(jù)接收到的信息發(fā)出相應(yīng)的控制命令,主要包括:控制LCD12864向用戶顯示當(dāng)前的狀態(tài)信息,控制MP3-TF-16P語音模塊向用戶發(fā)出語音提示,若鑰匙信息正確則直接開啟電磁門鎖,當(dāng)試錯超過3次時控制GSM模塊向用戶發(fā)送報警信息,用戶可通過手機(jī)遠(yuǎn)程解鎖[3].電源部分除了正常的供電模塊外還配有備用電源模塊,防止失電時系統(tǒng)無法正常工作.
圖1 電子鎖系統(tǒng)組成
根據(jù)系統(tǒng)的硬件組成和功能要求,進(jìn)行了軟件部分的開發(fā),利用ICCAVR開發(fā)環(huán)境編寫程序并編譯成目標(biāo)代碼.系統(tǒng)程序流程圖如圖2所示,系統(tǒng)通電后,單片機(jī)首先需要進(jìn)行程序的初始化,包括初始化定時器、外部中斷、UART、SPI總線接口以及其他各類I/O口,
并初始化設(shè)定所有記錄變量、儲存數(shù)組以及狀態(tài)變量.初始化完成后,系統(tǒng)進(jìn)入等待模式等待用戶插入鑰匙.當(dāng)有鑰匙插入后,光電開關(guān)檢測鑰匙是否插入,副控制器向主控制器發(fā)送鑰匙已經(jīng)插入的編碼信號,開始采集鑰匙齒形數(shù)據(jù)并進(jìn)行鑰匙齒形比對.如匹配,由主控制器控制開啟電磁門鎖,并向用戶顯示鑰匙是正確的.如不匹配,則向用戶顯示鑰匙是錯誤的,并累計錯誤次數(shù).當(dāng)累計錯誤超過3次后,系統(tǒng)將自動鎖定.在鎖定狀態(tài)中,用戶的任何操作都是無效的,主控制器將一直等待用戶通過短信發(fā)送過來的密碼,當(dāng)密碼驗證正確后系統(tǒng)才會解鎖.
圖2 系統(tǒng)程序流程圖
軟件部分主要包括:光電開關(guān)檢測程序,位移傳感器檢測程序,齒形比對程序,SPI通訊程序,GSM模塊程序和顯示、語音提示程序等.
在用戶插入鑰匙時,系統(tǒng)需要即刻檢測出鑰匙的插入動作.這需要光電開關(guān)硬件電路與檢測程序軟件的相互配合.本系統(tǒng)使用的光電開關(guān)是對射式光電開關(guān),這類光電開關(guān)檢測到物體遮住光線后,會在輸出口產(chǎn)生電平變化.可直接利用ATmega16 I/O口的定時捕獲功能獲取電平信息.當(dāng)檢測到I/O端由高電平轉(zhuǎn)換為低電平,軟件會修改內(nèi)部狀態(tài)變量從而控制內(nèi)部程序的流程.
在鑰匙插入過程中,鑰匙的齒形會引起光柵位移傳感器測量軸的運動.由于測量軸的運動會使光柵位移傳感器內(nèi)部光柵產(chǎn)生相互的位移,基于摩爾衍射檢測位移量的原理,傳感器的光電接收元件會接收到強(qiáng)度周期變化的衍射條紋.由于衍射條紋強(qiáng)弱變化的影響,光柵位移傳感器的檢測電路會產(chǎn)生兩路脈沖信號A和B.副控制器接收來自于光柵位移傳感器的信號,并通過辨別脈沖個數(shù)和相位差值獲得位移的大小和方向.
位移傳感器檢測程序的設(shè)計就是基于上述原理,利用單片機(jī)的兩個定時/計數(shù)器判別傳感器輸出脈沖的特性.當(dāng)脈沖A上升沿時,定時/計數(shù)器0產(chǎn)生溢出中斷,在處理中斷程序時,單片機(jī)判斷脈沖B的狀態(tài).當(dāng)脈沖B為低電平,則判定位移為正向,同時記錄一次正向脈沖個數(shù).當(dāng)脈沖B上升沿時,定時/計數(shù)器1產(chǎn)生溢出中斷,在處理中斷程序時,單片機(jī)判斷脈沖A的狀態(tài).當(dāng)脈沖A為低電平,則判定位移為反向,同時記錄一次反向脈沖個數(shù).為了在換向時及時記錄前一運動方向中位移的距離,程序中設(shè)置了兩個中間變量(分別是achange和bchange).當(dāng)脈沖A比脈沖B超前,位移為正向時,置位achange,判斷bchange是否為1.當(dāng)bchange為1時,將bchange復(fù)位,并認(rèn)為位移量由反向向正向換向一次.換向一次則將先前記錄的脈沖量和方向?qū)懭雰Υ鏀?shù)組中,并清除先前的記錄.反之,當(dāng)脈沖B比脈沖A超前,位移為正向時,職位bchange,判斷 achange是否為1.當(dāng)achange為1時,將achange復(fù)位,并認(rèn)為位移量由正向向反向換向一次.換向一次則將先前記錄的脈沖量和放線寫入儲存數(shù)組中,并清除先前的記錄.這樣編寫程序,每次位移方向變化的時候,控制器會及時記錄一次位移的變化量和方向.這樣,控制器可以對位移量進(jìn)行精確的測量.
當(dāng)位移傳感器采集到的位移變化次數(shù)大于5次,系統(tǒng)會將獲取到的數(shù)據(jù)與預(yù)設(shè)數(shù)據(jù)進(jìn)行比對并判斷,將比對結(jié)果發(fā)送給主控制器.在設(shè)計程序時,為了滿足這個要求,加入了鑰匙齒形比對函數(shù)、結(jié)果判斷函數(shù)、SPI通訊程序、編碼函數(shù)以及一些中間變量如換向計數(shù)變量、位移方向和大小記錄數(shù)組、預(yù)設(shè)數(shù)組、正確計數(shù)變量、錯誤計數(shù)變量以及狀態(tài)變量.
當(dāng)系統(tǒng)獲取到鑰匙齒形的全部數(shù)據(jù)(即換向計數(shù)變量大于5次后),系統(tǒng)進(jìn)入鑰匙齒形比對程序.系統(tǒng)依次加載鑰匙齒形數(shù)據(jù)(位移方向和位移量數(shù)據(jù)),將這些數(shù)據(jù)和已知數(shù)據(jù)對比.每次對比正確時,正確計數(shù)變量加1;反之,錯誤計數(shù)變量加1.經(jīng)過鑰匙齒形比對程序后,系統(tǒng)進(jìn)入結(jié)果判斷函數(shù).系統(tǒng)判斷正確計數(shù)和錯誤計數(shù)的大小關(guān)系,當(dāng)正確次數(shù)大于錯誤次數(shù),系統(tǒng)將狀態(tài)變量設(shè)為1.當(dāng)正確次數(shù)小于錯誤次數(shù),系統(tǒng)會將狀態(tài)變量設(shè)為2.結(jié)果判斷完成后,系統(tǒng)進(jìn)入編碼函數(shù).編碼過程中,如果系統(tǒng)狀態(tài)變量為1時,系統(tǒng)將編碼0x05通過SPI通訊程序發(fā)送給主控制器.如果系統(tǒng)狀態(tài)變量為2時,系統(tǒng)將編碼0x06通過SPI通訊程序發(fā)送給主控制器.主控制器接收到副控制器發(fā)送的編碼信息后,將進(jìn)行解碼,并根據(jù)解碼結(jié)果進(jìn)入相應(yīng)程序.
主機(jī)與從機(jī)之間通信通過ATmega16的SPI端口完成.設(shè)計程序時,只需要適當(dāng)?shù)呐渲每刂萍拇嫫?SPCR和SPSR寄存器)中特定位的值,即可配置通訊模式[4].
當(dāng)單片機(jī)上電后,程序?qū)⒊跏蓟疭PI接口的相關(guān)控制寄存器.初始化后,副控制器每次向主控制器發(fā)送數(shù)據(jù)時,將強(qiáng)制拉低端的電平.這樣,可以將需要傳輸?shù)臄?shù)據(jù)寫入SPDR中,硬件會自動將數(shù)據(jù)發(fā)送給主控制器.主控制器接收數(shù)據(jù)后將產(chǎn)生中斷,進(jìn)入中斷處理程序后,可以從SPDR寄存器中取出副控制器發(fā)送來的數(shù)據(jù)信息,并進(jìn)入解碼程序進(jìn)行判斷.
根據(jù)系統(tǒng)要求,當(dāng)系統(tǒng)需要遠(yuǎn)程報警時,GSM模塊需要將系統(tǒng)的報警信息發(fā)送給用戶.當(dāng)系統(tǒng)鎖定時,系統(tǒng)需要根據(jù)用戶發(fā)送過來的密碼進(jìn)行解鎖.GSM模塊提供了AT Command接口,用于對模塊靈活控制的控制指令[5].在系統(tǒng)發(fā)送短消息時,系統(tǒng)能夠使用GSM AT指令通過串口向GSM模塊發(fā)送各種命令.通過AT指令,系統(tǒng)可以控制GSM進(jìn)行SMS消息的接收和發(fā)送.
為了更好地服務(wù)用戶,系統(tǒng)具有LCD顯示功能和語音提示功能.在顯示器控制上,采用串行總線進(jìn)行控制.編寫顯示程序時,顯示器制造商為用戶提供了一些基本指令字和一些擴(kuò)展指令,只需要設(shè)計與串行控制總線相匹配的底層讀寫函數(shù),并基于這些函數(shù)設(shè)計LCD控制程序即可.MP3-TF-16P語音模塊同樣為用戶提供了控制指令格式和基本控制指令,這些指令可以使控制器輕松的完成對語音模塊的控制操作.如果控制器需要語音模塊播放指定語音時,控制器可以通過串行端口向模塊發(fā)送格式一定的控制指令.通過這些控制指令,控制器可以自由的控制語音模塊.
通過編譯后的程序,使用集成開發(fā)環(huán)境AVR Studio將目標(biāo)程序?qū)懭雴纹瑱C(jī)中,再利用JTAG接口在線調(diào)試程序.測試的過程分別用兩把鑰匙測試各項功能,一把為正確鑰匙,一把為錯誤鑰匙.首先插入正確鑰匙,圖3為當(dāng)鑰匙插入門鎖時,系統(tǒng)判斷出已經(jīng)有鑰匙插入.圖4為經(jīng)過齒痕檢測,比對正確后成功驅(qū)動電磁門鎖打開,并通過顯示器提示.圖5為當(dāng)插入錯誤鑰匙,并超過3次時,系統(tǒng)判斷鑰匙錯誤鎖定系統(tǒng),并通過GSM模塊向用戶綁定手機(jī)成功發(fā)送短信,進(jìn)行遠(yuǎn)程報警.圖6為用戶通過手機(jī)發(fā)送短信,系統(tǒng)驗證正確后成功進(jìn)行遠(yuǎn)程解鎖功能.
圖3 判斷鑰匙插入功能
圖4 齒痕檢測正確成功開鎖功能
圖5 錯誤超過3次發(fā)送短信報警功能
圖6 短信密碼正確遠(yuǎn)程解鎖功能
屏幕和手機(jī)所顯示的內(nèi)容,均為搭接硬件基礎(chǔ)上,實物仿真測試結(jié)果,該軟件能夠?qū)崿F(xiàn)正確判斷鑰匙是否插入,位移傳感器檢測,齒形信息比對,SPI通信,GSM遠(yuǎn)程報警,顯示狀態(tài)信息,語音提示功能.
本文在設(shè)計了智能電子鎖硬件裝置的基礎(chǔ)上,對其軟件部分進(jìn)行了設(shè)計,其中位移傳感器檢測程序、齒形比對程序和GSM遠(yuǎn)程報警程序是軟件部分的重點,決定了整個系統(tǒng)能否正確判斷鑰匙齒形信息,對電子鎖的安全性起到了至關(guān)重要的作用.經(jīng)實際測試表明,該軟件系統(tǒng)能夠滿足整個電子鎖系統(tǒng)的要求,準(zhǔn)確判斷是否有試探性開鎖,并及時遠(yuǎn)程報警,提高了門鎖的安全性,界面友好,可讀性強(qiáng).
[1] 顧光旭.智能密碼電子鎖設(shè)計[J].鹽城工學(xué)院學(xué)報,2009,22(1):49-52.
[2] 王治理.電路連接的鎖具研究[J].中國新技術(shù)新產(chǎn)品,2013,21(6):10.
[3] 李楠,張蒼穹.具有遠(yuǎn)程報警功能的智能電子鎖[J].吉林化工學(xué)院學(xué)報,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.