基于ARM+GPRS的感應(yīng)式IC卡自動售貨機(jī)的設(shè)計與應(yīng)用
文章出處:http://m.botanicstilllife.com 作者:李戰(zhàn)明 馬林東 王棟 張應(yīng)和 人氣: 發(fā)表時間:2011年05月17日
自動售貨機(jī)方便快捷,可以每天24小時售貨,被稱為“永不下班的超級營業(yè)員”,這種前衛(wèi)的零售方式在發(fā)達(dá)國家已經(jīng)十分普及。
我國從90年代初期從國外引進(jìn)第一臺自動售貨機(jī)到現(xiàn)今國內(nèi)自主研發(fā)或代理國外的自動售貨機(jī),已經(jīng)開始遍布機(jī)場,商場等一些公共場所。然而這些售貨機(jī)終端大都采用CAN總線或采用485總線連接控制主機(jī),由于分布零散等因素造成系統(tǒng)的建設(shè)投資大、運營費用高監(jiān)控維護(hù)不及時等缺點,另外這些售貨機(jī)都存在只接受硬幣和小額面值鈔票等缺點,直接影響了自動售貨機(jī)的銷售數(shù)量,間接制約了其發(fā)展速度。
針對這種情況現(xiàn)提出采用現(xiàn)代前沿的GPRS無線網(wǎng)絡(luò)通信技術(shù)與非接觸式IC卡相結(jié)合的方式,由于GPRS網(wǎng)絡(luò)采用分組交換技術(shù)特別適合于間斷的、突發(fā)性的或頻繁的、少量的數(shù)據(jù)傳輸,也適用于偶爾的大數(shù)據(jù)量傳輸。具有永遠(yuǎn)在線、信號質(zhì)量好、快速登錄、按流量收費等特點,保證了系統(tǒng)的實時性和穩(wěn)定性,同時采用IC卡的交易方式對于消費者十分便利,因此研究開發(fā)基于這種方式下的各類自動售貨機(jī)具有明顯的現(xiàn)實意義和商用價值。
1系統(tǒng)網(wǎng)絡(luò)方案
從整體角度來看,采用C/S結(jié)構(gòu)來組網(wǎng)。C/S模式主要由客戶程序Client、服務(wù)器管理程序Server和中間件Middleware 3個部件組成??蛻魬?yīng)用程序是系統(tǒng)中用戶與數(shù)據(jù)進(jìn)行交互的部件。服務(wù)器程序負(fù)責(zé)有效地管理系統(tǒng)資源,C/S的優(yōu)點主要就是交互性強(qiáng)、提供了安全的存取模式及網(wǎng)絡(luò)通信量低?;贕PRS移動網(wǎng)絡(luò)的自動售貨機(jī)可分為售貨機(jī)終端、GSM/GPRS網(wǎng)絡(luò)、INTERNET網(wǎng)絡(luò)和服務(wù)器四大塊。如圖1所示。
組網(wǎng)方案:向中國移動申請APN專網(wǎng)業(yè)務(wù),分配專用的APN并申請綁定移動內(nèi)網(wǎng)的固定IP地址。服務(wù)器用MODEM撥號上網(wǎng),得到其公網(wǎng)固定IP;自動售貨機(jī)直接向服務(wù)器發(fā)起TCP連接。
這種方案結(jié)構(gòu)簡單,中間環(huán)節(jié)少,容易實現(xiàn),利用CRC校驗實現(xiàn)數(shù)據(jù)的安全傳輸。利用程序設(shè)計實現(xiàn)數(shù)據(jù)的等間隔傳輸,且實時性完全可以保證,即使發(fā)生數(shù)據(jù)丟失,也可以利用重發(fā)的方式來補(bǔ)償。
2硬件電路設(shè)計
2.1硬件概述
刷卡自動售貨機(jī)工作流程大概如下:首先用戶選擇所要的商品按下相應(yīng)的按鍵之后選擇投幣或者刷卡,如果用戶選擇刷卡則自動銷售完之后顯示用戶卡余額,及語音提示物品領(lǐng)取等信息。來源一卡通世界。因此根據(jù)售貨機(jī)的銷售特點將硬件分為兩大部分:主板模塊和驅(qū)動模塊,驅(qū)動模塊主要包括所要驅(qū)動的控制對象,包括直流電機(jī)、電磁開關(guān)、硬(紙)幣機(jī)及液晶顯示屏等。主板主要用于用戶的刷卡消費及數(shù)據(jù)的上傳以及完成對驅(qū)動板的各種控制指令,現(xiàn)主要介紹主板的設(shè)計過程。
設(shè)計的目的是要實現(xiàn)自動售貨機(jī)刷卡消費并將消費信息、交易明細(xì)等記錄通過GPRS上傳,充值列表、黑名單列表等控制信息也通過GPRS下傳到售貨機(jī)。因此按功能分為射頻卡讀寫子模塊和GPRS通信子模塊。兩個模塊都直接與自動售貨機(jī)的主控制器相連,這種設(shè)計方案具有硬件實現(xiàn)簡單,易于調(diào)試另外為軟件的編寫也提供了很大的便利,這一切應(yīng)歸功于近年來基于ARM7內(nèi)核的微處理器的廣泛應(yīng)用。另外系統(tǒng)還需有數(shù)據(jù)存儲部分,時鐘部分以及電源部分和接口部分電路構(gòu)成,整體結(jié)構(gòu)見圖2。
2.2硬件選取與設(shè)計
2.2.1微處理器選型:單片機(jī)是整個系統(tǒng)的核心,其性能會直接影響到整個系統(tǒng)的性能。為了滿足串口、程序運行的快速性、內(nèi)帶大容量的flash以及調(diào)試方便等要求,MCU選為PhilipsLPC2292,LPC2292是基于一個支持實時仿真和跟蹤的16/32位ARM7TDMI—STM的CPU,并帶有256 k字節(jié)(kB)嵌入的高速Flash存儲器。128位寬度的存儲器接口和獨特的加速結(jié)構(gòu)使32位代碼能夠在最大時鐘速率下運行損失很小。包含2個16C550工業(yè)標(biāo)準(zhǔn)UART,通過片內(nèi)boot裝載程序?qū)崿F(xiàn)在系統(tǒng)編程(ISP)和在應(yīng)用編程(IAP)等優(yōu)點。在系統(tǒng)中LPC2292主要作用如下。
(1) 通過串口1與SIM300C模塊相連,通過AT指令完成對SIM300C的初始化以及基于TCP/IP協(xié)議的數(shù)據(jù)收發(fā)功能。
(2) 串口2擴(kuò)展MAX3232標(biāo)準(zhǔn)串口與驅(qū)動板相連,完成對驅(qū)動板的控制。
(3) 擴(kuò)展刷卡接口完成與刷卡模塊之間的相互通信從而控制驅(qū)動電路和驅(qū)動SIM300C模塊進(jìn)行數(shù)據(jù)的傳輸。
(4) 根據(jù)遠(yuǎn)程控制指令完成其他操作。
2.2.2 通信模塊的設(shè)計:通信模塊部分選用SIMCOM有限公司提供的SIM300C GPRS模塊,來源一卡通世界。具有標(biāo)準(zhǔn)AT指令接口,自動檢測SIM卡(包括6腳和8腳SIM卡),可以提供GSM語音、短消息和GPRS上網(wǎng)等業(yè)務(wù)。與LPC2292之間通過AT指令來通信。該模塊體積小,便于安裝,另外SIM300C最大的特點在于內(nèi)嵌TCP/IP協(xié)議,特別適合于數(shù)據(jù)傳輸方面,方便用戶的使用,降低了產(chǎn)品開發(fā)成本,縮短開發(fā)時間。
為提高GPRS模塊的穩(wěn)定性和抗干擾性,應(yīng)在SIM卡座和SIM300C接口部分敷銅并且兩者之間的距離不應(yīng)超過10 cm,電源和地線采用50 mil走線為好。SIM300C的工作電壓在3.4—4.5 V之間,在突然數(shù)據(jù)傳輸發(fā)生時必須要保證提供給模塊2A的尖峰電流,處理好這些問題后SIM300C在點火啟動后便可以正常工作。
2.2.3數(shù)據(jù)存儲及時鐘部分設(shè)計:數(shù)據(jù)存儲部分用來對消費信息,刷卡數(shù)據(jù),黑名單等一些數(shù)據(jù)保存,防止在GPRS網(wǎng)路故障和突然斷電的情況下造成數(shù)據(jù)的丟失。在此選用了1 M X16大小的CMOS多功能Flash(MPF)芯片SST39VFl60(TSOP封裝),此j簽片具有10 000個周期的耐用性和大于100年的數(shù)據(jù)保持時問,編程或擦除的操作電壓為2.7—3.6 V,符合1M×16存儲器的JEDEC標(biāo)準(zhǔn)的管腳分配。
由于自動售貨機(jī)上傳的交易信息中需要有時間信息,因此要設(shè)計時鐘電路部分來記錄詳細(xì)的事件發(fā)生時間,在此選用DALLAS公司的涓流充電芯片,內(nèi)含一個實時時鐘/日歷和31字節(jié)靜態(tài)RAM,為了防止外接電池的充電,應(yīng)該在其正極放置二極管,另外也可以用程序來控制反充電。
2.2.4接口部分和電源部分的設(shè)計:為了調(diào)試程序及下載程序的方便,必須拓展ARM7TDMI JTAG調(diào)試接口,調(diào)試系統(tǒng)包括:調(diào)試主機(jī)、協(xié)議轉(zhuǎn)換器和調(diào)試目標(biāo)。調(diào)試主機(jī)是一臺運行調(diào)試軟件(如ARM公司開發(fā)的ADS調(diào)試軟件)的計算機(jī)。調(diào)試主機(jī)可以發(fā)出一些高層次的調(diào)試指令,如設(shè)置斷點、訪問內(nèi)存等。協(xié)議轉(zhuǎn)換器(MULTI-ICE)用來將調(diào)試主機(jī)發(fā)出的高層次調(diào)試指令轉(zhuǎn)換成底層的ARM JTAG調(diào)試命令。調(diào)試目標(biāo)在此就是指基于ARM7TDMI內(nèi)核的LPC2292目標(biāo)開發(fā)板。經(jīng)過協(xié)議轉(zhuǎn)換器進(jìn)行命令解釋主機(jī)運行的調(diào)試軟件就可以通過mG接口直接和ARM7TDMI內(nèi)核對話。極大地方便了程序的調(diào)試。
為方便與驅(qū)動板的通信,還必須在主板上拓展一個9針串口,具體電路很簡單,在此不做介紹。對于一個系統(tǒng)來說,電源部分是至關(guān)重要的,在本系統(tǒng)中模塊分別需要5 V,3.3 V以及1.8 V的電壓支持。其中5 V電壓由開關(guān)電源構(gòu)成,只有得到純凈的5 V電壓才能得到其他兩種電壓,其它兩種電壓由模擬電源構(gòu)成。5 V的電壓供給刷卡模塊、串口等;3.3 V,1.8 V分別供給LPC2292的內(nèi)核以及I/O口。電源輸入端采用(8—40)V的直流電源供電,選用LM2676系列電源芯片來獲取5 V電壓,選用AMSlll7—3.3 V和AMSlll7—1.8 V來獲取3.3 V和1.8 V的電壓。各種電壓的輸出口與地應(yīng)該接入三個0.1μf的去耦電容。
2.2.5刷卡模塊的設(shè)計:由于刷卡模塊的重要性需要單獨制作一快高頻板,刷卡模塊的核心芯片為RC500讀卡芯片和支持在線編程的STC89LES58RD+單片機(jī)??珊芎玫闹С謱Ψ墙佑|式Ic的操作。通過主板拓展的5針插口與其通信。
3軟件設(shè)計
軟件主要采用C語言編寫,除完成對ARM芯片及各個子模塊的初始化之外主要編寫與服務(wù)器之間的通信程序,軟件必須保證數(shù)據(jù)傳輸?shù)每煽啃浴踩砸约癎PRS通信鏈路得穩(wěn)定性等問題。主流程圖如圖3所示。
3.1數(shù)據(jù)處理及錯誤控制
自動售貨機(jī)與服務(wù)器問的通信為一種擴(kuò)展的Client/Server(C/S)模式,Sever作為主,主動向作為Client的售機(jī)發(fā)送指令,再根據(jù)售貨機(jī)回應(yīng)進(jìn)行相應(yīng)的處理。其相應(yīng)的錯誤控制機(jī)制如下。發(fā)送方只在收到對方的錯誤應(yīng)答時才重發(fā),超時未收到對方應(yīng)答不進(jìn)行重發(fā),如果超時無應(yīng)答,發(fā)送方即切斷當(dāng)前鏈路,從而拋棄了原有鏈路中可能延后到達(dá)的垃圾數(shù)據(jù),出現(xiàn)此情況時,放棄本次通信任務(wù),向上層返回錯誤,迫使售貨機(jī)重建新的鏈接,使收發(fā)雙方重新初始化緩沖區(qū)并在新鏈接上重新開始通信,數(shù)據(jù)報文格式如圖4。
字段簡要說明
報頭標(biāo)志:前三字節(jié)固定,后兩字節(jié)為協(xié)議版本號。
報文長度:表示從報頭到校驗和的整個報文長度的16進(jìn)制數(shù)。
報文S.N:接收的數(shù)據(jù)報文的報文序列號報文類型:接收的數(shù)據(jù)報文的報文類型
VM ID:自動售貨機(jī)編號,10位定長BCD格式數(shù)字代碼。
應(yīng)答字:比如11為應(yīng)答成功;BitO一7位置0時表示相應(yīng)處理出錯
附加內(nèi)容:自定義內(nèi)容,對不同的報文類型的應(yīng)答有不同的內(nèi)容定義。
CRC交驗和:不包括校驗和本身的CRC校驗和與報文中的CRC校驗和相等為正確。
所有的管理命令報文均為簡短的命令,售貨機(jī)則應(yīng)立即用簡短的應(yīng)答予以確認(rèn),即便是為了實現(xiàn)與售貨機(jī)的數(shù)據(jù)交換,也不由管理命令報文本身完成,管理命令只是用于向售貨機(jī)下達(dá)通知,需進(jìn)行的實際數(shù)據(jù)交換工作在收到售貨機(jī)回應(yīng)命令后在進(jìn)行處理,對時鐘同步命令售貨機(jī)必須立即執(zhí)行。圖6、圖7是GPRS接受數(shù)據(jù)和發(fā)送數(shù)據(jù)的流程。
3.2軟件設(shè)計要點
SIM300C是SIMCOM有限公司開發(fā)的支持GPRS上網(wǎng)、GSM語音及支持標(biāo)準(zhǔn)AT指令的模塊,因此編程應(yīng)用很方便。SIM300C也是通過標(biāo)準(zhǔn)的232接口和MCU通信的,具體的指令系統(tǒng)是AT指令集。通常情況下為了簡化硬件的設(shè)計而采用3線制232接口。也就是是說沒有多余的硬件措施來檢測SIM300C的串口是否正常工作。
然而SIM300C只有在串口功能被打開的情況下才能正常的發(fā)出命令,而在有些時候是會關(guān)閉串口的,比如電壓突然過低(這在搜索網(wǎng)絡(luò)或撥打電話時有可能出現(xiàn))或者溫度的影響等等。在這些情況下,SIM300C的串口就關(guān)閉而不能工作了。如果在這時在等待AT指令的返回,程序很有可能就進(jìn)入死循環(huán)。為此必須加入超時控制的代碼來避免這種情況的發(fā)生,也就是在發(fā)送完一條AT指令后。在規(guī)定的時間范圍內(nèi)等待接收SIM300C對該條指令的回應(yīng),結(jié)合系統(tǒng)實際運行證明這完全是可行的。
另外在實際應(yīng)用中發(fā)現(xiàn),一旦由于某種原因SIM300C不工作了,這時候最可靠的方法是重新啟動SIM300C,觸發(fā)點火信號,讓其重新工作。
4結(jié)論
目前,介紹的基于GPRS網(wǎng)絡(luò)的刷卡自動售貨機(jī)已投入運行,部分通訊數(shù)據(jù)還在調(diào)試,該系統(tǒng)能夠及時將用戶的刷卡消費記錄、黑名單以及與管理中心之間的通訊數(shù)據(jù)都能夠及時上傳和下傳,管理中心能夠及時了解分布在各點的售貨機(jī)的運行情況,方便維護(hù),該系統(tǒng)具有成本低廉,功能易于擴(kuò)展,在即將到來的基于無線的自動售貨機(jī)市場有廣泛的應(yīng)用前景。