王魯淮,胡必玲,王 添,陳一鳴
(合肥師范學(xué)院 計(jì)算機(jī)學(xué)院,安徽 合肥 611731)
我國農(nóng)業(yè)發(fā)展目前呈現(xiàn)勞動生產(chǎn)率低、資源約束大、資源利用率低、勞動力成本大幅提升、農(nóng)業(yè)就業(yè)人口急劇下降、農(nóng)業(yè)勞動力老齡化嚴(yán)重等特點(diǎn)。為了促進(jìn)農(nóng)業(yè)和農(nóng)村經(jīng)濟(jì)發(fā)展,必須實(shí)現(xiàn)從傳統(tǒng)農(nóng)業(yè)、機(jī)械農(nóng)業(yè)到智慧化和智能化農(nóng)業(yè)的轉(zhuǎn)型升級。物聯(lián)網(wǎng)技術(shù)及傳感網(wǎng)技術(shù)的發(fā)展,為農(nóng)業(yè)的智慧化發(fā)展帶來了新的機(jī)遇。基于信息化技術(shù)實(shí)現(xiàn)種植環(huán)境土壤信息的及時獲取和智能化控制,能顯著減少農(nóng)業(yè)灌溉用水和肥料的浪費(fèi),節(jié)省種植成本,提高生產(chǎn)效率[1-2]。目前已有不少信息化解決方案能夠滿足不同領(lǐng)域的發(fā)展需要[3-11]。陳天華等[3]以ARM9系列S3C2410處理器、GPRS模塊和CS8900a網(wǎng)卡設(shè)計(jì)了基于GPRS的無線土壤墑情監(jiān)測預(yù)報(bào)系統(tǒng),實(shí)現(xiàn)了對土壤墑情信息的自動采集、存儲和無線網(wǎng)絡(luò)傳輸,并可以根據(jù)墑情信息實(shí)施定時、定量的灌溉控制。趙丹[4]采用微處理器STM32F103RBT6、樹莓派以及CC2530模塊設(shè)計(jì)了草原生態(tài)環(huán)境狀態(tài)監(jiān)測系統(tǒng),以實(shí)現(xiàn)對草原環(huán)境中土壤溫濕度等信息以及草原圖像信息的遠(yuǎn)程監(jiān)測,并將環(huán)境數(shù)據(jù)在云端數(shù)據(jù)庫中進(jìn)行存儲;方圓[5]基于ZigBee和CC2530設(shè)計(jì)了棉田土壤溫濕度監(jiān)控系統(tǒng);曾猛[6]設(shè)計(jì)了無線網(wǎng)絡(luò)蔬菜大棚測控系統(tǒng),只實(shí)現(xiàn)了數(shù)據(jù)采集;黃桑[7]實(shí)現(xiàn)了基于物聯(lián)網(wǎng)的溫室大棚種植監(jiān)控系統(tǒng);文獻(xiàn)[8-11]分別基于物聯(lián)網(wǎng)技術(shù)實(shí)現(xiàn)了蔬菜科技園、農(nóng)田、果園和菜田土壤信息采集和數(shù)據(jù)化管理。但上述系統(tǒng)有的采用的硬件成本太高,部署費(fèi)用大,有的無法實(shí)現(xiàn)遠(yuǎn)程無線數(shù)據(jù)采集,且普遍無報(bào)警提醒和反向智能控制功能,無法及時地對農(nóng)業(yè)生態(tài)環(huán)境進(jìn)行控制。本文基于低成本的CC2530和ESP8266模塊,實(shí)現(xiàn)對土壤溫濕度、鹽度值的實(shí)時采集和遠(yuǎn)程監(jiān)測,同時在土壤濕度較低時在手機(jī)通知欄進(jìn)行報(bào)警提醒,支持用戶遠(yuǎn)程開啟水泵實(shí)現(xiàn)自動澆水。系統(tǒng)能夠?yàn)榉N植人員提供便捷可靠的信息化解決方案。
系統(tǒng)由數(shù)據(jù)采集端、遠(yuǎn)程控制端、服務(wù)器端和數(shù)據(jù)查詢端構(gòu)成。數(shù)據(jù)采集端基于CC2530節(jié)點(diǎn)進(jìn)行了傳感網(wǎng)的設(shè)計(jì),實(shí)現(xiàn)土壤溫濕度和鹽度信息采集,并通過ESP8266將數(shù)據(jù)上傳到支持MQTT協(xié)議的EMQ X Cloud云服務(wù)器上。遠(yuǎn)程控制端通過對ESP8266 MCU開發(fā)板進(jìn)行路由配置以接收EMQ X Cloud云服務(wù)器下發(fā)的控制指令,調(diào)控高低電平來控制繼電器開關(guān)以控制水泵的啟動和關(guān)閉。服務(wù)器端主要以云服務(wù)器為核心,EMQ X Cloud將接收ESP8266上傳的數(shù)據(jù)并通過規(guī)則引擎將數(shù)據(jù)保存到MySQL數(shù)據(jù)庫,同時將實(shí)時數(shù)據(jù)發(fā)送給訂閱該主題的用戶。數(shù)據(jù)查詢端主要實(shí)現(xiàn)用戶認(rèn)證、登錄注冊、歷史記錄、統(tǒng)計(jì)分析等功能。移動端通過連接EMQ X Cloud進(jìn)行主題訂閱,并將訂閱的實(shí)時數(shù)據(jù)以折線圖的形式展現(xiàn)給用戶。系統(tǒng)總體架構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)
系統(tǒng)土壤數(shù)據(jù)采集端主要由CC2530單片機(jī)、ESP8266 WiFi模塊以及土壤溫濕度、電導(dǎo)率三合一傳感器、RS 485轉(zhuǎn)UART串口轉(zhuǎn)換模塊組成。由于土壤三合一傳感器采用ModBus-RTU通信規(guī)約,提供RS 485通信串口,而CC2530開發(fā)板僅支持UART和TTL通信串口,于是采用RS 485轉(zhuǎn)UART串口模塊進(jìn)行通信轉(zhuǎn)換。單個數(shù)據(jù)采集終端節(jié)點(diǎn)硬件連接示意圖如圖2所示,而ESP8266 WiFi模塊則連接在ZigBee網(wǎng)關(guān)節(jié)點(diǎn)上以實(shí)現(xiàn)將各終端節(jié)點(diǎn)數(shù)據(jù)匯總后發(fā)往服務(wù)器。
圖2 數(shù)據(jù)采集終端節(jié)點(diǎn)連接示意圖
系統(tǒng)水泵控制端采用ESP8266 MCU開發(fā)板與繼電器、水泵連接,示意圖如圖3所示。
圖3 遠(yuǎn)程控制設(shè)備連接示意圖
數(shù)據(jù)采集功能的實(shí)現(xiàn)由ZigBee無線傳感網(wǎng)完成[12-13]?;赯-Stack協(xié)議棧首先進(jìn)行各采集節(jié)點(diǎn)和匯聚節(jié)點(diǎn)的ZigBee組網(wǎng)。各數(shù)據(jù)采集節(jié)點(diǎn)的CC2530模塊每3 s向傳感器發(fā)送符合ModBus-RTU通信規(guī)約的問詢幀,傳感器接收到正確的問詢幀后會響應(yīng)給CC2530所需的應(yīng)答幀;CC2530進(jìn)一步通過串口回調(diào)的方法獲取溫度、濕度、鹽度對應(yīng)的應(yīng)答幀,并通過進(jìn)制轉(zhuǎn)換將應(yīng)答幀中的數(shù)據(jù)區(qū)提取出來,最后將數(shù)據(jù)通過ZigBee技術(shù)無線發(fā)送給網(wǎng)關(guān)協(xié)調(diào)器。ZigBee網(wǎng)關(guān)匯聚其他終端節(jié)點(diǎn)采集的數(shù)據(jù)以及16位短地址和RSSI信號強(qiáng)度;并將這些數(shù)據(jù)格式化為JSON數(shù)據(jù)包,通過串口發(fā)送給ESP8266 WiFi模塊[14]。ESP8266模塊在進(jìn)行路由配置后會自動通過MQTT協(xié)議連接到EMQ X Cloud,推送串口接收到的數(shù)據(jù)到EMQ X Cloud[15]。
ESP8266 MCU開發(fā)板、繼電器、水泵進(jìn)行硬件連接后,通過MQTT協(xié)議與EMQ X Cloud云服務(wù)器進(jìn)行連接,并使用回調(diào)函數(shù),循環(huán)監(jiān)聽控制指令。其中具體指令定義如下:
在騰訊云提供的云服務(wù)器(操作系統(tǒng)為CentOS 7)中,搭建遠(yuǎn)程MySQL、Redis數(shù)據(jù)庫,為后端部署項(xiàng)目搭建好符合的環(huán)境。具體步驟如下:
(1)云服務(wù)器搭建:安裝MySQL 5.7、Redis 5、Open JDK 1.8、Maven 3、Alibaba Nacos 1.4.1、EMQ X,配置相關(guān)環(huán)境。
(2)將Spring Cloud微服務(wù)項(xiàng)目打包成jar,分別是auth.jar、gateway.jar、service.jar。將它們上傳至云服務(wù)器中,采用systemctl命令將多個jar包以及其他應(yīng)用注冊到服務(wù)器中,實(shí)現(xiàn)多應(yīng)用后臺運(yùn)行。
(3)開放相關(guān)端口,以便用戶可以訪問。
同時采用EMQ X提供的規(guī)則引擎實(shí)現(xiàn)數(shù)據(jù)持久化,當(dāng)ESP8266 WiFi模塊上傳上來的數(shù)據(jù)符合設(shè)定的規(guī)則,則把數(shù)據(jù)保存到MySQL數(shù)據(jù)庫中。
規(guī)則SQL設(shè)定如下:
SELECT clientid as id,username as name,
payload.addr16 as addr16,payload.rssi as rssi,
payload.humidity as humidity,payload.temp as temp,
payload.ec as ec,timestamp as up_timestamp
FROM "esp8266/soil"
WHERE name = 'esp8266'
響應(yīng)動作定義如下:
insert into soil_info(addr16,rssi,humidity,temp,ec,time)
values
(${addr16},${rssi},${humidity},${temp},${ec},
FROM_UNIXTIME(${up_timestamp}/1000))
移動端主要實(shí)現(xiàn)用戶注冊和登錄、歷史數(shù)據(jù)查詢、統(tǒng)計(jì)分析和實(shí)時數(shù)據(jù)功能。移動端的登錄界面和菜單欄界面設(shè)計(jì)分別如圖4、圖5所示。
圖4 登錄界面
圖5 菜單欄界面
用戶注冊功能是通過向“/auth/logUp”接口發(fā)送post請求實(shí)現(xiàn)的。同時在MySQL數(shù)據(jù)庫中會對請求中的用戶名進(jìn)行檢索,并判斷是否已存在其他同名用戶,如果有則注冊失敗,沒有則注冊成功并把用戶信息保存到用戶表中。
用戶登錄功能同樣是通過發(fā)送post請求提交用戶名和密碼,并在MySQL數(shù)據(jù)庫查詢并比對賬號和密碼,如果比對成功,則登錄成功。使用JWT生成一個JSON格式的token值并放入響應(yīng)結(jié)果中,與此同時還需要把token保存到Redis數(shù)據(jù)庫中。
數(shù)據(jù)查詢功能是通過發(fā)送get請求實(shí)現(xiàn)的,并提供4個參數(shù)便于用戶篩選設(shè)備、日期以及分頁,參數(shù)分別是addr16、datetime、current、size,代表著設(shè)備號、日期范圍、當(dāng)前頁、每頁條數(shù)。服務(wù)器端將根據(jù)請求參數(shù)向MySQL進(jìn)行分頁查詢,并將結(jié)果包裝成JSON數(shù)據(jù)返回給移動端。
統(tǒng)計(jì)分析功能同樣基于請求發(fā)送實(shí)現(xiàn)。服務(wù)器端會根據(jù)請求參數(shù)進(jìn)行每個時間段分隔。再向MySQL中使用AVG、MAX、MIN函數(shù)查詢獲得每個時間段的平均值、最大值、最小值,通過計(jì)算得出該天的方差值,然后將這些值包裝成JSON數(shù)據(jù)返回給移動端。
當(dāng)用戶登錄成功后,APP里的MQTT客戶端服務(wù)會自動通過MQTT協(xié)議連接到EMQ X Cloud,訂閱主題ESP8266/soil并通過回調(diào)獲取剛剛發(fā)布的土壤數(shù)據(jù),實(shí)現(xiàn)實(shí)時查看數(shù)據(jù)的功能。接收到數(shù)據(jù)后,APP會以折線圖的形式展示給用戶觀看,讓用戶能夠更加清晰地了解土壤的實(shí)時狀態(tài)。如果土壤當(dāng)前的數(shù)據(jù)超過了系統(tǒng)所設(shè)定的閾值,那么APP會自動發(fā)送帶有聲音和振動的消息來提醒用戶當(dāng)前土壤出現(xiàn)了問題,并且在實(shí)時數(shù)據(jù)界面上還可以通過開關(guān)澆水按鈕來遠(yuǎn)程控制水泵,實(shí)現(xiàn)遠(yuǎn)程控制澆水的能力。最后可以通過選項(xiàng)卡選擇要顯示的設(shè)備實(shí)時數(shù)據(jù)界面。
本部分對系統(tǒng)各功能模塊進(jìn)行測試,以驗(yàn)證系統(tǒng)功能的完成度。系統(tǒng)設(shè)備實(shí)物連接如圖6所示。
圖6 設(shè)備連接圖
經(jīng)測試,系統(tǒng)能正常進(jìn)行土壤各項(xiàng)數(shù)據(jù)采集,服務(wù)器端能正常對數(shù)據(jù)進(jìn)行接收,控制端能正常進(jìn)行水泵開啟與關(guān)閉。同時手機(jī)端能正常接收報(bào)警信息,APP能正常進(jìn)行實(shí)時數(shù)據(jù)監(jiān)測、歷史記錄、統(tǒng)計(jì)分析的查詢,各功能均運(yùn)行良好。具體情況如圖7~圖10所示。
圖7 手機(jī)通知欄警告圖
圖8 歷史記錄
圖9 實(shí)時數(shù)據(jù)
圖10 統(tǒng)計(jì)分析
本文設(shè)計(jì)實(shí)現(xiàn)的土壤監(jiān)測系統(tǒng),能夠?qū)崿F(xiàn)對土壤信息的分布式無線采集和云存儲;同時支持注冊用戶登錄移動端對土壤實(shí)時數(shù)據(jù)、歷史數(shù)據(jù)進(jìn)行查看和統(tǒng)計(jì)分析;并在土壤濕度低于設(shè)定值時給用戶手機(jī)發(fā)送警告通知,以支持用戶遠(yuǎn)程控制水泵進(jìn)行澆水。本系統(tǒng)功耗低、成本低,為精準(zhǔn)農(nóng)業(yè)的實(shí)現(xiàn)提供了一種技術(shù)方案。今后一段時間的工作將優(yōu)化系統(tǒng)設(shè)計(jì),在校園藍(lán)莓基地進(jìn)行實(shí)際部署應(yīng)用。
物聯(lián)網(wǎng)技術(shù)2023年11期