蘇俊維
(廣西民族師范學(xué)院,廣西 崇左532200)
隨著嵌入式技術(shù)的發(fā)展,智慧農(nóng)業(yè)被農(nóng)民關(guān)注,雖然國外農(nóng)業(yè)智慧化和集成化水平很高,但是國內(nèi)農(nóng)業(yè)還以人工管理為主[1]。嵌入式領(lǐng)域的發(fā)展最初是由數(shù)碼電子等移動消費產(chǎn)品帶動,但是隨著人們生活水平的提高,更擴大了這些嵌入式設(shè)備的應(yīng)用范圍,但是國內(nèi)智慧農(nóng)業(yè)還處于初級水平,還需要不斷探索。
2012 年嵌入式系統(tǒng)應(yīng)用卷起熱潮,當(dāng)時以ARMv4 架構(gòu)的ARM9 系列處理器為代表衍生出很多消費級電子產(chǎn)品;從2013 年至今,流行ARMv7 架構(gòu)的Cortex系列的處理器:其中STM32 單片機占據(jù)大部分中低檔電子消費市場,成本比ARM9 低很多,其中高端電子消費市場采用Cortex-A9 處理器方案,搭載Android 系統(tǒng)。雖然ARM9 時代已遠(yuǎn)去,但是基于MIPS架構(gòu)的路由器芯片卻活躍了,國企能低成本生產(chǎn)該芯片。智能路由OpenWrt 系統(tǒng)是嵌入式的Linux 操作系統(tǒng),其開放源代碼和免費的優(yōu)點相比半開源的Android 系統(tǒng)更具有競爭力。
本文采用了搭載國產(chǎn)雷凌公司生產(chǎn)的RT3070 主控芯片的路由器,該路由器型號為HG255d,該路由器作為主控單元來實現(xiàn)中小規(guī)模智慧農(nóng)業(yè)的集成化管理和監(jiān)控,形成一套系統(tǒng)方案。
圖1 總體系統(tǒng)結(jié)構(gòu)圖
該系統(tǒng)包括了ESP32-CAM圖傳模塊、STM32F103 控制模塊、氣象數(shù)據(jù)采集儀模塊和路由器4 部分組成??傮w系統(tǒng)結(jié)構(gòu)如圖1所示。
該系統(tǒng)控制中心為HG255d 智能路由器,也作為網(wǎng)絡(luò)服務(wù)器。該路由器有一個USB接口,所以需要用一個USB擴展器擴展USB的數(shù)量以滿足各種USB設(shè)備的連接。系統(tǒng)設(shè)計以模塊化設(shè)計為主,各個模塊獨立工作。模塊都外接了一些設(shè)備或者傳感器,并且每個模塊都與主控智能路由器通過有線或無線連接。系統(tǒng)還配備了兩種智能農(nóng)業(yè)監(jiān)控的客戶端:手機客戶端和電腦客戶端,其作用是讓農(nóng)民通過該客戶端遠(yuǎn)程監(jiān)控農(nóng)場。
系統(tǒng)的硬件設(shè)計以現(xiàn)成的電子模塊組合為主,直接采用具有工業(yè)級別性能的模塊組成硬件系統(tǒng),滿足系統(tǒng)穩(wěn)定性和擴展性。
2.1 ESP32-CAM圖傳模塊。ESP32-CAM模塊搭載了樂鑫公司生產(chǎn)的ESP32 處理器,該模塊具有WIFI 聯(lián)網(wǎng)功能,可外接OV2640 攝像頭。主要作用是采集不同地點的農(nóng)作物生長狀態(tài)的圖片或者是土壤狀態(tài)的圖片??梢圆渴鸲鄠€,通過無線WIFI 的方式與服務(wù)器連接,供電采用高能鋰電池18640 電池組,以滿足較高功耗需求,同時也滿足可移動的需求。
2.2 STM32F103 控制模塊。STM32F103 單片機是該系統(tǒng)最重要的部分,是控制繼電器、傳感器、舵機和水泵的監(jiān)控機構(gòu)。該單片機IO 口和串口數(shù)量多,分配一個串口通過USB 轉(zhuǎn)串口線與USB Hub 連接,最終與服務(wù)器硬件相連;傳感器包括:18B20 防水溫度傳感器、DHT11 溫濕度傳感器和BH1750FVI-TR 光照傳感器,這些傳感器主要是采集農(nóng)作物的生長環(huán)境參數(shù);繼電器控制燈關(guān)照明;舵機是負(fù)責(zé)控制遮陽和遮雨布的拉伸;水泵負(fù)責(zé)控制抽水灌溉;該模塊可部署多個,達到多點控制效果,該模塊的功耗較低,直接采用路由器USB口提供的電源供電。
2.3 氣象數(shù)據(jù)采集儀模塊。該模塊是具有商用級別的公司生產(chǎn)的現(xiàn)成模塊,該采集儀是配合氣象站傳感器配套使用,構(gòu)成了一個自動氣象站采集系統(tǒng)。該系統(tǒng)通過USB轉(zhuǎn)串口直接跟USB Hub 連接,最后與服務(wù)器智能路由相連。該模塊主要采集大氣溫度、風(fēng)速、二氧化碳濃度、風(fēng)向和PM2.5 等大氣參數(shù)傳給服務(wù)器,耗電不低,但是搭載了一個太陽能充電裝置,在白天,模塊消耗的電能可以由太陽能供給。
3.1 應(yīng)用程序設(shè)計。應(yīng)用程序設(shè)計主要是針對路由器,Linux系統(tǒng)的特點是能在系統(tǒng)安裝軟件包和直接運行由C語言編寫并且通過電腦交叉編譯生成的應(yīng)用程序可執(zhí)行文件。因為路由器要跟各個模塊通信,所以對每一個模塊都要單獨設(shè)計通信的應(yīng)用程序,為了提高系統(tǒng)的集成化,盡量少編寫驅(qū)動程序。智能路由無線通信是基于TCP/IP 協(xié)議使用套接字Socket 進行應(yīng)用程序開發(fā)實現(xiàn)與無線WIFI 通信的模塊連接;另外還要編寫串口應(yīng)用程序接收單片機串口傳輸?shù)臄?shù)據(jù),路由器系統(tǒng)本身的系統(tǒng)就附帶有串口驅(qū)動,開發(fā)者只要在應(yīng)用程序里面調(diào)用串口驅(qū)動即可控制路由器的串口傳輸數(shù)據(jù),最后還要編寫MQTT協(xié)議有關(guān)遠(yuǎn)程控制程序以便用戶能在遠(yuǎn)方獲取農(nóng)場作物生長的參數(shù)并能控制農(nóng)場的電器。
各種應(yīng)用程序開發(fā)完成后,需要結(jié)合多線程并發(fā)運行,不同的應(yīng)用程序的數(shù)據(jù)交互使用管道或者是套接字的編程方式完成。
3.2 驅(qū)動程序設(shè)計。驅(qū)動程序的設(shè)計涉及到硬件底層,根據(jù)硬件結(jié)構(gòu)去地編寫程序達到控制硬件的效果。本文ESP32-CAM圖傳模塊主要編寫的是抓圖程序,將圖像傳感器的數(shù)據(jù)通過WIFI 傳輸?shù)椒?wù)器,采集圖片的程序主要采用了現(xiàn)成的庫完成;本文STM32F103 模塊主要編寫的是單片機控制程序,包括繼電器控制驅(qū)動、串口驅(qū)動、各種傳感器驅(qū)動和舵機PWM波控制驅(qū)動,這些驅(qū)動也是借助了ST公司官方提供的庫函數(shù)來實現(xiàn);氣象數(shù)據(jù)采集儀這個模塊比較特殊,是利用現(xiàn)成的模塊,服務(wù)器只需打開串口驅(qū)動獲取氣象采集儀通過串口回傳的數(shù)據(jù)并且解析就能獲取氣象數(shù)據(jù),開發(fā)者不用了解采集儀的內(nèi)部結(jié)構(gòu),只需了解傳輸數(shù)據(jù)的格式即可獲取有價值的氣象數(shù)據(jù),氣象數(shù)據(jù)格式如圖2 所示。
圖2 氣象數(shù)據(jù)格式
3.3 客戶端程序設(shè)計??蛻舳顺绦蛟O(shè)計是系統(tǒng)最關(guān)鍵的地方,因為用戶不需要每天到農(nóng)場去打理農(nóng)作物,只需要通過移動終端遠(yuǎn)程操作智能農(nóng)業(yè)系統(tǒng)對作物進行有效管理,分為手機客戶端和電腦客戶端。
手機客戶端開發(fā)是以安卓APP 為載體,安裝到安卓手機上實現(xiàn)遠(yuǎn)程監(jiān)控,要實現(xiàn)低成本的遠(yuǎn)程監(jiān)控,使用MQTT 協(xié)議通信,本文采用中國移動物聯(lián)網(wǎng)開發(fā)平臺的MQTT服務(wù)器實現(xiàn)了消息訂閱和發(fā)布,完成遠(yuǎn)程數(shù)據(jù)的傳輸,程序也是借助了現(xiàn)成的Java 版本的MQTT庫來實現(xiàn),另外還要將監(jiān)控程序?qū)懗煞?wù)的形式在手機后臺長期運行,以便有突發(fā)情況發(fā)生的時候通知用戶。手機客戶端主要實現(xiàn)的功能是遠(yuǎn)程監(jiān)控,在局域網(wǎng)的條件下還能實現(xiàn)視頻傳輸,視頻傳輸?shù)脑硎抢肊SP32-CAM模塊提高抓圖的頻率從而形成圖片流,推流到手機界面的時候形成視頻。
電腦客戶端開發(fā)以Java 程序為主,使用Swing組件現(xiàn)成的方法設(shè)計出簡潔的UI 界面獲取氣象站參數(shù)信息。原理是基于TCP/IP 協(xié)議發(fā)送http 請求去獲取服務(wù)器的響應(yīng),路由器收請求就通過串口獲取氣象數(shù)據(jù)采集儀的數(shù)據(jù),再通過局域網(wǎng)傳輸給電腦客戶端,電腦客戶端將這些有規(guī)律的字符串解析之后將氣象數(shù)據(jù)顯示在界面上,數(shù)據(jù)將按照時間存入MySQL 數(shù)據(jù)庫供用戶分析歷史數(shù)據(jù),電腦客戶端如圖3 所示。
圖3 電腦客戶端
3.4 視頻傳輸程序的設(shè)計。系統(tǒng)控制中心的智能路由器可以移植嵌入式Mjpg-Streamer 開源程序完成視頻采集,該程序不僅能驅(qū)動攝像頭采集視頻流顯示在局域網(wǎng)的瀏覽器上,而且能通過瀏覽器的按鈕控制攝像轉(zhuǎn)動。程序的工作流程是:路由器運行一個抓圖線程不斷抓取圖片流共享到內(nèi)存空間,同時監(jiān)聽客戶端的請求,當(dāng)有客戶端連接時,將內(nèi)存空間的圖片流推送到客戶端的瀏覽器界面形成視頻流;另外運行一個線程來監(jiān)聽客戶端控制攝像頭的指令。程序流程圖如圖4 所示。
圖4 視頻傳輸程序流程圖
通過該系統(tǒng),用戶可以方便遠(yuǎn)程查看中小型農(nóng)場的農(nóng)作物生長環(huán)境參數(shù),又能查看農(nóng)作物周圍的大氣環(huán)境參數(shù),最重要的是可以遠(yuǎn)程監(jiān)控農(nóng)作物的生長狀態(tài)和集成化管理農(nóng)作物,該系統(tǒng)采用商用路由器二次開發(fā)而成,具有穩(wěn)定、安全、易擴展和性價比高等優(yōu)點,有一定的市場推廣價值。