吳可測,陳偉漢,毋茂盛
(肇慶學院 計算機學院,廣東 肇慶 526061)
隨著計算機技術和通信技術的發展,手機已經變成了人們生活的標配,基于手機的各種家庭智能化控制技術也成了工程師們研究的熱點[1-3]。隨著物流行業的快速發展,目前使用手機進行購物和點餐已成了許多人的生活習慣。據中國互聯網信息中心(CNNIC)發布的《中國互聯網絡發展狀況統計報告》顯示,截至2020年3月,我國手機網絡購物用戶規模達7.07億,較2018年底增長1.16億。外賣的訂單也同樣在快速地增長[4]。因此,如何及時接收到快遞和外賣的問題變得日益突出[5]。
為了解決這個問題,本文設計了一個用手機遠程控制的可升降快遞外賣接收系統。當物品的主人不在家或因腿腳不方便下樓時,可以通過手機的APP控制收納箱從樓上放下,然后通過升降裝置將快遞物品運至主人家中,實現遠程接收快遞或外賣等物品。
系統主要由阿里云服務器、手機APP、控制電路、收納箱、升降裝置等組成,具體結構如圖1所示。服務器端包括服務器控制程序和數據庫;手機端包括基于安卓系統的手機及APP;控制電路部分包括主控電路和控制程序;收納箱部分包括雙控門箱子、傳感器、控制電路板及相關控制程序;升降裝置包括電機、牽引線以及相關硬件電路等。

圖1 系統整體結構
(1)手機APP進入綁定模塊,通過掃描特定二維碼實現與主控電路的通信,并將家中路由器的名字與密碼發送給主控電路;然后,通過無線方式分別與路由器和收納箱進行連接。收納箱通過主控電路實現與服務器的通信,將實時狀態與視頻信息發給服務器。收納箱與主控電路通過輪詢的方式不斷獲取服務器的指令信息,并執行響應的動作。
(2)手機APP注冊賬戶并登錄后,服務器中的數據庫會保存用戶的注冊信息。APP在運行時通過輪詢服務器來獲取設備的當前狀態,并將狀態實時顯示在手機上。同時,當用戶點擊功能按鈕后,APP會向服務器發出對應指令。在設備下一次輪詢后將執行服務器中的指令,并將執行結果返回給服務器,最終通過APP進行顯示。
電子收納箱控制電路主要由圖像采集模塊、主控電路、門控制模塊和狀態檢測模塊等組成。門控制模塊由步進電機、電鎖和傳統機械鎖等組成。電子收納箱硬件結構如圖2所示。
2.1.1 主控電路板開發
主控電路板的功能主要是負責控制收納箱開關門單元、指示燈單元、傳感器單元以及啟停圖像采集模塊,并負責與服務器的WiFi通信。圖像采集模塊主要由硬件電路及專用攝像頭組成,負責采集圖像信息,并將信息上傳至服務器。開關門單元由步進電機、傳統鎖和電鎖等組成,實現收納箱門的自動打開和關閉。

圖2 硬件結構設計框圖
主控電路板采用ESP32作為控制器。該芯片是一款高集成度、高性價比、功耗超低、主打安全的單核WiFi SoC,其除了含有CPU外,還集成了2.4 GHz WiFi、藍牙模塊、豐富的 I/O口以及ROM、SRAM等,穩定性好、可靠性高,適用于多種應用場景[6-8],使用方便,功能強大。ESP32通過內置WiFi功能與路由器相連,實現與服務器通信。本設計中,主控電路通過串行口與圖像采集模塊進行通信,使用了8個I/O口,其中5個為輸出,分別用于控制電鎖開關、步進電機脈沖、旋轉方向、步進電機電源和WiFi指示燈;另外3個為輸入,分別用于檢測開關門狀態、攝像頭狀態和WiFi重置按鈕。
2.1.2 圖像采集模塊
圖像采集模塊通過串口與主控芯片進行通信,完成WiFi配置、指令接收和狀態返回。當接收到APP發出視頻采集指令時,圖像采集模塊啟動,并通過服務器將圖像信息傳到手機APP上。
2.1.3 門控制模塊
門控制模塊由傳統機械鎖、電控鎖、電機、牽引線、傳感器等組成。當設備發生故障或者停電時,物主可以通過傳統方法開鎖;電鎖用于遠程的開、關收納箱;傳感器用于采集門的當前狀態信息。
本設計中,服務器采用的是阿里ECS服務器,部署Tomcat、MySQL數據庫和搭建nginx-rtmp環境,進行視頻推流,并使用Java編寫服務器代碼。
2.2.1 創建數據庫
創建數據庫包括:添加用戶信息表,存儲客戶信息,如賬號、密碼、密保、電話、地址等;添加指令表,存放控制收納箱及攝像頭的指令及狀態。
2.2.2 Web程序設計
本文采用JDBC的方法編寫控制數據庫操作代碼,實現手機APP的在線注冊、登錄、修改密碼以及傳送指令等功能。獲取指令代碼程序段如下:

