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