孫科偉,李建海
(空軍工程大學航空航天工程學院,陜西 西安 710038)
責任編輯:許 盈
隨著人們消費水平的提高,大型超市購物越來越受到人們的青睞,可是每逢周末,超市收銀臺前長長的隊伍對人們購物的心情和超市的效益產(chǎn)生了極大的影響,而且有時想買一樣東西卻苦于找不到地方。針對超市購物的上述不便,人們研究出一種超市智能購物車,它不僅能很快指出需要購買商品的位置和具體信息,引導人們很快找到商品,同時智能購物車還具有自動結賬、查詢等功能,大大節(jié)省了購物的時間,使人們的購物輕松而愉快。國外已經(jīng)有幾種智能購物車面市,但由于其技術復雜和成本較高等原因并沒有在國內(nèi)迅速普及。本文設計了一種基于AVR單片機的智能購物系統(tǒng),利用ZigBee無線傳輸系統(tǒng)和紅外定位技術。采用迪文HMI觸摸屏作為人機界面,結合PC機的強大數(shù)據(jù)處理能力實現(xiàn)了低成本的超市智能購物系統(tǒng)。
本系統(tǒng)采用ATmega128單片機為主控芯片,通過電子掃描槍將商品的條形碼識別后傳給ATmega128單片機,單片機把收到的條形碼信息通過串口傳輸給ZigBee模塊,ZigBee無線傳輸模塊將條形碼信息傳給PC機,PC機連接著ZigBee通信模塊負責商品信息的實時傳輸,在接收到條形碼信息后迅速通過數(shù)據(jù)庫查詢商品信息,同時將查詢的信息發(fā)送給ATmega128單片機,ATmega128單片機在接收到PC機發(fā)來的商品信息后通過其另一個串口控制觸摸屏顯示商品信息和消費總價。同時可以通過觸摸屏查詢商品打折信息和商品的具體位置。系統(tǒng)總體框圖如圖1所示。
圖1 系統(tǒng)總體框圖
系統(tǒng)硬件電路設計與應用主要包括串口通信電路設計,ZigBee無線通信模塊應用設計,迪文串口顯示終端應用,條形碼掃描電路設計和紅外定位電路設計。
ATmega128單片機是美國Atmel公司生產(chǎn)的高性能、低功耗8位單片機,具有先進的 RISC結構[1]。AT-mega128單片機具有兩個可編程的串行USART,可以方便地在顯示終端和無線傳輸模塊之間傳輸數(shù)據(jù)。兼容IEEE 1149.1標準的JTAG接口,遵循JTAG標準的邊界掃描功能,通過JTAG接口可以實現(xiàn)在線仿真調(diào)試和程序下載[2]。本文主要是通過ATmega128單片機的兩個串口分別控制ZigBee無線模塊和觸摸屏。單片機和PC機通信時,由于單片機輸入輸出電平是TTL電平,PC機配置的是RS-232標準接口[3],兩者的電器規(guī)則不同,要想進行通信必須要通過電平轉換,通常采用MAX232電平轉換芯片進行轉換,電路連接原理圖如圖2所示。
圖2 串口電平轉換電路設計
本文采用DRF1601系列ZigBee模塊,它是基于TI公司CC2530芯片,運行ZigBee2007/PRO協(xié)議的ZigBee模塊,簡單易用,不用考慮ZigBee協(xié)議,串口數(shù)據(jù)透明傳輸,能夠自動組網(wǎng),所有的模塊上電即自動組網(wǎng),Coordinator自動給所有的節(jié)點分配地址,不需要用戶手動分配地址、網(wǎng)絡加入、應答等專業(yè)ZigBee組網(wǎng)流程[4];傳輸?shù)目梢暰嚯x為400 m,滿足此超市購物環(huán)境所需要求。此無線模塊通過串口與單片機和PC機進行通信,測試模塊時可借助串口調(diào)試助手在PC機上調(diào)試。具體方法為:1)PC機向串口調(diào)試助手發(fā)送FC 02 91 01 XX XX,其中XX XX為4位十六進制數(shù)(不包括0xFFFE),若串口接收到的返回值是后4位時則表示成功設定模塊的PAN ID;2)同方法1)發(fā)送FC 01 91 06 XX指令設置模塊的串口波特率,XX的具體取值參見表1。
表1 串口波特率設置
串口默認波特率是38 400 baud。DRF1601模塊主要有兩種數(shù)據(jù)傳輸方式,一種是數(shù)據(jù)透明傳輸,另一種是點對點數(shù)據(jù)傳輸[5],本系統(tǒng)只需要PC機和各個ZigBee模塊之間通信,所以選擇點對點數(shù)據(jù)傳輸,點對點傳輸適合于ZigBee網(wǎng)絡內(nèi)任何兩點之間的數(shù)據(jù)傳輸;數(shù)據(jù)透明傳輸?shù)慕邮辗街罃?shù)據(jù)來源的地址(增加最后2 byte);數(shù)據(jù)包長度最大36 byte(數(shù)據(jù)區(qū)長度32 byte);如在一個網(wǎng)絡中從301A節(jié)點發(fā)送數(shù)據(jù)到51 2B節(jié)點,應當發(fā)送FD 0A 51 2B 01 02 03 04 05 06 07 08 09 10,其中FD是點對點數(shù)據(jù)傳輸指令,0A是數(shù)據(jù)長度,512B是目標地址,地址512B收到的數(shù)據(jù)為發(fā)送數(shù)據(jù)和源地址。具體過程如圖3所示。
圖3 ZigBee網(wǎng)絡節(jié)點數(shù)據(jù)傳輸示意圖
ZigBee標準規(guī)定可以在一個單一網(wǎng)絡中容納65 535個節(jié)點,完全可以滿足大型超市的購物需求,由于ZigBee網(wǎng)絡采用了CSMA/CA機制(帶有沖突避免的載波偵聽多路訪問技術),確保了多點發(fā)送,利用ACK信號盡量避免發(fā)生數(shù)據(jù)沖突,使系統(tǒng)更加穩(wěn)定可靠[6]。
單片機通過串口和觸摸屏進行通信,迪文智能顯示終端采用的是四線電阻式觸摸屏,觸摸按鍵就是在屏幕上顯示一個按鈕的圖標,當用戶點擊該圖標時,該顯示終端會通過串口向單片機發(fā)送一串十六進制數(shù)[7],其中包含觸摸的位置(即其在觸摸屏上的X,Y坐標),當單片機收到其坐標后按預設的功能做出相應的操作。迪文串口顯示終端通過迪文開發(fā)演示助理對其通信參數(shù)和顯示參數(shù)進行設置,觸摸屏所需圖片也是通過此軟件進行下載和配發(fā)。具體設置和調(diào)試步驟如下:1)連接電源,將顯示終端串口和計算機九針串口直接相連。2)通過串口調(diào)試助手設置初始波特率為115 200 baud,選擇和計算機連接的COM口,可以先下發(fā)十六進制方式的AA 52清屏指令,觀看屏幕的變化,調(diào)試通過時屏幕顯示為藍屏。3)串口調(diào)試成功后可通過迪文HMI開發(fā)指南,找到對應的指令執(zhí)行相應的操作。4)圖片下發(fā),將設置好格式的圖片依據(jù)所需的連接順序下載到顯示終端。例如點顯示的指令為0x50,0x51,0x74,0x72,具體在某固定坐標顯示某一點的指令為AA 51 00 00 00 00 00 03 00 06 00 05 00 20 CC 33 C3 3C,表示以前景色顯示3個點,其坐標為(0,0),(3,6),(5,32)。
條形碼的信息是通過電子掃描槍掃描后通過PS2口將信息輸入到單片機,單片機通過外部中斷程序接收到通斷碼后將其轉換成十進制數(shù)并將轉換后的數(shù)通過ZigBee模塊發(fā)送到PC機。PS2接口與單片機的電路連接原理圖如圖4所示。其中各個引腳和單片機的連接為:引腳1接PA0;引腳3接地;引腳4接VCC;引腳5為CLK,接在128單片機的外部中斷0。
圖4 PS2接口與單片機連接圖
本文所采用的ZigBee無線模塊使用的是CC2530芯片,由于其強大的數(shù)據(jù)傳輸和沖突避免能力,其定位相對復雜。所以針對本系統(tǒng)應用的特點,采用的是紅外線室內(nèi)定位技術,其定位原理是:紅外線發(fā)射器發(fā)射調(diào)制的紅外射線,通過安裝在室內(nèi)的光學傳感器接收進行定位,在本系統(tǒng)中,在超市貨架上每隔3 m放置一個紅外發(fā)射器,每個紅外發(fā)射器有固定的標識ID,在智能購物車上和紅外發(fā)射器同等高度安裝有紅外接收器,根據(jù)接收的紅外編碼不同可確定消費者的具體位置[8]。紅外發(fā)射采用低功耗的通用編碼芯片PT2262,最多可以有12位(A0~A11)三態(tài)地址端管腳,任意組合可以提供531 441個地址。PT2262發(fā)出一個完整的編碼信號包括地址碼、數(shù)據(jù)碼、同步碼3部分。解碼部分有軟件解碼和硬件解碼兩種方法[9],軟件解碼可通過單片機識別紅外接收管接收的高低脈沖實現(xiàn)解碼,為了減少軟件設計的復雜度,本系統(tǒng)采用的是與PT2262配套的PT2272芯片進行硬件解碼。紅外編解碼的電路原理圖如圖5、圖6所示。圖5中編碼地址由1~8腳控制,通過懸空、接正電源、接地3種狀態(tài)來控制,地址編碼的不重復度為6 561組,滿足此系統(tǒng)的要求。解碼芯片PT2272接收到信號后,當兩次地址比較的結果相同時,VT腳輸出高電平,同時輸出數(shù)據(jù)引腳端也輸出高電平,具體電路如圖6所示。
本文采用的開發(fā)軟件是ICCAVR軟件,編譯運行后將生成的HEX文件通過AVRstudio軟件下載到單片機中。本系統(tǒng)的軟件設計主要包括單片機串口通信程序、外部中斷接收掃描數(shù)據(jù)程序、迪文串口顯示終端控制程序和PC機數(shù)據(jù)庫程序設計。
主程序主要完成系統(tǒng)變量的初始化,通過電子掃描槍掃描條形碼數(shù)據(jù)并通過ZigBee無線數(shù)傳模塊與PC機建立通信。返回的信息在液晶顯示終端顯示。主程序流程如圖7所示。
觸摸屏通過串口與單片機進行通信,實現(xiàn)對商品信息的顯示、商品信息的模糊查詢、消費詳情的實時顯示、購買商品的增加與刪除、智能購物車的定位與導航等。觸摸屏的顯示程序框圖如圖8所示。
每一步操作都是通過串口向液晶屏發(fā)送一串十六進制數(shù),例如,液晶屏接收起始指令為 0xCC,0x33,0xC3,0x3C。同理可參照相應的指令集實現(xiàn)相應的操作。
觸摸屏的控制程序放置在串口中斷服務程序中,當用手按壓時,觸摸屏向單片機發(fā)送一串十六進制數(shù),單片機接收到數(shù)據(jù)后立即進入串口中斷,在中斷服務程序中,通過接收緩存器,將每次接收到的數(shù)據(jù)儲存起來,當收到結束標志時表示一段信息接收完畢,將緩存器的數(shù)據(jù)通過另一個串口發(fā)送到PC機,等待PC機將相關信息返回后采取相應的操作。
掃描槍通過PS2口與單片機進行數(shù)據(jù)傳輸,掃描的條形碼信息為13位的十進制數(shù),單片機接收數(shù)據(jù)采用中斷方式接收,中斷服務程序的具體流程圖如圖9所示。
圖9 外部中斷程序流程圖
采用VB語言結合Excel電子表格編寫程序,VB有較強的數(shù)據(jù)管理、控制和應用程序開發(fā)能力,Excel具有強大的數(shù)據(jù)存儲和處理能力,Excel自身的對象庫可以通過VB程序進行調(diào)用和管理。在VB中處理Excel主要是通過Application對象來處理,Application對象指代整個應用程序,通過Application對象實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)從VB到Excel的直接輸出[10],本文主要是將超市的商品信息通過Excel電子表格存儲,運用VB程序對其進行調(diào)用和管理,當掃描槍掃描條形碼信息并傳送給主機服務器后,服務器通過VB程序搜索數(shù)據(jù)信息并實時傳送給智能購物車,智能購物車將收到的商品信息在觸摸屏上顯示,由用戶對其進行相應的操作。當模糊查詢時PC機上軟件的運行界面如圖10所示,PC機將查詢到的數(shù)據(jù)傳送給觸摸屏顯示。
圖10 PC機數(shù)據(jù)庫查詢界面(截圖)
系統(tǒng)經(jīng)過綜合調(diào)試后實現(xiàn)了智能購物的需求,數(shù)據(jù)能夠無差錯地在PC機端和智能購物車之間進行無線傳輸,智能顯示終端也能準確無誤地顯示消費情況,經(jīng)測試智能購物車的定位可達2 m,滿足人們超市購物的需求,可實現(xiàn)無差錯的掃描條形碼信息。操作智能顯示終端有誤時系統(tǒng)自動報錯,該系統(tǒng)操作簡單,系統(tǒng)穩(wěn)定性較強,隨著人們消費水平的提高和對超市購物的需求,本系統(tǒng)將得到廣泛的應用。
[1]胡漢才.高檔AVR單片機原理及應用[M].北京:清華大學出版社,2007.
[2]丁易新.基于ATmega128單片機的機器人路徑規(guī)劃控制器的硬件設計[J]. 信息化研究,2009(1):48-50.
[3]趙陽,范多旺,王智淵.基于ATmega128的天然氣供氣無線監(jiān)控系統(tǒng)[J]. 機械與電子,2010(1):147-49.
[4]李新.基于CC2530的ZigBee網(wǎng)絡節(jié)點設計[J].可編程控制器與工廠自動化,2011(3):97-99.
[5] DRF1600 系列 ZigBee模塊使用說明[EB/OL].[2011-12-12].http://wenku.baidu.com/view/ab802f2d647d27284b73510b.html.
[6]喬磊.基于ZigBee技術的無線點餐系統(tǒng)設計[J].現(xiàn)代電子技術,2011(3):68-71.
[7]紀松波,侯婷.智能液晶觸摸顯示終端與單片機接口的設計[J].現(xiàn)代電子技術,2010(12):16-18.
[8]安然然,馮露.基于AVR單片機的無線通道控制系統(tǒng)的設計[J].沈陽化工學院學報,2009(1):76-79.
[9]郭昕剛,宋宇.基于PT2262/2272的防盜器[J].長春大學學報,2010(6):79-80.
[10]劉丹丹,胡彩虹,張成才.基于Excel和數(shù)據(jù)庫在VB中制作報表[J]. 氣象與環(huán)境科學,2007(3):90-93.