黃伊凡,廖順鑫,鄧大路,胡晉瑋,許 浩,李蘭英
(哈爾濱理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,哈爾濱 150080)
隨著網(wǎng)絡(luò)和嵌入式技術(shù)的飛速發(fā)展,日常生活中的各種設(shè)備都逐漸接入網(wǎng)絡(luò),在家中、辦公室和大街上各種智能網(wǎng)絡(luò)終端隨處可見(jiàn)。伴隨著新技術(shù)不斷涌現(xiàn),新的網(wǎng)絡(luò)終端設(shè)備也在不斷更新。當(dāng)今流行的很多終端設(shè)備或是功能全面但是價(jià)格高昂,或是只能通過(guò)手機(jī)操控,自身無(wú)信息顯示途徑。具體而言,各個(gè)產(chǎn)品的操縱入口較為分散,場(chǎng)景模式較為碎片化,子系統(tǒng)之間沒(méi)有聯(lián)通性,從而容易導(dǎo)致用戶(hù)對(duì)于設(shè)備智能化的體驗(yàn)感不佳[1]。
本文研究的智能互聯(lián)終端輸入通過(guò)姿態(tài)控制,顯示技術(shù)受到了谷歌眼鏡啟發(fā),選用分光棱鏡作為透明顯示屏。將天氣預(yù)報(bào)、相冊(cè)、視頻播放等多種用戶(hù)定制功能進(jìn)行集成。為用戶(hù)提供一個(gè)人機(jī)界面設(shè)計(jì)新穎且用戶(hù)操作體驗(yàn)良好的物聯(lián)網(wǎng)終端設(shè)備的新選擇。
本文所設(shè)計(jì)的姿態(tài)控制智能網(wǎng)絡(luò)終端設(shè)備是一款基于ESP32 處理器、LVGL 的小型終端系統(tǒng),其硬件部分是一個(gè)具有顯示屏的桌面終端。該系統(tǒng)的開(kāi)發(fā)由上位機(jī)和網(wǎng)絡(luò)終端2 部分組成。該終端設(shè)備可通過(guò)板載的ESP32 芯片進(jìn)行網(wǎng)絡(luò)連接,獲取信息,然后通過(guò)分光棱鏡折射顯示屏顯示用戶(hù)所需信息。通過(guò)MPU-6050進(jìn)行輸入操作控制,即終端設(shè)備通過(guò)晃動(dòng)切換不同的應(yīng)用界面。上位機(jī)與網(wǎng)絡(luò)終端通過(guò)串口通信連接,通過(guò)該上位機(jī)向硬件燒錄固件,進(jìn)行固件更新。
姿態(tài)控制多功能智能網(wǎng)絡(luò)終端硬件系統(tǒng)設(shè)計(jì)包括2 部分:主板模塊和顯示模塊,主板模塊和顯示模塊各為一塊PCB 板。硬件系統(tǒng)結(jié)構(gòu)如圖1 所示。
圖1 硬件系統(tǒng)結(jié)構(gòu)框圖
樂(lè)鑫公司開(kāi)發(fā)的ESP32 單片機(jī)具有高性能、超低功耗、高度集成、性能穩(wěn)定且外設(shè)豐富等特點(diǎn),其片上集成了Wi-Fi 和低功耗藍(lán)牙,不需要外加通信擴(kuò)展模塊便可完成網(wǎng)絡(luò)通信。另外最高運(yùn)行速度可達(dá)到240 MHz,擁有雙核處理器,在處理浮點(diǎn)數(shù)的運(yùn)算方面具有很大的優(yōu)勢(shì)[2]。ESP32 芯片還可以通過(guò)CP2102USB 轉(zhuǎn)UART 橋接器與PC 端進(jìn)行串口通信,實(shí)現(xiàn)固件更新?;贓SP32 的強(qiáng)大性能,主板模塊采用ESP32 作為主控芯片,負(fù)責(zé)主邏輯處理、獲取姿態(tài)控制數(shù)據(jù)、網(wǎng)絡(luò)連接等。
獲取姿態(tài)控制數(shù)據(jù)由MPU-6050 傳感器實(shí)現(xiàn)。MPU-6050 傳感器體積小、靈敏度高、功耗低,同時(shí)MPU-6050 檢測(cè)精度高,因此通過(guò)MPU-6050 傳感器可以感知微小的動(dòng)作變化[3],用于檢測(cè)本設(shè)備的運(yùn)動(dòng)信息。MPU-6050 集成了三軸陀螺儀和三軸加速度計(jì)。陀螺儀可測(cè)范圍±250、±500、±1 000、±2 000°/s,加速度計(jì)可測(cè)范圍為±2、±4、±8、±16 g。MPU-6050 數(shù)據(jù)寄存器的輸出范圍是-7FFF~7FFF,也即是-32767~32767[4]。通過(guò)測(cè)量得到加速度、角度信息,計(jì)算得出當(dāng)前設(shè)備的運(yùn)動(dòng)姿態(tài),進(jìn)行輸入操作控制。
姿態(tài)控制多功能智能網(wǎng)絡(luò)終端設(shè)備以2.4 G Wi-Fi通信網(wǎng)絡(luò)為基礎(chǔ),依托ESP32 自帶的Wi-Fi 模塊實(shí)現(xiàn)網(wǎng)絡(luò)連接。Wi-Fi 技術(shù)具有眾多優(yōu)點(diǎn):建設(shè)便捷,無(wú)線(xiàn)電波覆蓋范圍廣,傳輸速度快、可靠性強(qiáng)、健康安全且穿透性強(qiáng)[5]。
顯示模塊包含屏幕PCB、分光棱鏡,通過(guò)分光棱鏡折射IPS 顯示屏,使其營(yíng)造出浮空效果。IPS 顯示屏是一款1.33 寸TFT 顯示屏,分辨率為240×240,由ST7789V 芯片驅(qū)動(dòng)。
姿態(tài)控制多功能智能網(wǎng)絡(luò)終端軟件開(kāi)發(fā)包括上位機(jī)和下位機(jī)2 部分??赏ㄟ^(guò)上位機(jī)向ESP32 燒錄固件,ESP32 可以通過(guò)網(wǎng)絡(luò)獲取數(shù)據(jù),將信息顯示到顯示屏上。系統(tǒng)軟件設(shè)計(jì)包括3 部分:固件程序、上位機(jī)程序和多任務(wù)控制程序。
該網(wǎng)絡(luò)終端設(shè)備的固件程序?yàn)樵贓SP32 上所運(yùn)行的固件程序。在PC 端編寫(xiě)完代碼后,通過(guò)上位機(jī)程序?qū)⒕幾g后的二進(jìn)制程序燒錄到ESP32 的板載Flash存儲(chǔ)器上。這樣設(shè)備即可在通電后自動(dòng)運(yùn)行其二進(jìn)制程序,并完成所設(shè)計(jì)的功能。固件程序包含驅(qū)動(dòng)層、數(shù)據(jù)處理層和定制化功能3 部分。
綜上所述,通過(guò)本文針對(duì)玉米大壟雙行密植高產(chǎn)栽培技術(shù)的分析,能夠進(jìn)一步提高農(nóng)民種植玉米的整體水平,保證玉米的增產(chǎn)增收,促進(jìn)農(nóng)民朋友的收入。
3.1.1 驅(qū)動(dòng)層
驅(qū)動(dòng)層包括MPU-6050 與顯示屏的驅(qū)動(dòng)程序。代碼編寫(xiě)環(huán)境基于VS Code 中的Platform-IO 環(huán)境,MPU-6050 類(lèi)庫(kù)基于Arduino MPU-6050 庫(kù)、IIC 庫(kù)進(jìn)行的二次開(kāi)發(fā)。根據(jù)其需求分析,通過(guò)包裝其Arduino庫(kù),創(chuàng)建的函數(shù)見(jiàn)表1。
表1 MPU-6050 的主要函數(shù)功能說(shuō)明
系統(tǒng)上電后,首先調(diào)用Init 函數(shù)初始化MPU-6050,調(diào)用setOrder,設(shè)置當(dāng)前相對(duì)方向。之后在輪詢(xún)系統(tǒng)中,調(diào)用Update 進(jìn)行狀態(tài)更新。在Update 中調(diào)用GetVirtureMotion6,判斷其相對(duì)運(yùn)動(dòng)狀態(tài)。
顯示屏驅(qū)動(dòng)以L(fǎng)VGL 庫(kù)和顯示屏的數(shù)據(jù)文檔,以及Arduino 官方庫(kù)中的ST7789 庫(kù)為主。即通過(guò)數(shù)據(jù)文檔對(duì)LVGL 進(jìn)行初始化參數(shù)設(shè)置。通過(guò)Arduino 官方庫(kù)對(duì)顯示屏驅(qū)動(dòng)ST7789 進(jìn)行初始化和參數(shù)設(shè)定。顯示類(lèi)函數(shù)見(jiàn)表2。
表2 顯示屏的主要函數(shù)功能說(shuō)明
系統(tǒng)上電后,首先調(diào)用Init 函數(shù)初始化顯示屏、LVGL 參數(shù),初始化完畢,進(jìn)入輪詢(xún)狀態(tài),重復(fù)routine函數(shù),循環(huán)顯示當(dāng)前緩存中存儲(chǔ)的顯示數(shù)據(jù)。
3.1.2 數(shù)據(jù)處理層
數(shù)據(jù)處理層主要為網(wǎng)絡(luò)數(shù)據(jù)處理。例如天氣app的獲取天氣函數(shù)為get_weather。其原理是通過(guò)樂(lè)鑫公司的Arduino espressif32 庫(kù)中的HTTPClient 庫(kù)進(jìn)行數(shù)據(jù)獲取。選用的天氣信息獲取網(wǎng)頁(yè)為易客天氣api。請(qǐng)求方法為GET。
3.1.3 定制化功能
姿態(tài)控制多功能智能網(wǎng)絡(luò)終端設(shè)備可以實(shí)現(xiàn)多種定制化功能。包括:Wi-Fi 串流投屏功能,天氣預(yù)報(bào)、空氣質(zhì)量、時(shí)鐘實(shí)時(shí)顯示功能,電子相冊(cè)功能和視頻播放功能等。
Wi-Fi 串流投屏功能的實(shí)現(xiàn)需要姿態(tài)控制功能切換到投屏軟件。在應(yīng)用時(shí),打開(kāi)設(shè)備的網(wǎng)絡(luò)連接,使其與上位機(jī)連接在同一Wi-Fi 網(wǎng)絡(luò)中,通過(guò)ESP32 端連接與電腦端相同Wi-Fi 網(wǎng)段,ESP32 可開(kāi)啟TCP 服務(wù),并顯示IP 地址與端口號(hào),與上位機(jī)進(jìn)行連接。采用市面上的開(kāi)源ESP32TFT 彩屏投屏程序,通過(guò)TCP 傳輸其PC 機(jī)選定的投屏范圍,采用單張圖片連續(xù)發(fā)送到顯示屏顯示的方式進(jìn)行投屏。
天氣預(yù)報(bào)、空氣質(zhì)量、時(shí)鐘實(shí)時(shí)顯示功能的實(shí)現(xiàn)需要打開(kāi)天氣顯示軟件界面。進(jìn)入界面后,設(shè)備首先進(jìn)行網(wǎng)絡(luò)連接,與云服務(wù)器建立連接,然后獲取當(dāng)前的IP地址、天氣預(yù)報(bào)、空氣質(zhì)量和時(shí)間等信息,將獲取的信息顯示在顯示屏上。
電子相冊(cè)功能的實(shí)現(xiàn)需要將照片存儲(chǔ)到設(shè)備的存儲(chǔ)器中,通過(guò)姿態(tài)控制實(shí)現(xiàn)照片的查看。由于屏幕大小比例為1∶1,且分辨率為240×240,所以需要在播放圖片前對(duì)其進(jìn)行分辨率縮放和比例切換。通過(guò)LVGL 自帶的圖片轉(zhuǎn)換工具進(jìn)行轉(zhuǎn)換。
視頻播放功能實(shí)現(xiàn)終端設(shè)備的視頻文件播放。由于屏幕大小比例為1∶1,且分辨率為240×240,所以需要在播放視頻前對(duì)其進(jìn)行分辨率縮放和比例切換。同時(shí)將常見(jiàn)的mp4 格式視頻轉(zhuǎn)換mjpeg 視頻格式。
上位機(jī)軟件采用Python 語(yǔ)言進(jìn)行編寫(xiě),通過(guò)tkinter 庫(kù)進(jìn)行GUI 設(shè)計(jì),利用serial 庫(kù)進(jìn)行串口信息獲取,采用樂(lè)鑫官方庫(kù)tool_esptoolpy 進(jìn)行固件燒寫(xiě)與定制化設(shè)計(jì)。該上位機(jī)基礎(chǔ)功能為串口通信、固件燒寫(xiě)與消息日志顯示。通過(guò)上位機(jī)程序?qū)⒄麄€(gè)固件程序燒寫(xiě)到ESP32 中,實(shí)現(xiàn)定制化功能。
多任務(wù)控制系統(tǒng)部分采用樂(lè)鑫論壇中的app_controller 開(kāi)源多任務(wù)控制器。通過(guò)時(shí)間戳形式執(zhí)行多個(gè)事件。實(shí)現(xiàn)終端設(shè)備的多功能合理切換。多任務(wù)調(diào)度流程如圖2 所示。在setup 函數(shù)中進(jìn)行app 加載,使控制器獲取app 的應(yīng)用程序結(jié)構(gòu)體信息,當(dāng)程序執(zhí)行到loop 函數(shù)時(shí),控制器將運(yùn)行當(dāng)前進(jìn)程。當(dāng)獲取到進(jìn)程切換命令,則調(diào)用當(dāng)前函數(shù)退出函數(shù),并依次運(yùn)行下一個(gè)應(yīng)用程序的初始化函數(shù)、入口函數(shù),并進(jìn)入該應(yīng)用程序運(yùn)行狀態(tài)。
圖2 多任務(wù)調(diào)度流程圖
該多任務(wù)控制器還提供massage 消息傳遞功能。該功能可以使app 通過(guò)massage 函數(shù)將數(shù)據(jù)發(fā)送到另一個(gè)app 中。目前主要通過(guò)該功能調(diào)用Wi-Fi 通信。即當(dāng)app 需要調(diào)用Wi-Fi 連接網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交換時(shí),即可調(diào)用其通信函數(shù)發(fā)送參數(shù)。
系統(tǒng)測(cè)試包括:串口模塊及上位機(jī)測(cè)試,顯示屏測(cè)試,加速度傳感器測(cè)試,應(yīng)用程序測(cè)試等。
首先將固件燒寫(xiě)到下位機(jī)中,然后進(jìn)行串口測(cè)試,結(jié)果如圖3 所示。圖3 中通過(guò)串口上位機(jī)可連續(xù)接收到不斷加1 的變量值。
圖3 串口測(cè)試結(jié)果
天氣app 運(yùn)行情況測(cè)試結(jié)果如圖4 所示。顯示屏顯示正常。
圖4 天氣app 測(cè)試結(jié)果
用戶(hù)id 為88587742,用戶(hù)密碼為cVQ8Aq1o,版本標(biāo)識(shí)v61,返回值轉(zhuǎn)義為中文,哈爾濱的城市id 為101050101 則請(qǐng)求鏈接為
https://yiketianqi.com/api?unescape=1&version=v61&appid =88587742&appsecret =cVQ8Aq1o&cityid =101050101
相冊(cè)程序測(cè)試結(jié)果如圖5 所示。
圖5 相冊(cè)測(cè)試結(jié)果
視頻播放測(cè)試結(jié)果如圖6 所示。圖中截取了幾張連續(xù)的圖片。
圖6 視頻測(cè)試結(jié)果
本文設(shè)計(jì)與實(shí)現(xiàn)了一個(gè)姿態(tài)控制多功能智能網(wǎng)絡(luò)終端設(shè)備,提出了一種基于物聯(lián)網(wǎng)技術(shù)和嵌入式技術(shù)的多功能智能網(wǎng)絡(luò)終端系統(tǒng)的設(shè)計(jì)方案,給出了智能網(wǎng)絡(luò)終端的軟硬件設(shè)計(jì)方法。該系統(tǒng)采用新穎的姿態(tài)控制功能切換和TFT 浮空顯示,可實(shí)現(xiàn)多種定制功能,如查看天氣預(yù)報(bào)、空氣質(zhì)量等信息,電子相冊(cè)、視頻播放等。測(cè)試結(jié)果表明:本文所設(shè)計(jì)的智能網(wǎng)絡(luò)終端運(yùn)行穩(wěn)定、可靠、用戶(hù)體驗(yàn)良好。