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