摘 要:為解決自動售貨機(jī)支付手段落后的弊端,描述并建立基于GSM和RF網(wǎng)絡(luò)、銀行支付的自動售貨系統(tǒng)。該系統(tǒng)以客戶端手機(jī)為平臺,實現(xiàn)與自動售貨機(jī)進(jìn)行信息的識別和交互,并詳述描述系統(tǒng)各部分的實現(xiàn)方法、主要的硬件電路以及RFID驅(qū)動的實現(xiàn),完成了自動售貨功能,具有一定的實用價值。
關(guān)鍵詞:射頻識別; GSM網(wǎng)絡(luò); 自動售貨機(jī); 手機(jī)客戶端
中圖分類號:TN911; TP368.1 文獻(xiàn)標(biāo)識碼:A
文章編號:1004-373X(2010)14-0089-04
Vending System of Bank Payment Based on RFID and GSM Network
CAI Zi-liang , LI Yao-hui
(College of Electrical Information Engineering, Xuchang University, Xuchang 461000, China)
Abstract: A vending system of bank payment based on RF and GSM network was constructed for solving the backward payment of vending machine. The system achieves identification and interaction of information with the vending machine based on client cell-phone, the implementation methods of each part, the main hardware circuit and the realization of RFID drive are described, and the vending function is realized. It has practical value.
Keywords: RFID; GSM network; vending machine; client of cell-phone
手機(jī)支付是以短信、語音、WAP、K-JAVA等方式提供的一種移動支付業(yè)務(wù)[1],而國際防偽領(lǐng)域逐漸興起了一股利用射頻識別技術(shù)防偽[2]的潮流,,通過客戶端手機(jī),利用GSM網(wǎng)絡(luò)和RFID技術(shù)實現(xiàn)銀行支付的自動售貨系統(tǒng)適應(yīng)了這一要求。標(biāo)準(zhǔn)化也使RFID得到了互通和發(fā)展[3] ,共同遵守的工作流程利用到技術(shù)合作又防止了技術(shù)壁壘[4] 。該系統(tǒng)具有GPS 接收器,內(nèi)置天線,便于區(qū)域管理;采用RFID相關(guān)規(guī)范技術(shù)[5]和嵌入式實時操作系統(tǒng),實現(xiàn)實時接收、存儲、測試數(shù)據(jù),可靠性高;具有較強(qiáng)的交互性、易用性、安全性。用于人流量大的鬧區(qū),方便市民通過手機(jī)自主購物。
1 系統(tǒng)的硬件結(jié)構(gòu)
如圖1所示,系統(tǒng)包括銀行服務(wù)器終端、銀行前端服務(wù)系統(tǒng)、自動售貨機(jī)上的讀寫器、客戶端手機(jī)、GSM網(wǎng)絡(luò)、數(shù)據(jù)庫、自動售貨機(jī)、射頻網(wǎng)絡(luò)。
把銀行卡和手機(jī)號綁定后的客戶端手機(jī)通過與銀行服務(wù)器之間進(jìn)行數(shù)據(jù)信息的交互,并由銀行服務(wù)器終端通過RF信號控制售貨機(jī)是否出貨。該系統(tǒng)支持多人同時操作,更大地提高了售貨機(jī)的使用效率,還為公交換零提供方便。
1.1 銀行前端服務(wù)系統(tǒng)
圖2為銀行前端服務(wù)系統(tǒng)。
圖1 系統(tǒng)結(jié)構(gòu)總圖
圖2 銀行前端服務(wù)系統(tǒng)結(jié)構(gòu)圖
圖2中,ARM主控模塊采用ARM7芯片;GSM模塊的語音傳輸是基于GSM900網(wǎng)絡(luò)系統(tǒng)的OEM模塊;信息預(yù)處理模塊主要對GSM模塊中采集到的調(diào)制信號進(jìn)行濾波放大處理,處理后的信號通過耦合電容傳入ARM主控模塊中處理;RFID讀/寫模塊的核心部件是nRF2401芯片,采用ISO18000-B協(xié)議,頻率為2.45 GHz,傳輸距離為10 m。
1.2 自動售貨機(jī)上的讀寫器
如圖3所示,ARM主控模塊中ARM7及其外圍電路利用經(jīng)典的微處理器控制 模塊電路,保證了電路的穩(wěn)定性、實時性、易操作性;嵌入式實時操作系統(tǒng)采用μC/OS-Ⅱ,網(wǎng)絡(luò)協(xié)議采用LwIP協(xié)議,射頻收發(fā)模塊的核心部件是nRF2401芯片,RFID讀寫器的發(fā)展趨勢是向多功能、多接口、多制式[6] 發(fā)展,其工作頻率也就是RFID系統(tǒng)的工作頻率[7],與RFID讀/寫模塊具有相同的協(xié)議和頻率,同時用到RFID中間件的主要功能[8]。EMC電磁兼容性濾波器串接于ARM主控模塊與RF模塊之間,用來抑制和消除系統(tǒng)現(xiàn)場的強(qiáng)電磁干擾。
作為射頻的核心模塊nRF2401,其內(nèi)置地址解碼器、先入先出堆棧區(qū)、解調(diào)處理器、時鐘處理器、GFSK濾波器、低噪聲放大器、頻率合成器,功率放大器等功能模塊,需要很少的外圍元件,因此使用起來非常方便。它采用QFN24引腳封裝,外形尺寸[9]只有5 mm×5 mm。nRF2401的功能模塊如圖4所示。
圖3 讀寫器結(jié)構(gòu)圖
圖4 nRF2401功能模塊圖
1.3 GSM模塊電路
如圖5所示,GSM模塊由GSM基帶處理器、GSM射頻模塊、供電模塊、閃存、ZIF連接器、天線接口6部分組成;通過ZIF連接器與GSM基帶處理器、GSM射頻模塊、供電模塊、閃存、天線接口相連接。
圖5 GSM模塊電路
2 系統(tǒng)的軟件實現(xiàn)及方法
如圖6所示,銀行卡和手機(jī)號綁定后,客戶端通過GSM發(fā)送自己的確認(rèn)碼、銀行服務(wù)系統(tǒng)號、確認(rèn)金額、物品名到移動公司,移動公司通過GSM將信息發(fā)送給銀行前端服務(wù)系統(tǒng);前端服務(wù)系統(tǒng)對確認(rèn)碼、銀行服務(wù)系統(tǒng)號、確認(rèn)金額進(jìn)行識別,并將正確譯碼發(fā)到銀行服務(wù)器終端,同時將金額和商品通過RF發(fā)送給售貨機(jī)上的讀寫器;收到確認(rèn)信息的前端服務(wù)系統(tǒng)再將反饋信息通過GSM送給客戶端;一旦客戶端再次確認(rèn),信息將再次傳送給服務(wù)器終端和售貨機(jī)上的讀寫器;售貨機(jī)上的讀寫器向售貨機(jī)發(fā)送出貨命令,服務(wù)器終端扣除與手機(jī)卡綁定的銀行卡上的金額,同時售貨機(jī)上的讀寫器將售貨信息物品名稱及售貨時間存入售貨機(jī)上的數(shù)據(jù)庫中,從而客戶完成自動售貨。
2.1 系統(tǒng)各部分的實現(xiàn)方法
(1) 銀行前端服務(wù)系統(tǒng)的實現(xiàn)方法。圖2中銀行前端服務(wù)系統(tǒng)收到GSM信息后進(jìn)入信息預(yù)處理模塊,通過解碼確認(rèn)后將銀行卡信息和物品信息分別通過串口和RFID讀/寫模塊傳送給服務(wù)器終端和自動售貨機(jī)上的讀寫器,數(shù)據(jù)存儲模塊對所獲信息進(jìn)行暫存或緩存,若出現(xiàn)數(shù)據(jù)錯誤,ARM主控模塊將會通過中斷啟動報警與時鐘模塊,并要求客戶重新發(fā)送;若前端服務(wù)系統(tǒng)不能正常工作時,復(fù)位電路進(jìn)行復(fù)位;USB是與外界進(jìn)行信息數(shù)據(jù)更新的接口、電源為整個系統(tǒng)供電。
圖6 實現(xiàn)自動售貨的流程圖
(2) 自動售貨機(jī)上讀寫器的實現(xiàn)方法。
如圖3所示,收發(fā)天線獲得同頻率的能量被激活;射頻收發(fā)模塊將自身編碼等信息經(jīng)調(diào)制通過天線發(fā)出;RFID讀/寫模塊接收到其載波信號,雙方根據(jù)邏輯運算判斷信息的合法性;RFID讀/寫模塊將物品相關(guān)信息按照ISO1800-6 B標(biāo)準(zhǔn)通過收發(fā)天線傳送到射頻收發(fā)模塊,射頻收發(fā)模塊對接收的信號進(jìn)行解調(diào)和解碼,然后經(jīng)EMC濾波并向RFID讀寫模塊發(fā)送確認(rèn)信號,將物品信息和控制信息送到自動售貨機(jī)的控制模塊,發(fā)出命令來控制執(zhí)行機(jī)構(gòu)動作,并將信息存入數(shù)據(jù)存儲模塊。圖4的nRF2401功能模塊就是在頻率2.45 GHz下實現(xiàn)數(shù)據(jù)的穩(wěn)定、準(zhǔn)確交互。
2.2 GSM模塊電路的實現(xiàn)方法
圖5所示的GSM模塊電路是將GSM射頻芯片、基帶處理芯片、存儲器、功放器件集成到一起上,GSM模塊具有發(fā)送SMS短信,語音通話,GPRS數(shù)據(jù)傳輸?shù)然贕SM網(wǎng)絡(luò)進(jìn)行通信的所有功能。該系統(tǒng)通過ARM中的RS 232串口與GSM模塊通信,使用標(biāo)準(zhǔn)的AT命令來控制GSM模塊實現(xiàn)各種無線通信功能。模塊上電10 ms后電池電壓必須大于3 V,為了正常工作,在第15腳(IGT)加時長至少為100 ms的低電平信號,且該信號下降沿時間小于1 ms 。啟動后,第15腳的信號應(yīng)保持高電平。基帶處理器集成一個與ISO 7816-3 IC Card 標(biāo)準(zhǔn)兼容的SIM 接口。為了適合外部的SIM接口。在GSM11.11 為SIM 卡預(yù)留5個引腳的基礎(chǔ)上,ZIF連接器為SIM卡接口預(yù)留了6個引腳,所添加的CCIN 引腳用來檢測SIM卡支架中是否插有SIM卡。
2.3 系統(tǒng)的軟件驅(qū)動開發(fā)
系統(tǒng)中的GSM網(wǎng)絡(luò)模塊已經(jīng)相當(dāng)成熟,所以,這里主要敘述RF無線射頻的驅(qū)動開發(fā)。需要發(fā)送的信息數(shù)據(jù)是確認(rèn)碼、服務(wù)號、確認(rèn)金額、物品和日期,采用nRF2401作為核心芯片,其驅(qū)動程序開發(fā)涉及到nRF2401的初始化、nRF2401工作模式的配置、nRF2401數(shù)據(jù)收發(fā)操作等。
在初始化中有nRF2401_init( )初始化函數(shù)、nRF2401_ON( )上電函數(shù)、nRF2401_OFF( )掉電函數(shù)。初始化I/O將會把nRF2401用到的所有接口初始化為對應(yīng)的輸入/輸出屬性;還要將nRF2401上電,即置PWR_UP管腳為高電平,且上電以后才能對nRF2401進(jìn)行控制和讀/寫操作;nRF2401共有18 B命令字,程序中設(shè)置一個命令字?jǐn)?shù)組InitData[15],數(shù)組中的值分別對應(yīng)配置信息,如0x08(bit)對應(yīng)通道1,2的接收數(shù)據(jù)寬度,0x4f對應(yīng)接收通道選擇(b15)為通道一,收發(fā)模式(b14)為Shock Burst模式,波特率選擇(b13)為250 Kb/s,晶振頻率(b12~b10)為16 MHz,發(fā)射功率(b9~b8)為0 dBm。
在工作模式的配置中有寫命令字函數(shù)nRF2401_WriteComm and()、設(shè)置工作方式函數(shù)nRF2401_Mode()。nRF2401_WriteCommand()負(fù)責(zé)對nRF2401進(jìn)行初始化配置,將初始化中的InitData[15]一次寫入控制字緩沖區(qū)。圖7為nRF2401寫命令字時序圖,圖中當(dāng)PWR_UP 為高、CE 為低時,置位CS,芯片處于命令字寫入狀態(tài),調(diào)用函數(shù)nRF2401_WriteByte(InitData[i]),通過通道1向芯片的控制字緩沖區(qū)寫入命令字,按照由高位到低位的順序,命令字全部寫入后,將CS置低,nRF2401芯片將會根據(jù)命令字配置相應(yīng)的內(nèi)部模塊。第一次配置結(jié)束后,只有最后2 B的命令字可以更改,前16 B的修改無效,如需修改前16 B的命令字,則需掉電后重新上電,才能對芯片進(jìn)行徹底初始化操作。nRF2401_Mode()通過改變InitData[14]的最低位(bit0)來設(shè)置發(fā)送或接收模式。
圖7 nRF2401寫命令字時序圖
數(shù)據(jù)收發(fā)操作包括數(shù)據(jù)發(fā)送和數(shù)據(jù)接收,在數(shù)據(jù)發(fā)送操作中,nRF2401采用Shock Burst 方式發(fā)送數(shù)據(jù),由處理器向nRF2401發(fā)送數(shù)據(jù)的函數(shù)有:
void nRF2401_SendByte(unsigned int TxData) //發(fā)送一個字節(jié)數(shù)據(jù)到nRF2401
void nRF2401_SendWord(unsigned int TxData) //發(fā)送一個字?jǐn)?shù)據(jù)到nRF2401
void nRF2401_SendBuffer_Byte(unsigned int TxData[],unsigned int DataByte) //發(fā)送1字節(jié)數(shù)組
void nRF2401_SendBuffer_Word(unsigned int TxData[],unsigned int DataWord) //發(fā)送1個字?jǐn)?shù)組
發(fā)送數(shù)據(jù)的時序圖如圖8所示。
圖8 處理器向nRF2401發(fā)送數(shù)據(jù)時序圖
圖8中,MSB→LSB的數(shù)據(jù)格式位,地址高位在前,An~A0為接收機(jī)地址,不超過40位,數(shù)據(jù)在后且高位在前,Dm~D0為待發(fā)送數(shù)據(jù),數(shù)據(jù)為測試結(jié)果或時間。當(dāng)處理器將數(shù)據(jù)發(fā)送至nRF2401后,nRF2401會進(jìn)行打包發(fā)射,其數(shù)據(jù)格式如圖9所示。
圖9 打包的數(shù)據(jù)格式圖
圖9中PRE為8位的校驗頭;CRC為8位或16位的校驗尾,在Shock Burst模式下由nRF2401自動添加。在發(fā)送過程中要注意[10]: Address,Data,CRC的位數(shù)之和不超過256;Address長度必須和目標(biāo)接接收通道的地址一致;Data長度必須和目標(biāo)接收通道的數(shù)據(jù)寬度一致;發(fā)射端和接收端的RF頻率須一致,如兩端均采用通道1,則二者控制字的bit7~bit1要一致,如接收端采用通道2,則發(fā)射端bit7~bit1值比接收端bit7~bit1值大8。對外打包發(fā)射函數(shù)為:
void nRF2401_SetAddress(unsigned
int Adress[ ],unsigned int AddrByte)
//設(shè)置目標(biāo)地址函數(shù),其中Address[ ]數(shù)組為目標(biāo)nRF2401地址,AddrByte為有效地址的字節(jié)數(shù)。
void nRF2401_SendByte(unsigned int TxData) //用于向nRF2401發(fā)送1幀數(shù)據(jù)(目標(biāo)地址+1個字節(jié)數(shù)據(jù)TxData);
void nRF2401_SendWord(unsigned int TxData)
//用于向nRF2401發(fā)送1幀數(shù)據(jù)(目標(biāo)地址+1個字?jǐn)?shù)據(jù)TxData);
void nRF2401_SendBuffer_Byte(unsigned int TxData[ ],unsigned int DataByte)
//用于向nRF2401發(fā)送1幀數(shù)據(jù)(目標(biāo)地址+1個字節(jié)數(shù)組TxData[ ]);
void nRF2401_SendBuffer_Word(unsigned int TxData[ ],unsigned int DataWord)
//用于向nRF2401發(fā)送1幀數(shù)據(jù)(目標(biāo)地址+1個字?jǐn)?shù)組TxData[ ])。
當(dāng)接收端數(shù)據(jù)成功后,會置位數(shù)據(jù)請求管腳DR1/DR2,處理器通過查詢這兩個狀態(tài)接收數(shù)據(jù)。對于數(shù)據(jù)接收需以下函數(shù):
unsigned int nRF2401_RxStatus()
//判斷nRF2401是否有數(shù)據(jù)接收
void nRF2401_ReceiveByte(unsigned int RxData[ ]) //以字節(jié)方式從nRF2401讀出數(shù)據(jù),
接收數(shù)據(jù)存儲在數(shù)組RxData[ ]中;
void nRF2401_ReceiveWord(unsigned int RxData[ ])//以字方式從nRF2401讀出數(shù)據(jù),接收數(shù)據(jù)存儲在數(shù)組RxData[ ]中。
接收數(shù)據(jù)的時序如圖10所示。
圖10 處理器從nRF2401讀取數(shù)據(jù)時序圖
該設(shè)計用到的μClinux的RF射頻傳輸設(shè)備的主設(shè)備號是160,首先創(chuàng)建設(shè)備文件節(jié)點:“mknod /dev/nRF2401 c 160 0” ;然后,創(chuàng)建頭文件nRF2401.h和驅(qū)動文件nRF2401.c,初始化、配置、數(shù)據(jù)發(fā)送與接收等函數(shù)均編輯在驅(qū)動文件nRF2401.c中;最后,建立Makefile文件進(jìn)行編譯,得到RF設(shè)備驅(qū)動程序模塊nRF2401,在系統(tǒng)中加載“insmod nRF2401”即可使用。
3 結(jié) 語
綜上所述,該系統(tǒng)通過GSM網(wǎng)絡(luò)和RF網(wǎng)絡(luò),采用嵌入式實時操作系統(tǒng)可快捷、有效地實現(xiàn)客戶端手機(jī)、銀行服務(wù)系統(tǒng)與自動售貨機(jī)之間的信息數(shù)據(jù)的交互。正常通信下,可保存60 000 個以上商品與用戶信息。手機(jī)支付觀念的成熟使得用手機(jī)支付逐漸成為一個標(biāo)準(zhǔn)的支付手段,具有一定的應(yīng)用前景。
參考文獻(xiàn)
[1]李科.基于RFID的“U”時代移動支付研究[J].通訊管理與技術(shù),2008(2):37-38.
[2]THORSTEN St
ke. Extending the EPC network the potential of RFID in anti-counterfeiting ACM Symposium on Applied Computing, 2005(3):1607-1612.
[3]游戰(zhàn)清.無線射頻識別技術(shù)(RFID)理論與應(yīng)用[M].北京:電子工業(yè)出版社,2004.
[4]郎為民.射頻識別(RFID)技術(shù)原理與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2006.
[5]RAZA Nadeem, BRADSHAW Viv, HAGUE Matthew, et al. Applications of RFID technology[M].[ S.l.] : Institution of Electrical Engineers, 1999.
[6]蔣皓石,張成,林嘉宇.無線射頻識別技術(shù)及其應(yīng)用和發(fā)展趨勢[J].電子技術(shù)應(yīng)用,2005,31(5):1-3.
[7]田利海,關(guān)強(qiáng).RFID系統(tǒng)中的頻段特點及主要應(yīng)用領(lǐng)域[EB/OL].[ 2005-07-21] .http://www.net.ccew.com.cn.
[8]LEAVER Sharyn. Evaluating RFID middleware[ M] . USA: Forrester, 2004.
[9]FINLENZELL Klaus. RFID-handbuch grundlagen und praktische anwendungen induktiver funkanlagen, transponder und kontaktloser chipkarten[ M] .[ S.l.] :[ s.n.] , 2002.
[10]張鵬舉.基于ARM+μCLinux的智能乙醇電子鼻系統(tǒng)的研究與實現(xiàn)[D].杭州:浙江理工大學(xué),2009.