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