游張華
(深圳市華海聯能科技有限公司,廣東 深圳 518101)
基于物聯網的智能快件箱[1],能夠識別、暫存、監控和管理快件[2],與云服務器結合構成智能快件投遞系統。在城市里基站信號較好,快件箱可以通過4G/5G 信號與云服務器傳輸數據;而在農村地區基站信號較差,快件箱與云服務器通信經常不穩定,甚至斷網,導致快件無法投遞。為此,本文設計一種雙通道傳輸的系統,當信號不好時使用藍牙將投遞數據傳輸到手機,再通過手機將數據傳輸到服務器,以解決快件箱在農村地區的使用問題[3]。本文從硬件和軟件兩方面討論了雙通道傳輸系統的設計。
系統總體設計如圖1所示,由智能一體機、多塊鎖控板、投遞手機、云服務器組成。鎖控板的主控芯片為STM32,控制電子鎖開關門,檢測門鎖打開和關閉狀態。一體機使用ARM9 內核的主控芯片,并運行Linux 和QT 程序,用于與投遞員交互、掃描快件條碼、控制鎖控板、記錄快件投取信息并通過4G/5G 網絡上傳服務器。一體機實時檢測4G/5G網絡信號,當信號不好時,會強制投遞員使用手機進行投遞。投遞手機為安卓或蘋果手機,并裝有投遞APP。手機投遞時先用手機藍牙連接一體機的藍牙模塊,身份驗證通過后,再用手機掃描快件條碼投遞。投遞APP 會自動檢測網絡信號,將信息傳輸到服務器。服務器運行管理后臺[4],記錄投取件信息。當有新快件時,會將取件密碼發送短信或公眾號推送給取件人[5]。

圖1 系統總體設計
考慮到成本和運行人機交互界面需要消耗大量的CPU資源,故本方案中選擇主頻為454 MHz 的ARM9 核心微處理器IMX287 作為主控CPU。IMX287 一方面需要接液晶屏和觸摸屏,進行人機交互;另一方面需要通過RS 485 總線接多塊鎖控板,用于控制每個箱門的電子鎖。為了實現雙通道數據傳輸,還需要外接4G/5G 模塊、與手機通信的藍牙模塊。智能快件箱一體機的硬件組成如圖2所示。

圖2 一體機硬件基本結構
為了實現人機交互,對于界面的顯示,選擇群創AT070TN83(16:9,800×480)7 寸TFT 液晶屏。該液晶屏支持18 位數字RGB 接口,格式位RGB666,每個像素由6 bit 紅、6 bit 綠、6 bit 藍構成18 bit 數據。該液晶屏與IMX287 的LCD 控制器通過18 根數據線、幀同步(VSYNC)、行同步(HSYSNC)、時鐘(LSCLK)連接。對于觸摸輸入,選擇奕力科技的ILI2511 芯片的USB 電容觸摸屏。
采用256 MB 的三星K9F2G08R0A NANDFLASH 芯片存放軟件系統,包括uboot、Linux 內核、文件系統和SQLite數據庫。使用兩片HYB18M512160AF 芯片組成128 MB 的DDR 內存,用于加載Linux 操作系統和運行應用程序。
設計一個JTAG 接口,用來調試和燒寫uboot、Linux 內核和文件系統。因為處理器內核需要1.8 V、1.5 V 電壓,存儲器需要3.3 V 電壓,所以將系統的輸入電壓設置為5 V。經過DC-DC 轉換器可完成到3.3 V、1.8 V、1.5 V 電壓的轉換。采用26 MHz 的有源晶振驅動CPU。
設計一個RS 485 接口用于與多塊鎖控板通信,進而控制箱門電子鎖的開關。一個RS 232 接口用于接紅外掃碼槍來掃描快件單上的條碼。一個GPIO 接口用于控制快件箱上的照明燈,方便取件人晚上操作。
4G 通信模塊使用移遠的EC20 模塊。EC20 為4G 全網通模塊,將EC20 的USB 接口連接一體機的USB Host 接口。一體機的快件數據便可通過4G 網絡傳輸到云服務器。藍牙通信模塊使用基于TI 芯片CC2540 的串口藍牙模塊。該模塊支持藍牙4.0,將模塊的串口連接一體機的串口。通過認證后,一體機的快件數據便可以通過藍牙傳輸到投遞員的手機中,進而再通過手機將數據傳輸到云服務器。
LCDC 是IMX287 中的液晶顯示控制器[6]。可以通過LCDC 接口來控制交互界面的顯示輸出,需要加載LCDC 底層驅動mxcfb_modedb.ko和mxcfb.ko及Linux幀緩沖驅動。使用幀緩沖設備時,可將顯示緩沖區直接映射到Linux 用戶空間。這樣在Linux 用戶空間,應用程序可以按照預先設置好的R、G、B 位數和偏移量,將界面數據直接寫到經過mmap()映射后的顯示緩沖區,進而實現交互界面的顯示。
由于使用的是USB 電容觸摸屏,需要先加載IMX287 的USB Host驅動mxc_usbhost.ko。觸摸芯片使用的是ILI2511,需要加載對應的芯片驅動mxc_ili2511.ko,同時需要加載Linux[7]的觸摸層驅動touchscreen.ko。因為使用的是QT 交互界面,在Linux 下需要通過觸摸驅動適配層將電容觸摸屏的觸摸坐標傳遞到QT 交互界面。適配層使用開源的TSLib庫來實現,該庫對采樣得到的觸摸數據進行濾波、去抖、校準等。為上層的QT 應用程序提供了一個統一的坐標接口,從而實現觸摸操作。
一體機的RS 485 連接多塊鎖控板的RS 485,每塊鎖控板都有地址撥碼。通信采用主從收發協議[8],一體機為主機,鎖控板為從機。主機先向從機發送數據幀,從機返回響應數據幀。控制需要執行以下步驟:(1)一體機向鎖控板發送開鎖命令;(2)因為開鎖時間需要500 ms,所以500 ms 后一體機向鎖控板發送查詢鎖狀態命令;(3)如果鎖狀態為打開,則開鎖成功;如果鎖狀態為關閉,則重復執行步驟(1)和(2);當重復執行3 次,鎖狀態仍為關閉,則說明該電子鎖故障,設置對應的箱門為故障箱門。鎖控板控制的執行流程如圖3所示。

