孫科偉,李建海
(空軍工程大學航空航天工程學院,陜西 西安 710038)
責任編輯:許 盈
隨著人們消費水平的提高,大型超市購物越來越受到人們的青睞,可是每逢周末,超市收銀臺前長長的隊伍對人們購物的心情和超市的效益產生了極大的影響,而且有時想買一樣東西卻苦于找不到地方。針對超市購物的上述不便,人們研究出一種超市智能購物車,它不僅能很快指出需要購買商品的位置和具體信息,引導人們很快找到商品,同時智能購物車還具有自動結賬、查詢等功能,大大節省了購物的時間,使人們的購物輕松而愉快。國外已經有幾種智能購物車面市,但由于其技術復雜和成本較高等原因并沒有在國內迅速普及。本文設計了一種基于AVR單片機的智能購物系統,利用ZigBee無線傳輸系統和紅外定位技術。采用迪文HMI觸摸屏作為人機界面,結合PC機的強大數據處理能力實現了低成本的超市智能購物系統。
本系統采用ATmega128單片機為主控芯片,通過電子掃描槍將商品的條形碼識別后傳給ATmega128單片機,單片機把收到的條形碼信息通過串口傳輸給ZigBee模塊,ZigBee無線傳輸模塊將條形碼信息傳給PC機,PC機連接著ZigBee通信模塊負責商品信息的實時傳輸,在接收到條形碼信息后迅速通過數據庫查詢商品信息,同時將查詢的信息發送給ATmega128單片機,ATmega128單片機在接收到PC機發來的商品信息后通過其另一個串口控制觸摸屏顯示商品信息和消費總價。同時可以通過觸摸屏查詢商品打折信息和商品的具體位置。系統總體框圖如圖1所示。

圖1 系統總體框圖
系統硬件電路設計與應用主要包括串口通信電路設計,ZigBee無線通信模塊應用設計,迪文串口顯示終端應用,條形碼掃描電路設計和紅外定位電路設計。
ATmega128單片機是美國Atmel公司生產的高性能、低功耗8位單片機,具有先進的 RISC結構[1]。AT-mega128單片機具有兩個可編程的串行USART,可以方便地在顯示終端和無線傳輸模塊之間傳輸數據。兼容IEEE 1149.1標準的JTAG接口,遵循JTAG標準的邊界掃描功能,通過JTAG接口可以實現在線仿真調試和程序下載[2]。本文主要是通過ATmega128單片機的兩個串口分別控制ZigBee無線模塊和觸摸屏。單片機和PC機通信時,由于單片機輸入輸出電平是TTL電平,PC機配置的是RS-232標準接口[3],兩者的電器規則不同,要想進行通信必須要通過電平轉換,通常采用MAX232電平轉換芯片進行轉換,電路連接原理圖如圖2所示。

圖2 串口電平轉換電路設計
本文采用DRF1601系列ZigBee模塊,它是基于TI公司CC2530芯片,運行ZigBee2007/PRO協議的ZigBee模塊,簡單易用,不用考慮ZigBee協議,串口數據透明傳輸,能夠自動組網,所有的模塊上電即自動組網,Coordinator自動給所有的節點分配地址,不需要用戶手動分配地址、網絡加入、應答等專業ZigBee組網流程[4];傳輸的可視距離為400 m,滿足此超市購物環境所需要求。此無線模塊通過串口與單片機和PC機進行通信,測試模塊時可借助串口調試助手在PC機上調試。具體方法為:1)PC機向串口調試助手發送FC 02 91 01 XX XX,其中XX XX為4位十六進制數(不包括0xFFFE),若串口接收到的返回值是后4位時則表示成功設定模塊的PAN ID;2)同方法1)發送FC 01 91 06 XX指令設置模塊的串口波特率,XX的具體取值參見表1。

表1 串口波特率設置
串口默認波特率是38 400 baud。DRF1601模塊主要有兩種數據傳輸方式,一種是數據透明傳輸,另一種是點對點數據傳輸[5],本系統只需要PC機和各個ZigBee模塊之間通信,所以選擇點對點數據傳輸,點對點傳輸適合于ZigBee網絡內任何兩點之間的數據傳輸;數據透明傳輸的接收方知道數據來源的地址(增加最后2 byte);數據包長度最大36 byte(數據區長度32 byte);如在一個網絡中從301A節點發送數據到51 2B節點,應當發送FD 0A 51 2B 01 02 03 04 05 06 07 08 09 10,其中FD是點對點數據傳輸指令,0A是數據長度,512B是目標地址,地址512B收到的數據為發送數據和源地址。具體過程如圖3所示。

