楊韓伊,蔡博槐,陳廣杰,胡堅(jiān)濤,鄭集欣,陶銘
(東莞理工學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,東莞523808)
目前,隨著國內(nèi)機(jī)場旅客流量的增加,旅客行李的托運(yùn)數(shù)量也在急劇上升,這對現(xiàn)有的機(jī)場行李分揀系統(tǒng)是一次嚴(yán)峻的考驗(yàn)。傳統(tǒng)的條形碼標(biāo)簽分揀技術(shù)已不能滿足高準(zhǔn)確性和高實(shí)時(shí)性的需求,因此需要對現(xiàn)有機(jī)場行李分揀系統(tǒng)進(jìn)行升級。RFID 技術(shù)與行李標(biāo)簽相關(guān)技術(shù)的結(jié)合應(yīng)用,極大地推動了機(jī)場中行李分揀工作的進(jìn)程[1]。
物聯(lián)網(wǎng)的定義是通過射頻識別、紅外感應(yīng)器、全球定位系統(tǒng)、激光掃描器等信息傳感設(shè)備,按約定的協(xié)議,把任何物品與互聯(lián)網(wǎng)相連接,進(jìn)行信息交換和通信,以實(shí)現(xiàn)對物品的智能化識別、定位、跟蹤、監(jiān)控和管理的一種網(wǎng)絡(luò)[2]。隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,“物聯(lián)網(wǎng)+RFID”技術(shù)的結(jié)合應(yīng)用,可有效解決傳統(tǒng)機(jī)場行李分揀技術(shù)的弊端,提高行李分揀的準(zhǔn)確性和實(shí)時(shí)性。
本系統(tǒng)采用STM32F103ZET6 作為嵌入式MCU,使用RIFD RC522 芯片實(shí)現(xiàn)RFID 行李標(biāo)簽信息采集,通過ATK-ESP8266-V1.3 通信模塊實(shí)現(xiàn)無線傳輸功能,以Web 應(yīng)用程序頁面實(shí)時(shí)顯示采集信息。設(shè)計(jì)了基于超高頻RFID 的非接觸式機(jī)場行李自動分揀系統(tǒng),將RFID RC522 射頻模塊采集信息通過串口發(fā)送到STM32F103ZET6 單片機(jī),通過 ATK-ESP8266-V1.3 通信模塊將采集信息上傳到服務(wù)器端,連接本地?cái)?shù)據(jù)庫存儲,機(jī)場管理員可以通過Web 應(yīng)用程序登錄系統(tǒng),實(shí)時(shí)跟蹤旅客行李去向,以及查看旅客航班信息。
本系統(tǒng)擁有一個(gè)識別器、一個(gè)后臺和一個(gè)用戶端,設(shè)計(jì)組成主要包括舵機(jī)、電機(jī)、通信模塊和單片機(jī)。單片機(jī)是整個(gè)系統(tǒng)的關(guān)鍵核心,主要負(fù)責(zé)對采集數(shù)據(jù)的處理以及控制各元器件的運(yùn)作。在本系統(tǒng)中,單片機(jī)控制RFID 射頻識別芯片提取標(biāo)簽信息,并控制Wi-Fi通信模塊與服務(wù)器進(jìn)行交互,根據(jù)交互信息發(fā)送相應(yīng)的指令控制電機(jī)和舵機(jī)的工作。后臺為基于Spring-Boot 管理系統(tǒng),用戶端為Web頁面。系統(tǒng)總體設(shè)計(jì)如圖1 所示。
嵌入式微處理器是由通用計(jì)算機(jī)中的CPU 演變而來的。它的特征是具有32 位以上的處理器,具有較高的性能。與計(jì)算機(jī)處理器不同的是,在實(shí)際嵌入式應(yīng)用中,只保留和嵌入式應(yīng)用緊密相關(guān)的功能硬件,去除其他的冗余功能部分,這樣就以最低的功耗和資源實(shí)現(xiàn)嵌入式應(yīng)用的特殊要求[3]。本系統(tǒng)采用意法半導(dǎo)體(ST)公 司 出 品 的 STM32F103ZET6 芯 片 ,STM32F103ZET6 芯片采用 32 位的 ARM Cortex-M3 架構(gòu),程序內(nèi)存大小為512KB,存儲器容量為64KB,芯片的運(yùn)行頻率為72MHz;芯片內(nèi)置了三款定時(shí)器:基本定時(shí)器、通用定時(shí)器和高級定時(shí)器,其中通用定時(shí)器和高級定時(shí)器支持輸出多路的PWM;在嵌入式接口類型方面,支持 CAN、I2C、SPI、USART、USB 五類接口,其中電源通過USB 接口接入5V 電壓供電。
圖1 系統(tǒng)總體設(shè)計(jì)
無線射頻識別即射頻識別技術(shù)(Radio Frequency Identification,RFID),是自動識別技術(shù)的一種,通過無線射頻方式進(jìn)行非接觸雙向數(shù)據(jù)通信,利用無線射頻方式對記錄媒體(電子標(biāo)簽或射頻卡)進(jìn)行讀寫,從而達(dá)到識別目標(biāo)和數(shù)據(jù)交換的目的。無線射頻識別技術(shù)通過無線電波不接觸快速信息交換和存儲技術(shù),通過無線通信結(jié)合數(shù)據(jù)訪問技術(shù),然后連接數(shù)據(jù)庫系統(tǒng),加以實(shí)現(xiàn)非接觸式的雙向通信,從而達(dá)到了識別的目的,用于數(shù)據(jù)交換,串聯(lián)起一個(gè)極其復(fù)雜的系統(tǒng)。在識別系統(tǒng)中,通過電磁波實(shí)現(xiàn)電子標(biāo)簽的讀寫與通信[4]。本系統(tǒng)采用NXP 公司研發(fā)的 RFID RC522 芯片識別RFID 標(biāo)簽,RC522 是一款支持ISO14443A 協(xié)議的高頻射頻芯片,頻率為13.56MHz。在使用RC522 時(shí),將RC522 與單片機(jī)的SPI 串口連接。要想對模塊內(nèi)部的數(shù)據(jù)塊進(jìn)行讀寫,需要完成4 個(gè)步驟:尋卡、防沖突、選卡、讀/寫卡。
Wi-Fi 模塊又名串口Wi-Fi 模塊,屬于物聯(lián)網(wǎng)傳輸層,功能是將串口或TTL 電平轉(zhuǎn)為符合Wi-Fi 無線網(wǎng)絡(luò)通信標(biāo)準(zhǔn)的嵌入式模塊。本系統(tǒng)采用ATK-ESP8266-V1.3WIFI 通信模塊進(jìn)行數(shù)據(jù)傳輸和通信,ATKESP8266-V1.3 是星翼電子科技公司推出的一款高性能的UART-WIFI(串口-無線)模塊,模塊支持STA/AP/STA+AP 三種工作模式,內(nèi)置TCP/IP 協(xié)議棧,能夠?qū)崿F(xiàn)串口與Wi-Fi 之間的轉(zhuǎn)換。通過ATK-ESP8266-V1.3模塊,只是需要簡單的串口配置,即可通過網(wǎng)絡(luò)(Wi-Fi)傳輸自己的數(shù)據(jù)。ATK-ESP8266-V1.3 模塊支持LVTTL 串口,兼容3.3V 和5V 單片機(jī)系統(tǒng)。在使用前,需使用杜邦線將ATK-ESP8266-V1.3 接通3.3V 直流電源,接通后指示燈閃爍,之后需將ATK-ESP8266-V1.3 的TXD 引腳與單片機(jī)的RXD 引腳相連,RXD 引腳與單片機(jī)的TXD 引腳相連,GND 與單片機(jī)的GND 相連。工作模式選擇STA 模式,ATK-ESP8266-V1.3 模塊通過連接主機(jī)(電腦)熱點(diǎn)實(shí)現(xiàn)局域網(wǎng)無線通信,主機(jī)(電腦)可以通過局域網(wǎng)實(shí)現(xiàn)對設(shè)備的控制。
進(jìn)入AT 狀態(tài):將USB 串口線電腦相連,并安裝驅(qū)動程序。打開計(jì)算機(jī)設(shè)備管理器,點(diǎn)開COM 端口,設(shè)置波特率為 115200,發(fā)送 AT 指令查看 ATKESP8266-V1.3 模塊的運(yùn)行狀態(tài)。ATK-ESP8266-V1.3模塊通過AT 指令主要配置如表1 所示。
表1 AT 指令主要配置表
舵機(jī)是一種位置(角度)伺服的驅(qū)動器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)[5]。本系統(tǒng)中采用深圳市科比電子科技有限公司研發(fā)的MG90S模擬舵機(jī),在使用時(shí)舵機(jī)前,需將舵機(jī)的電源正極線連接單片機(jī)的5V 電源,將電源負(fù)極線連接單片機(jī)的GND,并將信號線連接單片機(jī)輸出PWM 信號的引腳。舵機(jī)用于驅(qū)動擋板擺動,在行李標(biāo)簽被識別后將行李擺入對應(yīng)的行李通道,實(shí)現(xiàn)行李分揀的目的。
直流電動機(jī)是將直流電能轉(zhuǎn)換為機(jī)械能的電動機(jī),因其良好的調(diào)速性能而在電力拖動中得到廣泛應(yīng)用。本系統(tǒng)中采用深圳市科比電子科技有限公司研發(fā)的775 直流電機(jī),該電機(jī)的額定功率為12V,啟動電流為10A。在使用電機(jī)前,需將電源正負(fù)極信號線與開關(guān)電源的正負(fù)極相連,并將信號線連接單片機(jī)輸出PWM 信號的引腳。電機(jī)用于驅(qū)動傳送轉(zhuǎn)盤來傳送行李,并可以通過調(diào)整PWM 信號控制電機(jī)的轉(zhuǎn)速。
單片機(jī)系統(tǒng)軟件設(shè)計(jì)主要用于為系統(tǒng)硬件分配資源以及控制系統(tǒng)硬件工作,各硬件之間通過軟件系統(tǒng)實(shí)現(xiàn)協(xié)同工作。本系統(tǒng)主要由定時(shí)器程序模塊、RFID射頻識別模塊、Wi-Fi 通信模塊、舵機(jī)模塊和電機(jī)模塊五部分組成。程序流程圖如圖2 所示。
系統(tǒng)運(yùn)行時(shí)會按照圖2 所示流程進(jìn)行控制,當(dāng)LED1 和LED2 均點(diǎn)亮?xí)r,意味著硬件系統(tǒng)已經(jīng)與服務(wù)端建立了網(wǎng)絡(luò)連接,系統(tǒng)進(jìn)入射頻掃描狀態(tài),開始正常工作。同時(shí),當(dāng)Wi-Fi 通信模塊接收到來自服務(wù)端的數(shù)據(jù)時(shí),系統(tǒng)進(jìn)入數(shù)據(jù)處理狀態(tài),解析服務(wù)端命令,更新行李列表。
當(dāng)RFID 射頻識別模塊識別到行李標(biāo)簽時(shí),系統(tǒng)進(jìn)入數(shù)據(jù)處理狀態(tài)。先查詢行李列表是否存在該標(biāo)簽,若不存在,即表示該標(biāo)簽是第一次掃描,未能知曉該標(biāo)簽信息,需與服務(wù)端進(jìn)行通信請求該標(biāo)簽相關(guān)信息;若存在,獲取該行李標(biāo)簽,通過異常判定邏輯判斷是否為異常行李,若是,進(jìn)行異常處理,否則進(jìn)入下一步。通過出倉判定邏輯判斷是否符合出倉要求,并進(jìn)行相應(yīng)處理。最后,更新行李列表。
在項(xiàng)目開發(fā)中,需要各硬件之間通信完成數(shù)據(jù)傳輸,數(shù)據(jù)傳輸需要合適穩(wěn)定的總線和靈活的通信協(xié)議。本系統(tǒng)中主要涉及到三類通信協(xié)議:一類是Wi-Fi傳輸模塊與主機(jī)通信所基于的TCP/IP 協(xié)議,一類是Wi-Fi 傳輸模塊與單片機(jī)串口通信基于的SPI 通信協(xié)議,一類是單片機(jī)之間串口通信所基于的USART 通信協(xié)議。
TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協(xié)議/網(wǎng)際協(xié)議)是指能夠在多個(gè)不同網(wǎng)絡(luò)間實(shí)現(xiàn)信息傳輸?shù)膮f(xié)議簇[6]。TCP/IP 傳輸協(xié)議對互聯(lián)網(wǎng)中各部分進(jìn)行通信的標(biāo)準(zhǔn)和方法進(jìn)行了規(guī)定。并且,TCP/IP 傳輸協(xié)議是保證網(wǎng)絡(luò)數(shù)據(jù)信息及時(shí)、完整傳輸?shù)膬蓚€(gè)重要的協(xié)議[7]。
SPI 是串行外設(shè)接口(Serial Peripheral Interface)的縮寫,是一種高速的、全雙工、同步的通信總線。SPI 是一種高速、高效率的串行接口技術(shù)。通常由一個(gè)主模塊和一個(gè)或多個(gè)從模塊組成,主模塊選擇一個(gè)從模塊進(jìn)行同步通信,從而完成數(shù)據(jù)的交換。
圖2 系統(tǒng)流程圖
USART(Universal Synchronous/Asynchronous Receiver/Transmitter,通用同步/異步串行接收/發(fā)送器),是一個(gè)全雙工通用同步/異步串行收發(fā)模塊,該接口是一個(gè)高度靈活的串行通信設(shè)備。串口在嵌入式系統(tǒng)當(dāng)中是一類重要的數(shù)據(jù)通信接口,其本質(zhì)功能是作為CPU和串行設(shè)備間的編碼轉(zhuǎn)換器。當(dāng)數(shù)據(jù)從CPU 經(jīng)過串行端口發(fā)送出去時(shí),字節(jié)數(shù)據(jù)轉(zhuǎn)換為串行的位;在接收數(shù)據(jù)時(shí),串行的位被轉(zhuǎn)換為字節(jié)數(shù)據(jù)。USART 串口協(xié)議層中串口數(shù)據(jù)包的基本組成為:起始位、結(jié)束位、有效數(shù)據(jù)和校驗(yàn)位。
在本系統(tǒng)中無線傳輸功能需要將RFID 射頻識別器采集到的信息發(fā)送到主機(jī),串口通信功能負(fù)責(zé)整合主機(jī)控制指令并指定舵機(jī)和電機(jī)工作,這兩部分是系統(tǒng)設(shè)計(jì)的重要環(huán)節(jié)。
后臺軟件的設(shè)計(jì)工具包括Visual Studio 2015 和IntelliJ IDEA,分別用于編寫本系統(tǒng)的服務(wù)端軟件和Web 端軟件。服務(wù)端軟件主要負(fù)責(zé)接收來自于硬件Wi-Fi 模塊發(fā)送過來的數(shù)據(jù),并進(jìn)行數(shù)據(jù)分析、數(shù)據(jù)處理、數(shù)據(jù)持久化,為Web 端后臺提供數(shù)據(jù)進(jìn)行可視化。同時(shí),可在出現(xiàn)異常行李時(shí),將相關(guān)數(shù)據(jù)發(fā)送給硬件,為硬件提供控制信息。程序流程圖如圖3 所示。
圖3 程序流程圖
服務(wù)端維護(hù)著一個(gè)行李列表,該列表保存當(dāng)前處于傳送帶上的行李的信息。同時(shí),數(shù)據(jù)庫里也維護(hù)一個(gè)行李列表,該列表保存本次需分揀的全部行李信息。
接收信息:服務(wù)端接收來自硬件掃描到標(biāo)簽ID;數(shù)據(jù)分析:查詢該ID 是否存在于服務(wù)端行李列表,若是,進(jìn)入數(shù)據(jù)處理①;否則查詢是否存在于數(shù)據(jù)庫行李列表,若是,進(jìn)入數(shù)據(jù)處理②;若均查詢不到該標(biāo)簽,則進(jìn)入數(shù)據(jù)處理③;數(shù)據(jù)處理:①記錄本次行李掃描日志,等待持久化;②獲取數(shù)據(jù)庫中該標(biāo)簽的行李對應(yīng)信息,發(fā)送給硬件;③該標(biāo)簽出現(xiàn)異常,發(fā)送異常信息給硬件;
數(shù)據(jù)持久化:負(fù)責(zé)行李日志,行李列表的持久化。
Web 端軟件主要為用戶提供整個(gè)系統(tǒng)的數(shù)據(jù)可視化,包括行李信息、員工信息、日志信息等。采用了Spring Security 框架,將對該Web 端的訪問分為三種權(quán)限,不同權(quán)限分別只能訪問該權(quán)限特定的功能[8]。系統(tǒng)功能圖如圖4 所示。
圖4 軟件功能圖
所有權(quán)限都有行李日志功能,可查看每次行李掃描的詳細(xì)信息;超級管理員主要負(fù)責(zé)對員工進(jìn)行管理,其員工管理功能可以對員工的信息進(jìn)行增刪改查,還可以添加員工、禁用員工、刪除員工,并且可以查看當(dāng)前在線的員工,在員工賬號泄露并被惡意操作時(shí),可做出及時(shí)反應(yīng)。管理員主要負(fù)責(zé)對行李分揀的實(shí)時(shí)監(jiān)控、管理,其行李管控功能為管理可能異常的行李提供支持,行李異常且硬件異常邏輯判定不能正確判斷出時(shí),可由該功能進(jìn)行手動控制;實(shí)時(shí)情況功能可實(shí)時(shí)監(jiān)控硬件上的情況。員工沒有任何管理權(quán)限,只能查看航班信息、行李日志。
前端軟件的設(shè)計(jì)工具為Sublime 和Google Chrome瀏覽器,分別用于編寫前端代碼和顯示代碼結(jié)果。涉及的技術(shù)有:Bootstrap,用于界面設(shè)計(jì)的響應(yīng)式Web 框架;jQuery,用于表格篩選動態(tài)數(shù)據(jù)等操作的JavaScript 框架;Vue.js,用于構(gòu)建用戶界面的漸進(jìn)式JavaScript 框架。
前端負(fù)責(zé)將后臺傳過來的數(shù)據(jù)顯示出來,供用戶、管理員和系統(tǒng)維護(hù)員查看與操作航班的動態(tài)和行李。權(quán)限界面分為三個(gè),普通用戶、一般管理員和系統(tǒng)維護(hù)員。在登陸界面登陸后,根據(jù)用戶名對應(yīng)的不同的權(quán)限,進(jìn)入對應(yīng)的系統(tǒng)界面。
普通用戶界面:主要由首頁、航班列表和行李日志組成,供用戶使用,可查到自己航班和行李的動態(tài)。首頁顯示該用戶乘坐航班的信息,包括航班編號、出發(fā)地、目的地、日期、行李數(shù)和出發(fā)時(shí)間倒計(jì)時(shí);航班列表由一個(gè)表格構(gòu)成,顯示全部航班的航班編號、出發(fā)地、目的地、出發(fā)時(shí)間和行李數(shù),供用戶查看關(guān)注的航班部分信息,可以篩選出未起飛或者已起飛的航班;行李日志顯示該用戶所乘坐的航班的信息,頭部顯示航班的起飛時(shí)間、航班號、出發(fā)地和目的地,表格部分顯示該航班的出發(fā)時(shí)間和行李數(shù)。設(shè)計(jì)效果如圖5-圖6 所示。
一般管理員界面:主要由工作臺、行李管控、行李日志和實(shí)時(shí)情況組成,供一般管理員查看航班和行李動態(tài),也可以進(jìn)行行李的操作。工作臺顯示某航班的航班信息和行李列表,在行李列表中,顯示該航班所有行李的行李號、狀態(tài)、操作和出口,目的是為了查看該航班行李的狀態(tài)和去向,狀態(tài)有正常和異常,正常表示可被掃描或已出倉,異常表示未出倉或未被掃描,操作有出倉或者第幾次掃描,出口表示行李在哪個(gè)出口出去;行李管控顯示某個(gè)航班的行李數(shù)、已出倉數(shù)、未出倉數(shù)和取消托運(yùn)數(shù),在行李列表,可以查看行李號、操作和出口,也可以進(jìn)行處理,點(diǎn)擊出倉按鈕便可進(jìn)行行李的出倉;行李日志顯示當(dāng)前航班的行李編號、旅客編號、狀態(tài)、操作、掃描時(shí)間和記錄時(shí)間;實(shí)時(shí)情況顯示分揀系統(tǒng)傳送帶上,當(dāng)前行李傳送總數(shù)、荷載傳送數(shù)、傳送速度和航班傳送行李數(shù)。行李列表顯示行李的行李編號、航班編號和狀態(tài)。設(shè)計(jì)效果如圖7-圖8 所示。
系統(tǒng)維護(hù)員界面:主要由航班列表、行李日志、員工日志、員工列表和在線員工組成,供系統(tǒng)維護(hù)員使用,用于查看航班的行李動態(tài)和員工的動態(tài)。航班列表、行李日志顯示各航班和行李的信息;員工列表顯示所有員工的信息,包括總員工數(shù)、在線員工數(shù)和離線員工數(shù),并可以進(jìn)行員工操作,如:修改、禁用和刪除。設(shè)計(jì)效果如圖9-圖10 所示。
該系統(tǒng)實(shí)現(xiàn)了基于超高頻RFID 技術(shù)的機(jī)場行李自動分揀,通過在旅客行李上粘貼RFID 標(biāo)簽,并將該標(biāo)簽與行李進(jìn)行關(guān)聯(lián),如航班信息、行李信息、旅客個(gè)人信息、航空檔案信息等,通過設(shè)置在各個(gè)工作場所的RFID 讀寫設(shè)備自動讀取粘貼在行李上的RFID 標(biāo)簽,對旅客行李進(jìn)行有效的識別,并對行李進(jìn)行分揀。
圖5 用戶界面-首頁
圖6 用戶界面-行李日志
圖7 一般管理員界面-工作臺
圖8 一般管理員界面-行李管控
圖9 系統(tǒng)維護(hù)員界面-航班列表
圖10 系統(tǒng)維護(hù)員界面-員工列表