謝潔杰,賴松林,賴云鋒
(福州大學(xué) 物理與信息工程學(xué)院 微納器件與太陽(yáng)能電池研究所,福建 福州350108)
近年來(lái),電商強(qiáng)有力的發(fā)展勢(shì)頭讓快遞物流飛速發(fā)展,然而作為快遞服務(wù)“最后一公里”的派送環(huán)節(jié),常常在快遞業(yè)務(wù)旺季期間存在配送脫節(jié)、貨件積壓等問(wèn)題[1-2],因此,快遞投遞箱就被引用進(jìn)來(lái)。目前國(guó)內(nèi)市場(chǎng)上的智能快遞投遞箱尚處于發(fā)展階段,投遞快件時(shí)需手動(dòng)輸入快遞信息以發(fā)送短信,存件效率不高,且容易導(dǎo)致信息誤填,增加包裹丟失的風(fēng)險(xiǎn)。對(duì)此,本文提出了一種基于S3C6410的智能快遞投遞箱系統(tǒng),該系統(tǒng)主要由投遞箱終端和系統(tǒng)服務(wù)器兩大部分構(gòu)成,可實(shí)現(xiàn)對(duì)快件單號(hào)的掃描錄入、短信自動(dòng)發(fā)送、取件密碼驗(yàn)證和對(duì)取件過(guò)程的視頻記錄。
本文設(shè)計(jì)了一個(gè)可適用于城市小區(qū)的智能快遞投遞箱系統(tǒng)。如圖1所示,該系統(tǒng)中以一臺(tái)PC機(jī)作為該小區(qū)中投遞箱終端的系統(tǒng)服務(wù)器,PC服務(wù)器可通過(guò)Internet網(wǎng)絡(luò)從快遞公司云端服務(wù)器下載和保存該小區(qū)的所有快遞包裹數(shù)據(jù),采用以太網(wǎng)與投遞箱終端通信,處理來(lái)自終端的功能請(qǐng)求,并通過(guò)UART串口方式驅(qū)動(dòng)GSM模塊發(fā)送中文短信,實(shí)現(xiàn)包裹的自取通知功能。
圖1 智能快遞投遞箱系統(tǒng)框架圖
投遞箱終端采用S3C6410嵌入式系統(tǒng),運(yùn)行Linux操作系統(tǒng),使用Qt4編程,并提供UI交互界面。在快遞員投遞快件過(guò)程中,首先通過(guò)條碼掃描器錄入快遞單號(hào)并將快件存放在指定編號(hào)寄存柜中,之后通過(guò)以太網(wǎng)將快遞信息上傳服務(wù)器以進(jìn)行GSM短信通知和數(shù)據(jù)同步;在客戶取件過(guò)程中,通過(guò)終端輸入設(shè)備對(duì)取件密碼進(jìn)行驗(yàn)證,利用USB攝像頭對(duì)取件過(guò)程進(jìn)行視頻采集編碼,并上傳服務(wù)器存儲(chǔ)。
投遞箱終端設(shè)計(jì)框架如圖2所示,嵌入式主控制器通過(guò)UART串口連接寄存柜模塊和快遞條碼掃描模塊,并采用USB總線方式連接視頻采集設(shè)備。
圖2 投遞箱終端硬件框架圖
主控制器以S3C6410嵌入式處理器為核心,結(jié)合外部 ROM/RAM、網(wǎng)卡控制芯片DM9000、鍵盤和電阻觸摸屏N43LCD等,構(gòu)成嵌入式Linux操作系統(tǒng)所需要的硬件基礎(chǔ)。在嵌入式Linux平臺(tái)下的主控制器軟件設(shè)計(jì)中,主控制器與寄存柜模塊和條碼掃描模塊的通信主要是通過(guò)串口API函數(shù)向外圍模塊發(fā)送指令和接收數(shù)據(jù),以實(shí)現(xiàn)快遞單號(hào)的條碼掃描和指定寄存柜的開關(guān)操作等。視頻采集的實(shí)現(xiàn)主要利用Linux中的V4L2編程架構(gòu),視頻編碼采用H.264編碼方案,主要是應(yīng)用S3C6410內(nèi)核中的MFC硬件編碼器[3]。主控制與服務(wù)器的網(wǎng)絡(luò)通信采用Socket套接字編程。
寄存柜模塊對(duì)外提供UART接口,接收來(lái)自終端主控制的命令數(shù)據(jù)以打開指定編號(hào)的單元柜,并對(duì)箱體門柜進(jìn)行開關(guān)狀態(tài)檢測(cè)。模塊設(shè)計(jì)框架圖如圖3所示。
圖3 寄存柜模塊框架圖
箱體控制電路基于STC89C52單片機(jī)設(shè)計(jì),其中驅(qū)動(dòng)電路由74LS138譯碼器和三極管反向放大電路構(gòu)成,能根據(jù)單片機(jī)I/O口輸出電平變化而控制箱體單元柜中電磁鎖的開關(guān),檢測(cè)電路通過(guò)對(duì)箱體單元柜中的干簧管檢測(cè)器的輸出電平判斷出箱體門柜的開關(guān)狀態(tài),并將檢測(cè)結(jié)果輸入單片機(jī)I/O口。
投遞箱終端在用戶取件過(guò)程中,需要對(duì)開箱過(guò)程進(jìn)行視頻采集傳輸,并在服務(wù)器上以所取快件的快遞單號(hào)作為文件名保存視頻數(shù)據(jù)。視頻數(shù)據(jù)采集主要利用V4L2視頻捕獲編程驅(qū)動(dòng)中的API函數(shù),USB攝像頭在主控制器的嵌入式Linux操作系統(tǒng)中映射為一個(gè)設(shè)備文件,在視頻采集過(guò)程中,先打開攝像頭設(shè)備文件并完成設(shè)備初始化,之后通過(guò)ioctl()函數(shù)發(fā)送視頻采集命令,開始視頻幀的采集。在獲取視頻幀數(shù)據(jù)之后,采用S3C6410內(nèi)部的MFC硬件編解碼器對(duì)其進(jìn)行H.264編碼并傳輸。編碼主要過(guò)程由SsbSipH264EncodeExe()函數(shù)來(lái)執(zhí)行,對(duì)編碼后的NAL包采用RTP協(xié)議傳輸。
RTP是一種構(gòu)建在UDP之上的實(shí)時(shí)傳輸協(xié)議。向服務(wù)器發(fā)送RTP視頻包時(shí),由于UDP傳輸是面向無(wú)連接的且服務(wù)器視頻數(shù)據(jù)的接收方式為一對(duì)多接收,所以為了使服務(wù)器能對(duì)來(lái)自不同終端的視頻數(shù)據(jù)進(jìn)行區(qū)分,在軟件設(shè)計(jì)中,終端傳輸視頻數(shù)據(jù)前先使用TCP可靠連接與服務(wù)器約定RTP傳輸同步信源標(biāo)識(shí)符,并填入每個(gè)待發(fā)送的RTP包頭中,以區(qū)別于其他終端的RTP視頻包數(shù)據(jù)。其傳輸流程圖如圖4所示。
圖4 視頻傳輸流程圖
系統(tǒng)服務(wù)器作為一個(gè)小區(qū)多臺(tái)投遞箱終端的數(shù)據(jù)處理中心,在同一時(shí)刻可與多個(gè)終端建立連接并處理來(lái)自終端的業(yè)務(wù)請(qǐng)求,如包裹信息查詢、短信發(fā)送、視頻傳輸?shù)取F滠浖O(shè)計(jì)在Windows平臺(tái)下進(jìn)行,數(shù)據(jù)庫(kù)采用SQLite3以存放快件信息,可定期通過(guò)Internet網(wǎng)絡(luò)與快遞公司云端服務(wù)器同步該小區(qū)的所有快遞數(shù)據(jù)。
本設(shè)計(jì)中服務(wù)器軟件采用線程池方式設(shè)計(jì),如圖5所示。服務(wù)器中“客戶端數(shù)據(jù)接入/發(fā)送線程”是服務(wù)器與客戶端之間交互數(shù)據(jù)的主要通道,采用TCP傳輸協(xié)議?!翱蛻舳藬?shù)據(jù)接入線程”主要采用 select()函數(shù)進(jìn)行設(shè)計(jì),實(shí)現(xiàn)對(duì)多個(gè)客戶端的連接和數(shù)據(jù)接入。
圖5 系統(tǒng)服務(wù)器線程池設(shè)計(jì)架構(gòu)圖
“工作線程”為任務(wù)處理中心,首先,從“待接收任務(wù)隊(duì)列”中獲取任務(wù)數(shù)據(jù)包,通過(guò)解析后執(zhí)行相應(yīng)的操作,包括數(shù)據(jù)庫(kù)的查詢和更改、RTP視頻傳輸控制、GSM短信發(fā)送控制等。最后,“工作線程”將處理后的數(shù)據(jù)包寫入“待發(fā)送任務(wù)隊(duì)列”,以應(yīng)答客戶端的請(qǐng)求。
服務(wù)器采用GTM900C作為GSM短信發(fā)送模塊,在“GSM短信發(fā)送線程”的設(shè)計(jì)中,首先從 “待發(fā)送隊(duì)列中”獲取待取件的電話號(hào)碼、寄存柜號(hào)、動(dòng)態(tài)密碼等信息,以產(chǎn)生相應(yīng)的PDU碼,再通過(guò)向GSM模塊發(fā)送AT指令就可以完成中文短信的發(fā)送[4]。
當(dāng)多個(gè)投遞箱終端同時(shí)向服務(wù)器發(fā)送視頻數(shù)據(jù)時(shí),服務(wù)器需要識(shí)別來(lái)自不同終端的RTP包,并存儲(chǔ)在以用戶所取快件的快遞單號(hào)為文件名的FLV格式視頻文件中。對(duì)RTP包的接收過(guò)程如圖6所示。
圖6 視頻接收流程圖
在服務(wù)器接收到RTP包后,首先通過(guò)解析RTP包中的同步信源標(biāo)識(shí)符可以獲取其所對(duì)應(yīng)取件過(guò)程的快遞單號(hào),之后將RTP解包后所得的NAL包存儲(chǔ)在相應(yīng)的文件中,視頻文件采用FLV封裝格式。
本文針對(duì)一個(gè)小區(qū)不同數(shù)量投遞箱終端連接系統(tǒng)服務(wù)器的情況,測(cè)試系統(tǒng)的業(yè)務(wù)處理準(zhǔn)確性和視頻傳輸效率。采用了兩套智能投遞箱實(shí)物模擬設(shè)備和電腦軟件虛擬設(shè)備作為一個(gè)小區(qū)的N個(gè)投遞箱終端,以兩臺(tái)PC機(jī)分別作為該小區(qū)的系統(tǒng)服務(wù)器和快遞公司云端服務(wù)器,系統(tǒng)服務(wù)器定期向云端服務(wù)器下載和更新數(shù)據(jù)。其測(cè)試數(shù)據(jù)如表1所示。
表1 不同終端連接下測(cè)試結(jié)果
測(cè)試結(jié)果表明,在終端數(shù)量小于400左右的情況下,采用TCP可靠方式連接的業(yè)務(wù)處理結(jié)果正確無(wú)誤,服務(wù)器視頻接收正常,能滿足一個(gè)城市小區(qū)對(duì)智能快遞投遞系統(tǒng)的要求。
[1]倪明,孫潛.快遞業(yè)運(yùn)營(yíng)模式研究[J].北京交通大學(xué)學(xué)報(bào),2013(1):49-54.
[2]張慶英,劉燕,王錕.基于快遞業(yè)務(wù)的應(yīng)急系統(tǒng)研究[J].武漢理工大學(xué)學(xué)報(bào)(交通科學(xué)與工程版),2011,35(4):825-828.
[3]劉陽(yáng)陽(yáng),申鉉京,王一棋.基于ARM的智能監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].吉林大學(xué)學(xué)報(bào)(信息科學(xué)版),2011,29(2):158-163.
[4]孫增雷,黃俊年,孫敏.基于GSM的遠(yuǎn)程報(bào)警系統(tǒng)的研制[J].武漢理工大學(xué)學(xué)報(bào),2008,30(6):122-124,134.