張熙玲,施偉斌
(上海理工大學(xué) 光電信息與計算機工程學(xué)院,上海 200090)
隨著計算機、信息及通信技術(shù)的發(fā)展,信息的處理能力、儲存能力、傳輸通信能力日益增強。全面、有效的信息采集和輸入成為信息系統(tǒng)的關(guān)鍵。
條碼讀取系統(tǒng)可應(yīng)用與庫存控制及商品追溯等場合[1-2]。條碼符號制作容易,掃描操作簡單易行,信息采集速度快采集信息量大,設(shè)備結(jié)構(gòu)簡單,成本低[3]。在大型超市、物流系統(tǒng)和身份識別中應(yīng)用廣泛。傳統(tǒng)的在線采集終端與計算機之間由電纜連接傳輸數(shù)據(jù),不能脫機使用[4],現(xiàn)場操作不方便,將條碼識別技術(shù)與無線通信技術(shù)相結(jié)合,可以實現(xiàn)對物品信息快速、準確、實時錄入,并且能夠在一定程度上降低設(shè)備成本,加快倉庫管理信息化。
本文設(shè)計的條碼掃描系統(tǒng)是基于無線傳感網(wǎng)絡(luò)的,其主要采用CC2430 芯片為無線發(fā)射芯片。通信協(xié)議為基于無線傳感網(wǎng)操作系統(tǒng)TinyOS 的匯聚樹協(xié)議。TinyOS 系統(tǒng)以其能耗低、可靠性高、成本低、組網(wǎng)快、網(wǎng)絡(luò)容量大的特點成為該智能條碼采集系統(tǒng)的首選。
本文設(shè)計的基于WSN(Wireless Sensor Network)的智能條形碼識別系統(tǒng)由硬件和軟件兩部分組成,其中硬件負責(zé)數(shù)據(jù)的采集和發(fā)送,主要包括無線條碼掃描終端、中繼節(jié)點、網(wǎng)關(guān)接點、PC 機部分。軟件負責(zé)數(shù)據(jù)收發(fā)的協(xié)議、算法和操作界面設(shè)計。系統(tǒng)總體結(jié)構(gòu)如圖1 所示。
圖1 系統(tǒng)總體結(jié)構(gòu)圖
1.1.1 掃描器終端設(shè)計
掃描器終端主要掃描模塊、電源模塊、無線射頻收發(fā)模塊組成。其中掃描模塊又包括光源、光學(xué)掃描系統(tǒng)、光接收系統(tǒng)、光電轉(zhuǎn)換、信號放大及整形部分、譯碼部分等。光源發(fā)出的光通過光學(xué)掃描系統(tǒng)照射到黑白相間的條形碼上被散射,由光接收系統(tǒng)接收足夠多的散射光,接收到的光信號需要經(jīng)過光電轉(zhuǎn)換器轉(zhuǎn)換成電信號,電信號經(jīng)過整形濾波,所得電信號經(jīng)過量化,由譯碼單元譯出其中所含有的條碼信息。所含條碼信息通過串口與基于CC2430 芯片設(shè)計的無線射頻收發(fā)模塊相連[5]。
圖2 掃描器內(nèi)部結(jié)構(gòu)圖
1.1.2 無線射頻節(jié)點硬件設(shè)計
傳感器節(jié)點是無線傳感器網(wǎng)絡(luò)的基本單元,它負責(zé)傳感和信息預(yù)處理,響應(yīng)監(jiān)控主機的指令,發(fā)送數(shù)據(jù)等[6]。本系統(tǒng)中的節(jié)點主要有三種,分別是集中在掃描器中的無線發(fā)射節(jié)點,作為路由的中繼節(jié)點還有具有信息匯聚作用的網(wǎng)關(guān)節(jié)點。
掃描器中的無線發(fā)射節(jié)點主要由CC2430 芯片及其外圍電路組成,節(jié)點與掃描模塊通過串口進行通信,負責(zé)對條碼信息的無線傳輸。芯片的外圍電路包括電源、晶振、阻抗匹配網(wǎng)絡(luò)、天線等,其中天線與CC2430之間采用巴倫電路,來完成雙端口到單端口的轉(zhuǎn)換[7]。
中繼節(jié)點也是主要由CC2430 芯片及其外圍電路組成。除了和無線發(fā)射節(jié)點一樣的外圍電路,還增加調(diào)試接口與復(fù)位按鈕,以方便程序更新和軟件調(diào)試。
網(wǎng)關(guān)節(jié)點該節(jié)點除了CC2430 芯片及其外圍設(shè)備外,新增了串口和USB 接口,方便了與現(xiàn)有PC 終端設(shè)備的匹配,另外也有負責(zé)調(diào)試程序的接口。電源由USB 接口連接PC 設(shè)備來提供,節(jié)點主要負責(zé)接收無線發(fā)射節(jié)點或中繼節(jié)點發(fā)出的條碼信息,并將其傳給上位機。各節(jié)點的硬件框圖結(jié)構(gòu)如圖3 所示。
系統(tǒng)的下位機程序是由nesC 編程語言編寫的。上位機軟件是由C#編程語言編寫,其通信過程是條碼掃描模塊采集條碼信息,然后將條碼信息發(fā)送至射頻模塊,射頻模塊將信息匯總根據(jù)鏈路狀態(tài),通過中繼節(jié)點轉(zhuǎn)發(fā)至網(wǎng)關(guān)節(jié)點或直接發(fā)送至網(wǎng)關(guān)節(jié)點。應(yīng)用基于CTP 協(xié)議的多跳自組網(wǎng)絡(luò),動態(tài)鏈路更加靈活、拓撲結(jié)構(gòu)更加穩(wěn)定。基于TinyOS 操作系統(tǒng)的2.4 GHz 的無線通信方式具有低功耗,傳輸范圍廣、自組網(wǎng)的特點。多個掃描器同時工作,網(wǎng)關(guān)節(jié)點將數(shù)據(jù)通過USB 接口傳給PC 機,數(shù)據(jù)經(jīng)過處理在上位機界面上顯示商品所需詳細信息。工作軟件有出庫、入庫、查詢、智能提醒等功能,更具有人性化和智能化,可廣泛應(yīng)用于大型超市物流的收貨、入庫、出庫、查尋商品詳細信息、智能提醒、銷售狀況等,還可以應(yīng)用于倉儲物流、食品安全、醫(yī)療衛(wèi)生、服裝、建材、資產(chǎn)管理等方面。
圖3 節(jié)點硬件結(jié)構(gòu)示意圖
1.2.1 下位機程序設(shè)計
nesC 語言是對C 語言的擴展,是無線傳感器網(wǎng)絡(luò)操作系統(tǒng)TinyOS 的實現(xiàn)語言,它體現(xiàn)了TinyOS 的結(jié)構(gòu)化概念和執(zhí)行模型。TinyOS 是美國加州大學(xué)伯克利分校特別為無線傳感器網(wǎng)絡(luò)節(jié)點設(shè)計的一款事件驅(qū)動型的開源操作系統(tǒng),并采用nesC 語言重新編寫,以適應(yīng)傳感器節(jié)點資源有限的特點。
nesC 語言把組件化、模塊化的思想和基于事件驅(qū)動的執(zhí)行模型結(jié)合了起來,并通過組織、命名和連接組件形成一個嵌入式網(wǎng)絡(luò)系統(tǒng),能較好地支持TinyOS 的并發(fā)運行模式[8]。
1.2.2 CTP 通信協(xié)議的原理
系統(tǒng)節(jié)點之間的通信協(xié)議為CTP 協(xié)議。CTP(Collection Tree Protocol,匯聚樹協(xié)議)是TinyOS 中一種基于無線傳感器網(wǎng)絡(luò)應(yīng)用的數(shù)據(jù)匯聚協(xié)議。
CTP 是一種基于樹狀結(jié)構(gòu)的匯聚協(xié)議,通過將網(wǎng)絡(luò)中的一些節(jié)點設(shè)為根節(jié)點,其他節(jié)點根據(jù)路由梯度形成到根節(jié)點的路由,從而形成到根節(jié)點的匯聚樹網(wǎng)絡(luò)。而在本系統(tǒng)中,網(wǎng)關(guān)節(jié)點相當于匯聚根節(jié)點,經(jīng)條碼掃描模塊處理后的條碼信息經(jīng)過無線發(fā)射節(jié)點直接或通過中繼節(jié)點轉(zhuǎn)發(fā)至網(wǎng)關(guān)節(jié)點。CTP 提供了到根節(jié)點盡可能多跳的數(shù)據(jù)傳輸,具有保證傳輸可靠性的路由選擇機制。此外,CTP 檢查包重復(fù),抑制重復(fù)傳輸和路由循環(huán)。
通過使用CTP 的多跳網(wǎng)絡(luò)協(xié)議,使得條碼掃描器的通信距離,大幅增加,從而使得使用范圍得到擴展。
1.2.3 CTP 匯聚算法
CTP 協(xié)議使用期望傳輸值(Expected Transmissions,ETX)作為路由梯度。根節(jié)點的ETX 值為0,其它節(jié)點的ETX 值等于其父節(jié)點的鏈路ETX 值加上其到父節(jié)點的鏈路ETX 值。這種加法機制需要假設(shè)節(jié)點使用了鏈路層重傳。如果要對有效的路由進行選擇,CTP 協(xié)議應(yīng)當選擇ETX 值最小的路由[8]。
在程序初始化階段,網(wǎng)絡(luò)中每個節(jié)點廣播自己到匯聚節(jié)點的路徑的ETX 值。每個節(jié)點收到廣播包之后,依據(jù)鄰居節(jié)點廣播的路徑ETX 值,動態(tài)選擇父節(jié)點,使得自己到匯聚節(jié)點的路徑ETX 盡量小。通過不斷廣播路由幀來更新節(jié)點的路由信息,從而使得網(wǎng)絡(luò)中的每個節(jié)點都能夠選擇到一條道匯聚節(jié)點ETX 之和最小的路徑,即最佳路由。
1.2.4 上位機程序設(shè)計
C#是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\行于.NET Framework 之上的高級程序設(shè)計語言。
本文所介紹的智能條碼掃描系統(tǒng)主要用于大型倉庫、超市、物流等方面。其上位機界面中包括商品的出庫、入庫、查詢商品詳細信息、智能提醒等功能,其軟件界面如圖4 所示。
軟件的出庫功能主要用于商品運出倉庫是的清點,選擇出庫功能,掃描條碼信息,會自動進行計數(shù)并存儲在數(shù)據(jù)庫當中。入庫功能中商品分兩種情況:一種是在數(shù)據(jù)庫中的商品;另一種是不在從數(shù)據(jù)庫中的商品。在數(shù)據(jù)庫中的商品錄入直接進行計算并保存在數(shù)據(jù)庫中,對于不在數(shù)據(jù)庫中的新商品入庫時軟件會提示“這是新物品,請補充商品信息后再入庫”。查詢功能主要用于了解商品的詳細信息或商品的溯源。點擊查詢功能,掃描條碼則會自動彈出窗口顯示商品的條碼、名稱、產(chǎn)地、庫存、供應(yīng)商等詳細的產(chǎn)品信息。另外軟件還具有自動識別商品的庫存位置,方便管理貨物。軟件根據(jù)對商品的銷量分析,得出商品的進貨閾值,通過設(shè)置閾值,可以及時提醒商家進貨,促進貨物的高效流通。
圖4 上位機界面
系統(tǒng)測試選擇多個實驗場景進行測試,主要分為室內(nèi)和室外兩種場景。室內(nèi)選擇樓宇內(nèi)100 m 長廊,室外選擇室外學(xué)校望江臺走道。在上位機上面選擇入庫功能,分別測試在室內(nèi)和室外點對點的數(shù)據(jù)收發(fā)情況,以及室外點對點和多跳協(xié)議的數(shù)據(jù)收發(fā)情況。具體實驗場景如圖5 所示。
圖5 試驗場景
數(shù)據(jù)的采集分室內(nèi)室外,通信方式為點對點和多跳兩類。其中室內(nèi)的采集地點在100 m 樓宇走廊,通信方式為點對點。點對點通信方式的的采集距離分為50 m、75 m、100 m。多跳的通信方式距離選擇為50 m、75 m、100 m、150 m、200 m、250 m、300 m,每15 m 分布一個轉(zhuǎn)發(fā)節(jié)點。在每個距離點上每次連續(xù)掃描100次,累計進行5 次重復(fù)性實驗,計算丟包率。具體數(shù)據(jù)如下表所示。
表1 室內(nèi)走廊點對點實驗數(shù)據(jù)
表2 室外走道點對點實驗數(shù)據(jù)
表3 室外走道多跳協(xié)議實驗數(shù)據(jù)
由表1 和表2 對比可以看出,對于點對點通信,室內(nèi)走廊比室外走道的丟包率要高,室外150 ~200 m 之間誤碼率顯著提高。由表2 和表3 對比可以看出相對于點對點通信,基于CTP 的多跳傳輸可以使丟包率顯著下降,丟包率相同的條件下,多跳傳輸使傳輸距離大幅增加,原理上來說多跳傳輸可以達到幾千米甚至更遠。
至于在實際應(yīng)用中數(shù)據(jù)丟失的問題,可以通過在掃描器中增加Flash,將當日掃描的條碼信息依次保存在Flash 中。上位機根據(jù)數(shù)據(jù)庫中收到的數(shù)據(jù)包來判斷接收到的數(shù)據(jù)包是否完整,如果沒有發(fā)送成功,上位機軟件通過控制網(wǎng)關(guān)給掃描器發(fā)送指令,請求重新發(fā)送丟失的數(shù)據(jù)包。
本智能條形碼識別系統(tǒng)傳感器節(jié)點設(shè)計采用低功耗、低成本的CC2430 芯片。無線通信協(xié)議采用CTP 匯聚樹協(xié)議,節(jié)點之間組成多跳的無線傳感器網(wǎng)絡(luò),大幅增加了條碼掃描系統(tǒng)的通信范圍。智能而友好的人機交互界面使得該系統(tǒng)更具有廣泛的應(yīng)用價值??蓮V泛應(yīng)用于大型的倉庫、物流、超市等行業(yè),具有良好的應(yīng)用前景。
[1] 張成海,張鐸.現(xiàn)代自動識別技術(shù)與應(yīng)用[M].北京:清華大學(xué)出版社,2003.
[2] 易昌惠.條碼識別技術(shù)的發(fā)展[J].企業(yè)標準化,2004(2):62-64.
[3] 崔更申,黃廷輝,彭建.基于嵌入式的ZigBee 無線條碼掃描儀系統(tǒng)的設(shè)計[J].電子器件,2007,30(5):1971-1974.
[4] 齊華,王秋娟,劉軍.基于CC2430 的無線條碼數(shù)據(jù)采集器的設(shè)計[J].電子技術(shù)與應(yīng)用,2011,37(2):120-122,126.
[5] 李俊宏,湛邵斌.條碼技術(shù)的發(fā)展及應(yīng)用[J].計算機與數(shù)字工程,2009,37(12):115-118.
[6] 穆虹,陳向東,劉勝,等.基于CC2430 無線傳感器網(wǎng)絡(luò)監(jiān)控系統(tǒng)設(shè)計[J].通信技術(shù),2011(11):107-109.
[7] 梁光勝,劉丹娟,郝福珍.基于CC2430 的ZigBee 無線網(wǎng)絡(luò)節(jié)點設(shè)計[J].電子設(shè)計工程,2010,18(2):16-18.
[8] 潘浩,董齊芬,張貴軍,等.無線傳感器網(wǎng)絡(luò)操作系統(tǒng)TinyOS[M].北京:清華大學(xué)出版社,2011.