升降裝置模塊包括升降機電結構與控制驅動電路等。驅動電路通過服務器獲取升降指令,然后,通過驅動升降無刷電機來實現收納箱的升降,并將設備狀態回傳給服務器。
2.3.1 收納箱控制電路板設計
收納箱控制電路板同樣使用ESP32作為控制器,主要負責獲取指令并驅動電機,同時,作為收納箱的中繼通信電路,轉發相關的指令。
2.3.2 機械裝置
機械裝置主要由固定支架、無刷電機、絞盤、緩沖結構、滑輪和纜繩等組成,整體結構如圖3所示。無刷電機為箱子升降的提供力量。緩沖結構主要用于減少在箱子收回時電機的持續作用力對裝置的性能影響;同時,用于化解啟停時產生的抖動,確保箱子可以平穩升降。絞盤、滑輪和纜繩組成了一個基本的滑輪組結構。

圖3 牽引收納箱機械結構
本系統的APP編程主要基于安卓系統,使用Java語言編程。Java支持Internet應用的開發,提供了網絡應用編程的類庫等[9]。APP主要功能包括:設備綁定模塊、用戶信息模塊和設備控制模塊。其中設備綁定模塊可以通過掃描二維碼建立與設備的通信,并通過APP直接設置設備的路由名稱和密碼。用戶信息模塊包括:登錄注冊、找回和修改密碼等功能。設備控制模塊APP可通過服務器獲取設備狀態信息并顯示,也可通過APP發出命令,經過服務器后控制設備開關門、啟停攝像頭等。APP 功能框圖如圖4所示。

圖4 手機APP設計框圖
2.4.1 用戶信息處理
用戶信息模塊基本功能包括:注冊、登錄、密碼修改等。用戶將APP輸入的用戶信息通過網絡上傳給服務器保存。用戶也可以通過修改窗口對自己已上傳的信息進行修改。APP與服務器通信部分代碼如下:

2.4.2 綁定設備程序設計
這個功能主要用于給設備設置路由的名稱和密碼。設備在初始時為熱點模式,APP可通過掃描二維碼獲取設備熱點名稱與密碼,并進行連接通信。掃碼配置部分代碼如下:

2.4.3 控制設備程序設計
控制界面包括顯示區域和控制區域。頂部是攝像頭和門狀態的指示燈,中間是視頻顯示區域,下方是各個功能控制按鈕。程序運行界面如圖5所示。
APP通過不斷輪詢服務器方法[10]獲取設備的實時狀態。APP在控制設備時,如發現某個按鈕被按下,對應的命令就會被發送給服務器,指令會被保存在對應的數據庫中。部分APP輪詢代碼如下:


圖5 程序運行界面
本文設計了一個可升降快遞、外賣收納箱遠程監控系統,可以通過手機遠程接收快遞和外賣。經過團隊的努力,已將設備圖像延時控制在了3 s以內。本系統研究的技術除了用于接收外賣和快遞外,還可以將上街采購的小件物品如購置的菜和小袋面粉自動運到家中,對住樓梯房的老年人特別有用。如果加大驅動力量并加裝安全裝置,甚至可以用作私人電梯。