天天看點

射頻識别技術漫談(28)——基于MF1射頻卡的酒店門鎖設計

電子門鎖是現代星級酒店管理電子化、智能化的重要電子裝置。相較于傳統的機械鎖,基于rfid技術的電子門鎖使用友善,易于管理,安全性高,可實作對開鎖使用者的分優先級自動管理,對房間入住資訊實作自動統計與報表輸出。

1  系統整體分析

    mf1

s50和s70卡是遵守iso14443a國際标準的非接觸式邏輯加密卡,s50卡内共有1024位元組非易失性存儲空間,分為16個扇區,每個扇區包含4個資料塊,每個扇區都有一組獨立的密碼a和b,扇區内的每個資料塊都可單獨設定存取條件。s70存儲結構與s50類似,存儲空間為4096位元組,分為40個扇區。

    旅客入住酒店時,酒店前台将旅客的入住時間、退房時間、房間号等資訊寫入已授權卡片指定扇區的資料塊。客人在標明的房間門鎖前刷卡,門鎖射頻讀卡子產品使用定時紅外線掃描,當探測到卡片後啟動讀卡程式,讀出卡片的全球唯一序列号和卡内的旅客入住資訊,并比對房間号和入住與退房時間,決定是否開門,并将事件記錄在門鎖的e2prom中。

   卡内使用一個位元組作為卡類型辨別,除了客人卡、還可識别管理卡、清潔卡、樓層卡、報警卡、時鐘卡等不同功能的卡片,并設定不同的權限。卡内的門鎖操作記錄可以使用mf1

s70卡片采集,以便定期導出進行彙總統計。

2  系統硬體設計

    如圖1所示,整個系統以atmega88v為核心,外圍電路包括rc522讀卡操作子產品、門鎖電機驅動控制子產品、紅外探測子產品、e2prom存儲子產品以及電源、時鐘、聲光訓示等功能子產品。atmega88v進行紅外線探測,當探測到紅外線有遮擋時啟動rc522進行讀卡操作,根據卡内資訊決定是否進行開門操作,并通過實時時鐘獲得時間資訊,最後将事件記入e2prom中;如果是設定卡,則對系統進行參數設定。蜂鳴器和led燈可以在卡片和門鎖操作的過程中訓示不同的狀态,isp接口實作應用程式的下載下傳和更新。

圖1 系統框圖

2.1 主要晶片電路

    由于門鎖工作時對能耗名額的要求非常苛刻,是以選取主要晶片的原則是運作速度快,耗電少,内部資源夠用即可,盡量減少閑置不用的資源。是以綜合考慮選用美國atmel公司的高性能、低功耗的

avr 8位微處理器atmega88v作為本系統的核心。

    該微控制器特點如下:

    ◆ 先進的 risc 結構(工作于16 mhz 時性能高達16 mips)。

    ◆ 23個可程式設計的i/o口,8路10位adc通道。

    ◆ 1k位元組内部資料ram,8k位元組flash存儲器,可以在系統程式設計。

    ◆ 3個通用計數器、定時器陣列, spi序列槽。

    ◆ 多種節電休眠和停機方式,掉電模式下最低僅需0.5μa。

2.2   rc522讀卡接口電路

    讀卡電路讀取卡片資訊供單片機用于控制門鎖或進行參數設定,并在導出記錄時将記錄資訊寫入s70卡。射頻接口晶片選用了體積小、低電壓、低功耗的rc522晶片,以滿足門鎖控制子產品對體積和能耗的要求。rc522支援iso14443

typea及mifare

crypto1加密協定,最大讀寫距離6cm,具備硬體掉電、軟體掉電和發送器掉電等多種節電工作模式[2]。rc522讀卡接口電路如圖2所示。

圖2  rc522讀卡接口電路

    rc522與單片機之間的通訊可以使用uart、i2c、spi接口,此處我們選用spi接口。硬體上電路闆分為兩個部分,天線和紅外探測以及led顯示組成pcb前闆,其它元件作為硬體底闆,tx1和tx2連接配接pcb前闆上的天線。q1控制rc522的電源,在單片機休眠時rc522完全斷電,以節省能量延長更換子產品電池的間隔時間。

2.3   門鎖電機控制電路與紅外探測電路

    門鎖電機控制電路選用一片ba6287作為驅動。ba6287的供電電壓範圍4.5-15v,最大輸出驅動電流可達1a。m+和m-分别接門鎖直流電機的正負極,fin和rin接單片機的i/o口。ba6287可以實作電機的正轉、反轉、刹車以及晶片本身的掉電休眠模式,非常适合于門鎖電機的驅動控制。

圖3  門鎖電機控制電路與紅外探測電路

    紅外探測電路用于探測天線區域内是否有卡片存在。探測時,單片機将ir_e_d置高電平,q21導通,二極管ir_e向子產品正前方區域發射紅外線,同時置位ir_r_d電壓,并通過adc通道讀取ir_r的電壓值。當射頻場内有卡片時,發射的紅外線通過卡片反射回來被q22接收,q22導通,

ir_r的電壓高于基準值,單片機據此啟動rc522讀卡電路。反之當沒有卡片時,紅外線沒有反射,q22不導通,此時ir_r電壓為基準值。   

3  軟體設計

     射頻卡門鎖電路的軟體主要由射頻卡探測與讀寫程式、門鎖驅動與狀态訓示程式以及門開關記錄儲存與導出程式三部分組成。射頻卡探測與讀寫程式實作了卡片探測與卡片操作,門鎖驅動與狀态訓示根據讀取的卡片資訊對電機進行驅動,并顯示門的目前狀态資訊,這兩部分是軟體程式的重點。開關記錄儲存與導出程式将開關記錄記入子產品的e2prom并可導出到s70卡片,供pc主機采集與分析使用。門鎖電路軟體總框圖如圖4所示。

