游張華
(深圳市華海聯(lián)能科技有限公司,廣東 深圳 518101)
基于物聯(lián)網(wǎng)的智能快件箱[1],能夠識(shí)別、暫存、監(jiān)控和管理快件[2],與云服務(wù)器結(jié)合構(gòu)成智能快件投遞系統(tǒng)。在城市里基站信號(hào)較好,快件箱可以通過4G/5G 信號(hào)與云服務(wù)器傳輸數(shù)據(jù);而在農(nóng)村地區(qū)基站信號(hào)較差,快件箱與云服務(wù)器通信經(jīng)常不穩(wěn)定,甚至斷網(wǎng),導(dǎo)致快件無法投遞。為此,本文設(shè)計(jì)一種雙通道傳輸?shù)南到y(tǒng),當(dāng)信號(hào)不好時(shí)使用藍(lán)牙將投遞數(shù)據(jù)傳輸?shù)绞謾C(jī),再通過手機(jī)將數(shù)據(jù)傳輸?shù)椒?wù)器,以解決快件箱在農(nóng)村地區(qū)的使用問題[3]。本文從硬件和軟件兩方面討論了雙通道傳輸系統(tǒng)的設(shè)計(jì)。
系統(tǒng)總體設(shè)計(jì)如圖1所示,由智能一體機(jī)、多塊鎖控板、投遞手機(jī)、云服務(wù)器組成。鎖控板的主控芯片為STM32,控制電子鎖開關(guān)門,檢測(cè)門鎖打開和關(guān)閉狀態(tài)。一體機(jī)使用ARM9 內(nèi)核的主控芯片,并運(yùn)行Linux 和QT 程序,用于與投遞員交互、掃描快件條碼、控制鎖控板、記錄快件投取信息并通過4G/5G 網(wǎng)絡(luò)上傳服務(wù)器。一體機(jī)實(shí)時(shí)檢測(cè)4G/5G網(wǎng)絡(luò)信號(hào),當(dāng)信號(hào)不好時(shí),會(huì)強(qiáng)制投遞員使用手機(jī)進(jìn)行投遞。投遞手機(jī)為安卓或蘋果手機(jī),并裝有投遞APP。手機(jī)投遞時(shí)先用手機(jī)藍(lán)牙連接一體機(jī)的藍(lán)牙模塊,身份驗(yàn)證通過后,再用手機(jī)掃描快件條碼投遞。投遞APP 會(huì)自動(dòng)檢測(cè)網(wǎng)絡(luò)信號(hào),將信息傳輸?shù)椒?wù)器。服務(wù)器運(yùn)行管理后臺(tái)[4],記錄投取件信息。當(dāng)有新快件時(shí),會(huì)將取件密碼發(fā)送短信或公眾號(hào)推送給取件人[5]。
圖1 系統(tǒng)總體設(shè)計(jì)
考慮到成本和運(yùn)行人機(jī)交互界面需要消耗大量的CPU資源,故本方案中選擇主頻為454 MHz 的ARM9 核心微處理器IMX287 作為主控CPU。IMX287 一方面需要接液晶屏和觸摸屏,進(jìn)行人機(jī)交互;另一方面需要通過RS 485 總線接多塊鎖控板,用于控制每個(gè)箱門的電子鎖。為了實(shí)現(xiàn)雙通道數(shù)據(jù)傳輸,還需要外接4G/5G 模塊、與手機(jī)通信的藍(lán)牙模塊。智能快件箱一體機(jī)的硬件組成如圖2所示。
圖2 一體機(jī)硬件基本結(jié)構(gòu)
為了實(shí)現(xiàn)人機(jī)交互,對(duì)于界面的顯示,選擇群創(chuàng)AT070TN83(16:9,800×480)7 寸TFT 液晶屏。該液晶屏支持18 位數(shù)字RGB 接口,格式位RGB666,每個(gè)像素由6 bit 紅、6 bit 綠、6 bit 藍(lán)構(gòu)成18 bit 數(shù)據(jù)。該液晶屏與IMX287 的LCD 控制器通過18 根數(shù)據(jù)線、幀同步(VSYNC)、行同步(HSYSNC)、時(shí)鐘(LSCLK)連接。對(duì)于觸摸輸入,選擇奕力科技的ILI2511 芯片的USB 電容觸摸屏。
采用256 MB 的三星K9F2G08R0A NANDFLASH 芯片存放軟件系統(tǒng),包括uboot、Linux 內(nèi)核、文件系統(tǒng)和SQLite數(shù)據(jù)庫。使用兩片HYB18M512160AF 芯片組成128 MB 的DDR 內(nèi)存,用于加載Linux 操作系統(tǒng)和運(yùn)行應(yīng)用程序。
設(shè)計(jì)一個(gè)JTAG 接口,用來調(diào)試和燒寫uboot、Linux 內(nèi)核和文件系統(tǒng)。因?yàn)樘幚砥鲀?nèi)核需要1.8 V、1.5 V 電壓,存儲(chǔ)器需要3.3 V 電壓,所以將系統(tǒng)的輸入電壓設(shè)置為5 V。經(jīng)過DC-DC 轉(zhuǎn)換器可完成到3.3 V、1.8 V、1.5 V 電壓的轉(zhuǎn)換。采用26 MHz 的有源晶振驅(qū)動(dòng)CPU。
設(shè)計(jì)一個(gè)RS 485 接口用于與多塊鎖控板通信,進(jìn)而控制箱門電子鎖的開關(guān)。一個(gè)RS 232 接口用于接紅外掃碼槍來掃描快件單上的條碼。一個(gè)GPIO 接口用于控制快件箱上的照明燈,方便取件人晚上操作。
4G 通信模塊使用移遠(yuǎn)的EC20 模塊。EC20 為4G 全網(wǎng)通模塊,將EC20 的USB 接口連接一體機(jī)的USB Host 接口。一體機(jī)的快件數(shù)據(jù)便可通過4G 網(wǎng)絡(luò)傳輸?shù)皆品?wù)器。藍(lán)牙通信模塊使用基于TI 芯片CC2540 的串口藍(lán)牙模塊。該模塊支持藍(lán)牙4.0,將模塊的串口連接一體機(jī)的串口。通過認(rèn)證后,一體機(jī)的快件數(shù)據(jù)便可以通過藍(lán)牙傳輸?shù)酵哆f員的手機(jī)中,進(jìn)而再通過手機(jī)將數(shù)據(jù)傳輸?shù)皆品?wù)器。
LCDC 是IMX287 中的液晶顯示控制器[6]??梢酝ㄟ^LCDC 接口來控制交互界面的顯示輸出,需要加載LCDC 底層驅(qū)動(dòng)mxcfb_modedb.ko和mxcfb.ko及Linux幀緩沖驅(qū)動(dòng)。使用幀緩沖設(shè)備時(shí),可將顯示緩沖區(qū)直接映射到Linux 用戶空間。這樣在Linux 用戶空間,應(yīng)用程序可以按照預(yù)先設(shè)置好的R、G、B 位數(shù)和偏移量,將界面數(shù)據(jù)直接寫到經(jīng)過mmap()映射后的顯示緩沖區(qū),進(jìn)而實(shí)現(xiàn)交互界面的顯示。
由于使用的是USB 電容觸摸屏,需要先加載IMX287 的USB Host驅(qū)動(dòng)mxc_usbhost.ko。觸摸芯片使用的是ILI2511,需要加載對(duì)應(yīng)的芯片驅(qū)動(dòng)mxc_ili2511.ko,同時(shí)需要加載Linux[7]的觸摸層驅(qū)動(dòng)touchscreen.ko。因?yàn)槭褂玫氖荙T 交互界面,在Linux 下需要通過觸摸驅(qū)動(dòng)適配層將電容觸摸屏的觸摸坐標(biāo)傳遞到QT 交互界面。適配層使用開源的TSLib庫來實(shí)現(xiàn),該庫對(duì)采樣得到的觸摸數(shù)據(jù)進(jìn)行濾波、去抖、校準(zhǔn)等。為上層的QT 應(yīng)用程序提供了一個(gè)統(tǒng)一的坐標(biāo)接口,從而實(shí)現(xiàn)觸摸操作。
一體機(jī)的RS 485 連接多塊鎖控板的RS 485,每塊鎖控板都有地址撥碼。通信采用主從收發(fā)協(xié)議[8],一體機(jī)為主機(jī),鎖控板為從機(jī)。主機(jī)先向從機(jī)發(fā)送數(shù)據(jù)幀,從機(jī)返回響應(yīng)數(shù)據(jù)幀??刂菩枰獔?zhí)行以下步驟:(1)一體機(jī)向鎖控板發(fā)送開鎖命令;(2)因?yàn)殚_鎖時(shí)間需要500 ms,所以500 ms 后一體機(jī)向鎖控板發(fā)送查詢鎖狀態(tài)命令;(3)如果鎖狀態(tài)為打開,則開鎖成功;如果鎖狀態(tài)為關(guān)閉,則重復(fù)執(zhí)行步驟(1)和(2);當(dāng)重復(fù)執(zhí)行3 次,鎖狀態(tài)仍為關(guān)閉,則說明該電子鎖故障,設(shè)置對(duì)應(yīng)的箱門為故障箱門。鎖控板控制的執(zhí)行流程如圖3所示。
圖3 鎖控板控制的執(zhí)行流程
4G 模塊使用的是EC20,首先要添加模塊驅(qū)動(dòng)mxc_ec20.ko;然后使用Linux 的PPP 軟件自動(dòng)撥號(hào),將一體機(jī)接入4G 網(wǎng)絡(luò)。這樣QT 應(yīng)用程序才能與服務(wù)器進(jìn)行通信和數(shù)據(jù)交互。交互需要執(zhí)行以下步驟:(1)將快件箱的唯一編號(hào)發(fā)送到服務(wù)器進(jìn)行注冊(cè)驗(yàn)證,只有注冊(cè)的快件箱才能使用,否則禁用;(2)查詢QT 的SQLite 數(shù)據(jù)庫是否有新投遞的快件,如果有則生成對(duì)應(yīng)的取件密碼并保存到SQLite 數(shù)據(jù)庫[9],并將快件信息和取件密碼都傳輸?shù)皆品?wù)器,服務(wù)器通過短信或公眾號(hào)推送方式將密碼發(fā)送給取件人;(3)查詢QT 的SQLite 數(shù)據(jù)庫是否有被取走的快件,如果有則在SQLite 數(shù)據(jù)庫中刪除對(duì)應(yīng)的快件信息,并將取件信息傳輸?shù)皆品?wù)器,完成一個(gè)快件的投取業(yè)務(wù)。4G 通道傳輸?shù)膱?zhí)行流程如圖4所示。
圖4 4G 通道傳輸?shù)膱?zhí)行流程
藍(lán)牙模塊使用CC2540 芯片的串口藍(lán)牙,需要加載串口驅(qū)動(dòng)mxc_uart.ko。藍(lán)牙模塊作為從設(shè)備,等待手機(jī)藍(lán)牙的連接[10]。交互需要執(zhí)行以下步驟:(1)手機(jī)投遞APP 軟件使用登錄的用戶名和密碼在云服務(wù)器驗(yàn)證,驗(yàn)證通過才能搜索指定藍(lán)牙名稱去連接藍(lán)牙模塊;(2)手機(jī)APP 使用藍(lán)牙模塊的MAC 地址在云服務(wù)器驗(yàn)證,驗(yàn)證通過才能進(jìn)行藍(lán)牙數(shù)據(jù)的傳輸;(3)一體機(jī)查詢QT 的SQLite 數(shù)據(jù)庫是否有新投遞的快件,如果有則生成對(duì)應(yīng)的取件密碼并保存到SQLite 數(shù)據(jù)庫,再將快件信息和取件密碼都傳輸?shù)绞謾C(jī)APP;(4)一體機(jī)查詢QT 的SQLite 數(shù)據(jù)庫是否有被取走的快件,如果有則在SQLite 數(shù)據(jù)庫中刪除對(duì)應(yīng)的快件信息,并將取件信息傳輸?shù)绞謾C(jī)APP;(5)手機(jī)APP 將投件信息發(fā)送到云服務(wù)器,服務(wù)器通過短信或公眾號(hào)推送方式將密碼發(fā)送給取件人,將取件信息傳輸?shù)皆品?wù)器,完成一個(gè)快件的投取業(yè)務(wù)。藍(lán)牙通道傳輸?shù)膱?zhí)行流程如圖5所示。
圖5 藍(lán)牙通道傳輸?shù)膱?zhí)行流程
在基站4G 信號(hào)強(qiáng)度不同的情況下,對(duì)快件信息到達(dá)服務(wù)器的耗時(shí)進(jìn)行了測(cè)試。測(cè)試結(jié)果見表1 所列。
表1 雙通道傳輸時(shí)間比較
由表1 可見:測(cè)試1,基站信號(hào)較好,信息通過4G 通道1.2 s 后到達(dá)服務(wù)器;測(cè)試2,基站信號(hào)較差,信息通過藍(lán)牙很快到達(dá)手機(jī),手機(jī)移動(dòng)了一定距離,信息25 s 后到達(dá)服務(wù)器;測(cè)試3,基站信號(hào)很差,手機(jī)移動(dòng)了較長(zhǎng)距離,才找到基站信號(hào)相對(duì)好的位置,信息400 s 后到達(dá)服務(wù)器。
本文詳細(xì)介紹了基于雙通道傳輸?shù)闹悄芸旒湎到y(tǒng)的設(shè)計(jì),該方案不僅能應(yīng)用于基站信號(hào)較好的城市,也能應(yīng)用于基站信號(hào)較差的農(nóng)村地區(qū),很好地解決了偏遠(yuǎn)地區(qū)對(duì)快件箱的使用需求。