圖3 ZigBee網絡節點數據傳輸示意圖
ZigBee標準規定可以在一個單一網絡中容納65 535個節點,完全可以滿足大型超市的購物需求,由于ZigBee網絡采用了CSMA/CA機制(帶有沖突避免的載波偵聽多路訪問技術),確保了多點發送,利用ACK信號盡量避免發生數據沖突,使系統更加穩定可靠[6]。
單片機通過串口和觸摸屏進行通信,迪文智能顯示終端采用的是四線電阻式觸摸屏,觸摸按鍵就是在屏幕上顯示一個按鈕的圖標,當用戶點擊該圖標時,該顯示終端會通過串口向單片機發送一串十六進制數[7],其中包含觸摸的位置(即其在觸摸屏上的X,Y坐標),當單片機收到其坐標后按預設的功能做出相應的操作。迪文串口顯示終端通過迪文開發演示助理對其通信參數和顯示參數進行設置,觸摸屏所需圖片也是通過此軟件進行下載和配發。具體設置和調試步驟如下:1)連接電源,將顯示終端串口和計算機九針串口直接相連。2)通過串口調試助手設置初始波特率為115 200 baud,選擇和計算機連接的COM口,可以先下發十六進制方式的AA 52清屏指令,觀看屏幕的變化,調試通過時屏幕顯示為藍屏。3)串口調試成功后可通過迪文HMI開發指南,找到對應的指令執行相應的操作。4)圖片下發,將設置好格式的圖片依據所需的連接順序下載到顯示終端。例如點顯示的指令為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口將信息輸入到單片機,單片機通過外部中斷程序接收到通斷碼后將其轉換成十進制數并將轉換后的數通過ZigBee模塊發送到PC機。PS2接口與單片機的電路連接原理圖如圖4所示。其中各個引腳和單片機的連接為:引腳1接PA0;引腳3接地;引腳4接VCC;引腳5為CLK,接在128單片機的外部中斷0。

圖4 PS2接口與單片機連接圖
本文所采用的ZigBee無線模塊使用的是CC2530芯片,由于其強大的數據傳輸和沖突避免能力,其定位相對復雜。所以針對本系統應用的特點,采用的是紅外線室內定位技術,其定位原理是:紅外線發射器發射調制的紅外射線,通過安裝在室內的光學傳感器接收進行定位,在本系統中,在超市貨架上每隔3 m放置一個紅外發射器,每個紅外發射器有固定的標識ID,在智能購物車上和紅外發射器同等高度安裝有紅外接收器,根據接收的紅外編碼不同可確定消費者的具體位置[8]。紅外發射采用低功耗的通用編碼芯片PT2262,最多可以有12位(A0~A11)三態地址端管腳,任意組合可以提供531 441個地址。PT2262發出一個完整的編碼信號包括地址碼、數據碼、同步碼3部分。解碼部分有軟件解碼和硬件解碼兩種方法[9],軟件解碼可通過單片機識別紅外接收管接收的高低脈沖實現解碼,為了減少軟件設計的復雜度,本系統采用的是與PT2262配套的PT2272芯片進行硬件解碼。紅外編解碼的電路原理圖如圖5、圖6所示。圖5中編碼地址由1~8腳控制,通過懸空、接正電源、接地3種狀態來控制,地址編碼的不重復度為6 561組,滿足此系統的要求。解碼芯片PT2272接收到信號后,當兩次地址比較的結果相同時,VT腳輸出高電平,同時輸出數據引腳端也輸出高電平,具體電路如圖6所示。


