RFID卡在學(xué)校就餐管理系統(tǒng)中的應(yīng)用設(shè)計(jì)
文章出處:http://m.dipdnbxp.cn 作者:李佳 收編 人氣: 發(fā)表時(shí)間:2011年11月08日
1 概述
現(xiàn)在,在一些就餐比較集中的大、中專及中學(xué)里,學(xué)生的就餐基本上采用微機(jī)管理,學(xué)生憑一張非接觸式的RFID卡就可以很方便地在學(xué)校食堂消費(fèi)。有些學(xué)校還采用了校園一卡通,只要持有一張合法的RFID卡,就可在全校范圍內(nèi)的公共消費(fèi)場(chǎng)所進(jìn)行消費(fèi)。
RFID(Radio Frequency Identification)即射頻識(shí)別卡或是感應(yīng)式電子芯片。RFID射頻識(shí)別是一種非接觸式的自動(dòng)識(shí)別技術(shù),它通過(guò)射頻信號(hào)自動(dòng)識(shí)別目標(biāo)對(duì)象并獲取相關(guān)數(shù)據(jù),識(shí)別工作無(wú)須人工干預(yù),可工作于各種惡劣環(huán)境。RFID技術(shù)可識(shí)別高速運(yùn)動(dòng)的物體,并可同時(shí)識(shí)別多個(gè)標(biāo)簽,操作快捷方便。AT88RF020就是Atmel公司生產(chǎn)的非接觸式RFID卡。
2 RFlD卡AT88RF020的特點(diǎn)
◇AT88RF020是13.56 MHz射頻卡,遵循ISO/IEC 14443 Type B協(xié)議;
◇容量為2048位;
◇每張卡有唯一序列號(hào);
◇帶有加密和鎖定功能;
◇一個(gè)一次性計(jì)數(shù)器;
◇所有傳輸信息中包括一個(gè)字節(jié)的循環(huán)校驗(yàn)碼;
◇寫(xiě)時(shí)間為3 ms;
◇寫(xiě)次數(shù)為100 000次;
◇工作環(huán)境是O~70℃。
3 RFID射頻識(shí)別技術(shù)的組成及工作原理
3.1 RFID系統(tǒng)的基本組成
①標(biāo)簽(tag,即射頻卡)。由耦合元件及芯片組成,標(biāo)簽含有內(nèi)置天線,用于和射頻天線間進(jìn)行通信,每個(gè)標(biāo)簽具有唯一的電子編碼,附著在物體上標(biāo)識(shí)目標(biāo)對(duì)象。圖1是RFID芯片AT88RF020的內(nèi)部結(jié)構(gòu)原理圖。
②閱讀器(reader或叫讀卡器)。讀取(除讀卡外還可以寫(xiě)入)標(biāo)簽信息的設(shè)備,可設(shè)計(jì)為手持式或固定式。
③天線(antenna)。在標(biāo)簽(射頻卡)和讀卡器之間傳遞射頻信號(hào)。
有些系統(tǒng)還通過(guò)讀卡器的RS232或RS485接口與外部計(jì)算機(jī)(上位機(jī)主系統(tǒng))連接,進(jìn)行數(shù)據(jù)交換。
3.2 RFID系統(tǒng)的基本工作原理
讀卡器通過(guò)發(fā)射天線發(fā)送一定頻率(如13.56 MHz)的射頻信號(hào),當(dāng)射頻卡進(jìn)入發(fā)射天線工作區(qū)域時(shí)產(chǎn)生感應(yīng)電流,射頻卡獲得能量被激活。射頻卡將自身編碼等信息通過(guò)射頻卡的內(nèi)置發(fā)射天線發(fā)送出去。系統(tǒng)接收天線接收到從射頻卡發(fā)送來(lái)的載波信號(hào),經(jīng)天線調(diào)節(jié)器傳送到讀卡器,讀卡器對(duì)接收的信號(hào)進(jìn)行解調(diào)和解碼,然后送到后臺(tái)主系統(tǒng)進(jìn)行相關(guān)處理。主系統(tǒng)根據(jù)邏輯運(yùn)算判斷該卡的合法性,針對(duì)不同的設(shè)定做出相應(yīng)的處理和控制,發(fā)出指令信號(hào)控制執(zhí)行機(jī)構(gòu)動(dòng)作。
3.3 RFID系統(tǒng)讀卡器的結(jié)構(gòu)及工作原理
對(duì)讀卡器而言,在耦合方式(如電感-電磁)、通信流程(如FDX、HDX、SEQ)、從射頻卡到讀卡器的數(shù)據(jù)傳輸方法(如負(fù)載調(diào)制、反向散射、高次諧波)以及頻率范圍等方面,不同的非接觸傳輸方法有根本的區(qū)別。但所有的讀卡器在功能原理上,以及由此決定的設(shè)計(jì)構(gòu)造上都很相似,所有閱讀器均可簡(jiǎn)化為高頻接口和控制單元兩個(gè)基本模塊。高頻接口包含發(fā)送器和接收器,其功能包括:產(chǎn)生高頻發(fā)射功率以啟動(dòng)射頻卡并提供能量;對(duì)發(fā)射信號(hào)進(jìn)行調(diào)制,用于將數(shù)據(jù)傳送給射頻卡;接收并解調(diào)來(lái)自射頻卡的高頻信號(hào)。不同射頻識(shí)別系統(tǒng)的高頻接口設(shè)計(jì)具有一些差異,電感耦合系統(tǒng)的高頻接口原理如圖2所示。
讀卡器控制單元的功能包括:與應(yīng)用系統(tǒng)軟件進(jìn)行通信,并執(zhí)行應(yīng)用系統(tǒng)軟件發(fā)來(lái)的命令;控制與射頻卡的通信過(guò)程(主-從原則);信號(hào)的編解碼。對(duì)一些特殊的系統(tǒng)還有執(zhí)行反碰撞算法,對(duì)射頻卡與閱讀器問(wèn)要傳送的數(shù)據(jù)進(jìn)行加密和解密,以及進(jìn)行射頻卡和讀卡器間的身份驗(yàn)證等附加功能。
4 RFID卡AT88RF020的存儲(chǔ)結(jié)構(gòu)
Atmel的AT88Rt020射頻卡芯片有2048位的存儲(chǔ)容量,分成32頁(yè),每頁(yè)8個(gè)字節(jié),存儲(chǔ)組織結(jié)構(gòu)如表1所列。
表1中標(biāo)有“—”的字節(jié)由用戶定義,出廠時(shí)初始值為0。
①Pseudo Unique PICC Identifier。卡唯一序列號(hào),卡序列號(hào)由卡廠家寫(xiě)入,不能被修改。
②Applicatlon Data。應(yīng)用數(shù)據(jù),這個(gè)數(shù)據(jù)被作為ATQB回復(fù)信息的一部分由卡傳輸?shù)阶x寫(xiě)器中。
③counter。計(jì)數(shù)器,每執(zhí)行一次COUNT指令,計(jì)數(shù)器的值就加1,初始值由廠家設(shè)為0。
④Signature。簽名(用于加密),這個(gè)數(shù)據(jù)位于第2頁(yè)的前6個(gè)字節(jié),可以通過(guò)COUNT指令修改,counter和Signature 可以提供更進(jìn)一步的安全保護(hù)。
⑤Password。密碼,密碼放在第3頁(yè)中,不能讀出。
⑥Lock Bits。鎖定位,位于第0頁(yè),驗(yàn)證密碼后,能用LocK命令修改。鎖定位中的每一位與內(nèi)存各頁(yè)對(duì)應(yīng),如果某位被設(shè)為“1”,則對(duì)應(yīng)的頁(yè)就被鎖死,不能再進(jìn)行寫(xiě)操作,也沒(méi)有機(jī)制解鎖,所以某頁(yè)一旦被鎖,其內(nèi)容再也不能修改,出廠初始值為0。
AT88RF020通電或重啟的工作流程如圖3所示。
5 RFlD卡AT88RF020的常用命令與函數(shù)
5.1 AT88RF020的常用命令
①REQB/WUPB:用于尋卡或者喚醒處于HALT狀態(tài)的卡,這種卡只響應(yīng)應(yīng)用代碼(API)為00或01的情況,如果接收到一個(gè)帶有無(wú)效API代碼的WUPB命令,那么卡仍然處于HALT狀態(tài)。
②ATTRIB:用于從所有響應(yīng)REQB/WUPB的卡中選擇一張卡,此后,卡進(jìn)入AC-TIVE狀態(tài)。
③Slot MARKER:為讀寫(xiě)器提供了一種用于查詢隨機(jī)數(shù)大于1的卡。
④HALTB:設(shè)置卡處于HALT狀態(tài),此后只能執(zhí)行WUPB命令。
⑤READ:用于讀取卡中的數(shù)據(jù),讀取頁(yè)0~2可以不必驗(yàn)證密碼,而第3頁(yè)的數(shù)據(jù)不能讀出,只能通過(guò)PASS—WORD命令修改,其他的頁(yè)驗(yàn)證密碼后可以讀出。
⑥WRITE:用于對(duì)卡寫(xiě)入數(shù)據(jù)。
⑦LOCK:只有在驗(yàn)證密碼之后才能執(zhí)行,用于鎖定某一地址區(qū)域,被鎖定的地址區(qū)域在驗(yàn)證密碼之后只可以進(jìn)行讀操作。
⑧CHECK PASSWORD:密碼校驗(yàn)命令,在設(shè)備進(jìn)入就緒狀態(tài)之后執(zhí)行。
⑨DESELECT:如果對(duì)處于ACTIVE狀態(tài)的卡執(zhí)行該命令,且通過(guò),則卡發(fā)送一個(gè)正確的回答信息,并進(jìn)入HALT狀態(tài)。
⑩COUNT:用于寫(xiě)第2頁(yè)。COUNT命令中所帶的數(shù)據(jù)寫(xiě)入到第2頁(yè)的前6個(gè)字節(jié)中,后2個(gè)字節(jié)被用做計(jì)數(shù)器使用,每執(zhí)行一次COUNT命令,計(jì)數(shù)器的值就增1,如果計(jì)數(shù)器的值達(dá)到2的15次方,就不能再執(zhí)行COUNT操作,且第2頁(yè)被鎖定,不能再修改。執(zhí)行該命令之前要驗(yàn)證密碼。
5.2 AT88RF020的函數(shù)
下面以rf_attrib()函數(shù)為例來(lái)說(shuō)明AT88RF020的函數(shù)用法。
①函數(shù)rLattrib()的格式:
int rI_attrib(HANDLE icdev,unsigned long pupi,unsigned char param,unsigned char cid,unsigned charbrTx,unsigned char brRx);
②函數(shù)的功能。從已響應(yīng)REQB/WUPB命令的卡中選取一張卡,同時(shí)給每一張卡分配一個(gè)ID號(hào)。
③函數(shù)的參數(shù)描述。
icdev:rf_init()返回的設(shè)備描述符。pupi:Pseudo—Unique PICC Identifier。param:設(shè)為0。cid:卡片ID號(hào)(0~15),這個(gè)值存儲(chǔ)在卡片中供后面操作使用。
brTx:由CD(近耦合設(shè)備)到PICC(近耦合集成電路卡)的波特率,對(duì)于AT88RF020,0x00代表106 kb/s。
brRx:由PICC到PCD的波特率,對(duì)于AT88RF020,0x00代表106 kb/s。
④返回值。等于0表示成功;不等于0表示失敗。
⑤例程。
int st;
unsigned char Mode=0;
unsigned char_Data[15];
unsigned long pupi=0;
st=rf_requestb(iedev,Mode,0~0 Data);
if(st==0){
memcpy(&pupi,&Data[1],4);
st=rf_attrih(icdev,pupi,0,0,0.0);
}
經(jīng)過(guò)選卡后,如果有多張卡進(jìn)入激活狀態(tài),則可以根據(jù)CID(射頻卡ID號(hào))在同一時(shí)間內(nèi)對(duì)多張卡操作。以兩張卡為例:
int st;
unsigned long pupi[2];
unsigned char receive[256],data[10];
pupi[o]=0x25510200;//卡1的pupi
pupill]=Ox344e0200;//卡2的pupi
unsigned char cid=0;
st=rf_requestb(icdev,0,0,0,receive);//選擇一張卡
//in the case of the response card is card 1
cid一0;//slot 0
st=rf_attrib(icdev,pupiEO],o,cid,0,O);
//select card 2
st=rf_request(iedev,0,0,0,receive);
//in the case of the response card is card 2
cid=1;
st=rf_attrib(icdev.pupi[l].0,cid,0,0);
//operate the two cards in the same time
for(int i一0;i-(2;i++){
st=rt_read(icdev,i,0,data);
//deseleet card 1
st=at88rf020 deseleet(iedev,0);
//deseleet card 2
st=at88rf020 deseleet(icdev.1);
6 RFlD卡在學(xué)校就餐管理中的應(yīng)用
6.1系統(tǒng)總體方案
采用美國(guó)Atmel公司生產(chǎn)的AT88RF020射頻識(shí)別卡、IDIc(Identification IntegratecI circuit)、讀寫(xiě)基站集成電路u2270B和Atmel公司的8位單片機(jī)研制開(kāi)發(fā)學(xué)校食堂就餐管理系統(tǒng),系統(tǒng)具有預(yù)付收費(fèi)、目標(biāo)識(shí)別、身份驗(yàn)證、數(shù)據(jù)采集、數(shù)據(jù)加密和數(shù)據(jù)庫(kù)管理的功能。系統(tǒng)由AT88RF020卡、就餐管理終端、數(shù)據(jù)庫(kù)管理系統(tǒng)、就餐管理終端與數(shù)據(jù)庫(kù)管理微機(jī)的通信系統(tǒng)四部分組成。主機(jī)與就餐管理終端之間的通信采用RS一485通信標(biāo)準(zhǔn),工作方式為半雙工,每次通信都是主機(jī)首先呼叫從機(jī)。系統(tǒng)結(jié)構(gòu)如圖4所示。
6.2通信硬件接口設(shè)計(jì)
本系統(tǒng)中,就餐管理終端與上位機(jī)的通信選用了RS485總線標(biāo)準(zhǔn),并采用了MAX465芯片來(lái)實(shí)現(xiàn),它具有RS485通信接口需要的全部功能。數(shù)據(jù)通信的方向由RE和DE腳來(lái)控制,設(shè)計(jì)中二者連在一起,由單片機(jī)的Pl,5來(lái)控制。當(dāng)它為高電平時(shí),數(shù)據(jù)由就餐管理終端經(jīng)MAX485到外部串行總線,即處于發(fā)送狀態(tài);為低電平時(shí),數(shù)據(jù)由外部串行總線到就餐管理終端。一般微機(jī)的串行口采用RS232接口,故在上位機(jī)一端需要一個(gè)RS232/Rs485轉(zhuǎn)換器。本設(shè)計(jì)中采用臺(tái)灣Aten公司生產(chǎn)的IC-485SN轉(zhuǎn)換器,它是一種雙向RS232/R$485或RS422轉(zhuǎn)換器,可提供點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多點(diǎn)(最多可達(dá)254個(gè)點(diǎn))的全雙工和半雙工以及多點(diǎn)的單工串行通信。
6.3通信軟件接口設(shè)計(jì)
上位機(jī)數(shù)據(jù)庫(kù)管理系統(tǒng)采用Visual FoxPro(即VF)編寫(xiě),這里介紹的串行通信程序主要是在VF中實(shí)現(xiàn)與就餐管理終端的通信程序設(shè)計(jì)。本系統(tǒng)采用標(biāo)準(zhǔn)的通信控
件commLmications進(jìn)行通信程序的設(shè)計(jì),實(shí)現(xiàn)掛失數(shù)據(jù)的發(fā)送、用戶卡號(hào)的發(fā)送、發(fā)卡和就餐數(shù)據(jù)的接收。每次通信時(shí),首先在上位機(jī)的lnlt事件中初始化通信控件olecon—troll,初始化設(shè)置為:
thisform,olecontroll,commPort=1 //選擇串行口COM1
thisform,olecontroll,PortOpen=1 //打開(kāi)串行口COM1
thisform,olecontroll,lnpLltMode=O //接收的數(shù)據(jù)按文本方式
thisform olecontroll,RTSEnable=1 //允許使用RTs線.用于
//RS232/485轉(zhuǎn)換器的發(fā)送控制和供電
thisform,oleconatroll,InputLen=1 //每次讀取接收緩沖
//區(qū)的一個(gè)字符
thisform,olecontroll,OutbifferCount=O//清除發(fā)送緩沖區(qū)
thisform,olecontroll,InbufferCotInt=O//清除接收緩沖區(qū)
結(jié) 語(yǔ)
本文介紹了RFID卡ATRF88020的特點(diǎn)、工作原理及在學(xué)校就餐管理中的應(yīng)用。RFID技術(shù)的典型應(yīng)用還有;物流和供應(yīng)管理、生產(chǎn)制造和裝配、航空行李處理、郵件/快運(yùn)包裹處理、文檔追蹤/圖書(shū)館管理、動(dòng)物身份標(biāo)識(shí)、運(yùn)動(dòng)計(jì)時(shí)、門(mén)禁控制/電子門(mén)票、道路自動(dòng)收費(fèi)等。