圖4 軟體總流程圖

3.1 rc522卡操作程式

    紅外探測到射頻場内有卡片後,單片機啟動rc522進行讀卡操作。由于子產品每間隔250ms探測一次卡片,在間歇期内rc522處于掉電休眠狀态,是以讀卡的第一步是先給rc522上電複位,然後進行端口和rc522寄存器配置,之後開啟天線進行卡呼叫、卡防沖突、卡選擇和卡認證。隻有獲得授權的卡片才能通過卡認證一步,之後單片機根據卡類型進行判斷,如果是mifare

s50卡,則讀取兩個block的卡内配置資訊,并根據這些資訊調用門鎖驅動程式執行開、關門操作或進行系統參數設定;如果是s70卡,則調用開關門記錄導出程式,将子產品記憶體儲的開關門記錄寫入s70卡片。

如果紅外探測到場内有卡片,但卡呼叫未成功,則可能是有其他物體遮擋紅外線或可見光幹擾,此時單片機将啟動adc基準值的動态平滑機制,将本次采樣值加入樣本,同時剔除最老的樣本并計算樣本平均值作為下次adc采樣比較的基準。經過較短時間的采樣平滑後,基準值實作跟随外部幹擾變化動态調整,進而消除幹擾的影響。

3.2 門鎖驅動與狀态訓示程式

    門鎖驅動程式根據讀取的mf1

s50卡片配置資訊進行各種操作。卡片内的配置資訊使用卡片的兩個block共32位元組,第一個block的16個位元組格式固定,第二個block的内容根據不同的卡類型所存儲的資訊有差别。其結構如下:

00       01       02  06  07    0b   0c      0d     0e    0f   10    11  16    17  1c

1d   1e   1f

卡型

flag

begin

end

樓号

樓層

房号

    卡型:一個位元組的卡類型辨別不同功能類型的卡片。常見的卡片類型可以分為兩大類,開門卡和設定卡。開門卡可以實作開關門,如客人卡、樓層卡、清潔卡、樓号卡、應急卡、常開卡等;設定卡用來設定子產品參數,不能開門,如退房卡、管理卡、房号設定卡、時鐘設定卡、勿擾卡、報警卡等。

    flag:标志位元組,可以設定8個标志,比如是否允許開反鎖,是否比較開門時間,是否比較房号等。

    begin和end:開始時間和結束時間,格式為年、月、日、時、分,隻有在這個時間區間内,才能開門。當卡片為時鐘設定卡時,使用begin來設定系統時鐘。

    樓号、樓層和房号:用來比較房間是否正确。房号有兩個位元組,第一個位元組為主房間号,第二個位元組為子房間号。有些進階套房内部有子房間,并具有獨立的門鎖控制。沒有子房間的客房在比較時忽略子房間号。

    第二個block的内容根據不同的卡類型,其意義有所不同,比如清潔卡可用來設定清潔區域号和清潔時間段,設定卡用來存放子產品的授權碼等。

    門鎖驅動程式根據上述卡片資訊對門鎖電機驅動或将設定卡的設定參數寫入子產品内的e2prom。

    門鎖狀态訓示程式用來顯示門鎖的目前狀态。門鎖狀态使用一個蜂鳴器和一個雙色led來表示。正常開門蜂鳴器和綠燈同時動作0.5秒;發生錯誤時蜂鳴器和紅燈同時動作0.2秒;設定卡設定成功後蜂鳴器和綠燈同時動作0.2秒;賓客在房間内将門反鎖,綠燈每隔5秒閃爍一次;正常開門卡開門後5秒門未正常關閉,則蜂鳴器和紅燈每隔1秒動作一次;電池電壓低則蜂鳴器發出旋律可變的報警聲。

3.3 開關門記錄存儲與采集程式

    系統擴充了一片at24c64

e2prom晶片用來存儲系統參數和開關門記錄。at24c64的容量為8k位元組,其中前256位元組(位址00h~ffh)用來存儲系統參數,包括卡片密碼、樓号、樓層号、房間号等。at24c64剩餘的存儲空間(100h-1fffh)用來存儲開門記錄,每條記錄的長度為16個位元組,其結構如下:

 00     01                    04   05           0  a     0b        0c                          0f

卡序列号

操作時間

操作類型

備注

    卡型占用一個位元組,記錄所刷卡片的類型;卡序列号記錄卡片的全球唯一4位元組序列号;操作時間記錄刷卡的年、月、日、時、分、秒,占用6個位元組;操作類型記錄開關門的類型,包括正常開門、常開卡開門、常開卡關門、機械鑰匙開門等。一片at24c64共可以存儲496條記錄。

    門鎖中的記錄使用mf1

s70卡導出。s70卡的容量為4k位元組,除去制造商塊和每個區的區尾塊,每張s70卡可以記錄215條記錄,導出全部子產品中的記錄共需要3張s70卡。當用授權的s70卡刷卡時,門鎖控制子產品自動将e2prom中記錄讀出,然後依次寫入s70卡的block中,每一條記錄對應一個block。寫完第一張卡片後,子產品自動等待第二張卡片進入射頻場,直到寫完第三張卡片。如果等待超過10秒鐘未檢測到卡片,程式将逾時退出。

繼續閱讀