圖3 鎖控板控制的執行流程
4G 模塊使用的是EC20,首先要添加模塊驅動mxc_ec20.ko;然后使用Linux 的PPP 軟件自動撥號,將一體機接入4G 網絡。這樣QT 應用程序才能與服務器進行通信和數據交互。交互需要執行以下步驟:(1)將快件箱的唯一編號發送到服務器進行注冊驗證,只有注冊的快件箱才能使用,否則禁用;(2)查詢QT 的SQLite 數據庫是否有新投遞的快件,如果有則生成對應的取件密碼并保存到SQLite 數據庫[9],并將快件信息和取件密碼都傳輸到云服務器,服務器通過短信或公眾號推送方式將密碼發送給取件人;(3)查詢QT 的SQLite 數據庫是否有被取走的快件,如果有則在SQLite 數據庫中刪除對應的快件信息,并將取件信息傳輸到云服務器,完成一個快件的投取業務。4G 通道傳輸的執行流程如圖4所示。

圖4 4G 通道傳輸的執行流程
藍牙模塊使用CC2540 芯片的串口藍牙,需要加載串口驅動mxc_uart.ko。藍牙模塊作為從設備,等待手機藍牙的連接[10]。交互需要執行以下步驟:(1)手機投遞APP 軟件使用登錄的用戶名和密碼在云服務器驗證,驗證通過才能搜索指定藍牙名稱去連接藍牙模塊;(2)手機APP 使用藍牙模塊的MAC 地址在云服務器驗證,驗證通過才能進行藍牙數據的傳輸;(3)一體機查詢QT 的SQLite 數據庫是否有新投遞的快件,如果有則生成對應的取件密碼并保存到SQLite 數據庫,再將快件信息和取件密碼都傳輸到手機APP;(4)一體機查詢QT 的SQLite 數據庫是否有被取走的快件,如果有則在SQLite 數據庫中刪除對應的快件信息,并將取件信息傳輸到手機APP;(5)手機APP 將投件信息發送到云服務器,服務器通過短信或公眾號推送方式將密碼發送給取件人,將取件信息傳輸到云服務器,完成一個快件的投取業務。藍牙通道傳輸的執行流程如圖5所示。

圖5 藍牙通道傳輸的執行流程
在基站4G 信號強度不同的情況下,對快件信息到達服務器的耗時進行了測試。測試結果見表1 所列。

表1 雙通道傳輸時間比較
由表1 可見:測試1,基站信號較好,信息通過4G 通道1.2 s 后到達服務器;測試2,基站信號較差,信息通過藍牙很快到達手機,手機移動了一定距離,信息25 s 后到達服務器;測試3,基站信號很差,手機移動了較長距離,才找到基站信號相對好的位置,信息400 s 后到達服務器。
本文詳細介紹了基于雙通道傳輸的智能快件箱系統的設計,該方案不僅能應用于基站信號較好的城市,也能應用于基站信號較差的農村地區,很好地解決了偏遠地區對快件箱的使用需求。