本文采用的開發軟件是ICCAVR軟件,編譯運行后將生成的HEX文件通過AVRstudio軟件下載到單片機中。本系統的軟件設計主要包括單片機串口通信程序、外部中斷接收掃描數據程序、迪文串口顯示終端控制程序和PC機數據庫程序設計。
主程序主要完成系統變量的初始化,通過電子掃描槍掃描條形碼數據并通過ZigBee無線數傳模塊與PC機建立通信。返回的信息在液晶顯示終端顯示。主程序流程如圖7所示。
觸摸屏通過串口與單片機進行通信,實現對商品信息的顯示、商品信息的模糊查詢、消費詳情的實時顯示、購買商品的增加與刪除、智能購物車的定位與導航等。觸摸屏的顯示程序框圖如圖8所示。
每一步操作都是通過串口向液晶屏發送一串十六進制數,例如,液晶屏接收起始指令為 0xCC,0x33,0xC3,0x3C。同理可參照相應的指令集實現相應的操作。


觸摸屏的控制程序放置在串口中斷服務程序中,當用手按壓時,觸摸屏向單片機發送一串十六進制數,單片機接收到數據后立即進入串口中斷,在中斷服務程序中,通過接收緩存器,將每次接收到的數據儲存起來,當收到結束標志時表示一段信息接收完畢,將緩存器的數據通過另一個串口發送到PC機,等待PC機將相關信息返回后采取相應的操作。
掃描槍通過PS2口與單片機進行數據傳輸,掃描的條形碼信息為13位的十進制數,單片機接收數據采用中斷方式接收,中斷服務程序的具體流程圖如圖9所示。

圖9 外部中斷程序流程圖
采用VB語言結合Excel電子表格編寫程序,VB有較強的數據管理、控制和應用程序開發能力,Excel具有強大的數據存儲和處理能力,Excel自身的對象庫可以通過VB程序進行調用和管理。在VB中處理Excel主要是通過Application對象來處理,Application對象指代整個應用程序,通過Application對象實現數據庫數據從VB到Excel的直接輸出[10],本文主要是將超市的商品信息通過Excel電子表格存儲,運用VB程序對其進行調用和管理,當掃描槍掃描條形碼信息并傳送給主機服務器后,服務器通過VB程序搜索數據信息并實時傳送給智能購物車,智能購物車將收到的商品信息在觸摸屏上顯示,由用戶對其進行相應的操作。當模糊查詢時PC機上軟件的運行界面如圖10所示,PC機將查詢到的數據傳送給觸摸屏顯示。

圖10 PC機數據庫查詢界面(截圖)
系統經過綜合調試后實現了智能購物的需求,數據能夠無差錯地在PC機端和智能購物車之間進行無線傳輸,智能顯示終端也能準確無誤地顯示消費情況,經測試智能購物車的定位可達2 m,滿足人們超市購物的需求,可實現無差錯的掃描條形碼信息。操作智能顯示終端有誤時系統自動報錯,該系統操作簡單,系統穩定性較強,隨著人們消費水平的提高和對超市購物的需求,本系統將得到廣泛的應用。
[1]胡漢才.高檔AVR單片機原理及應用[M].北京:清華大學出版社,2007.
[2]丁易新.基于ATmega128單片機的機器人路徑規劃控制器的硬件設計[J]. 信息化研究,2009(1):48-50.
[3]趙陽,范多旺,王智淵.基于ATmega128的天然氣供氣無線監控系統[J]. 機械與電子,2010(1):147-49.
[4]李新.基于CC2530的ZigBee網絡節點設計[J].可編程控制器與工廠自動化,2011(3):97-99.
[5] DRF1600 系列 ZigBee模塊使用說明[EB/OL].[2011-12-12].http://wenku.baidu.com/view/ab802f2d647d27284b73510b.html.
[6]喬磊.基于ZigBee技術的無線點餐系統設計[J].現代電子技術,2011(3):68-71.
[7]紀松波,侯婷.智能液晶觸摸顯示終端與單片機接口的設計[J].現代電子技術,2010(12):16-18.
[8]安然然,馮露.基于AVR單片機的無線通道控制系統的設計[J].沈陽化工學院學報,2009(1):76-79.
[9]郭昕剛,宋宇.基于PT2262/2272的防盜器[J].長春大學學報,2010(6):79-80.
[10]劉丹丹,胡彩虹,張成才.基于Excel和數據庫在VB中制作報表[J]. 氣象與環境科學,2007(3):90-93.