胡浩明 陳康 藍(lán)貝蓓
(桂林電子科技大學(xué)信息與通信學(xué)院,廣西桂林 541004)
目前傳感器技術(shù)在農(nóng)業(yè)中應(yīng)用最普遍的領(lǐng)域就是精準(zhǔn)農(nóng)業(yè)和智慧農(nóng)業(yè)。通過對(duì)氣候、土壤、水、空氣質(zhì)量、作物成長、魚禽畜的生長,甚至是設(shè)備和勞動(dòng)力的成本以及可用性方面的實(shí)時(shí)數(shù)據(jù)采集,預(yù)測分析之后用來做出更科學(xué)、更精準(zhǔn)的決策。另一方面,農(nóng)業(yè)作為中國的基礎(chǔ)產(chǎn)業(yè),面臨著農(nóng)產(chǎn)品需求不斷在增加、資源短缺、氣候多變導(dǎo)致災(zāi)害頻發(fā)。因此,如何以農(nóng)業(yè)物聯(lián)網(wǎng)技術(shù)為核心的信息化基礎(chǔ),提升農(nóng)業(yè)信息化服務(wù),打開智慧農(nóng)業(yè)新局面,實(shí)現(xiàn)農(nóng)業(yè)現(xiàn)代化和信息化的跨越式發(fā)展,成為一個(gè)熱門的研究方向。
本文設(shè)計(jì)在智慧農(nóng)業(yè)監(jiān)測系統(tǒng)就是物聯(lián)網(wǎng)的一個(gè)經(jīng)典模式,分為硬件采集、終端發(fā)送、服務(wù)器處理、應(yīng)用層調(diào)用等部分,在硬件設(shè)計(jì)中使用了專業(yè)的土壤和大氣相關(guān)的傳感器,使得數(shù)據(jù)更加準(zhǔn)確和具有說服力。
在農(nóng)業(yè)生產(chǎn)的管理過程中,目前大部分用戶都是采用人工實(shí)地管理,這樣的管理方式給用戶帶來很多的不便,而目前世面上的物聯(lián)網(wǎng)技術(shù),北斗導(dǎo)航定位技術(shù)、遠(yuǎn)程監(jiān)控技術(shù)都已經(jīng)很成熟,所以為了解決這些問題,本項(xiàng)目研究和設(shè)計(jì)一款智慧農(nóng)業(yè)監(jiān)測系統(tǒng),該系統(tǒng)主要完成大氣溫度、空氣濕度、土壤情況、位置信息等相關(guān)的數(shù)據(jù)采集,并通過無線通信技術(shù)發(fā)送給用戶,以便用戶實(shí)時(shí)了解情況,用戶針對(duì)不同的情況采取不同的解決方案,以便提高農(nóng)業(yè)生產(chǎn)管理效率。本項(xiàng)目的研究內(nèi)容可以大致分為以下五個(gè)部分:
(1)設(shè)計(jì)一個(gè)硬件傳感器采集電路進(jìn)行數(shù)據(jù)采集并通過無線通信模塊發(fā)送至總下位機(jī),其中包括大氣溫度、空氣濕度、土壤濕度、地理位置等數(shù)據(jù)。(2)設(shè)計(jì)一個(gè)總下位機(jī),用于通過無線通信模塊接收采集端發(fā)送過來的數(shù)據(jù),最后通過串口將數(shù)據(jù)發(fā)送到數(shù)據(jù)監(jiān)測終端(PC 端)。(3)搭建數(shù)據(jù)監(jiān)測終端,該終端可以實(shí)現(xiàn)使用串口通信接收總下位機(jī)發(fā)送的數(shù)據(jù)、查看數(shù)據(jù)、將數(shù)據(jù)打包發(fā)送至指定的郵箱或者發(fā)送短信。(4)搭建數(shù)據(jù)庫,用來存儲(chǔ)數(shù)據(jù)方便后續(xù)對(duì)數(shù)據(jù)的開發(fā)。(5)開發(fā)網(wǎng)站和安卓端APP,可實(shí)現(xiàn)人機(jī)交互。
針對(duì)以上研究內(nèi)容,系統(tǒng)的設(shè)計(jì)框圖如圖1 所示。
圖1 總體設(shè)計(jì)框圖
2.1.1 硬件系統(tǒng)設(shè)計(jì)
硬件系統(tǒng)分為五大部分:采集節(jié)點(diǎn)主控、傳感器采集、無線通信組件、接收終端、PC 上位機(jī)。使用了LORA 模塊進(jìn)行將數(shù)據(jù)從節(jié)點(diǎn)發(fā)送終端的操作,使用ESP8266WiFi 模塊將數(shù)據(jù)從硬件終端發(fā)送至TCP 服務(wù)器,TCP 服務(wù)器和HTTP 服務(wù)器共用一套數(shù)據(jù)庫,可以直接將應(yīng)用層連接起來。硬件設(shè)計(jì)框圖如圖2 所示,最終的效果就是在硬件采集的數(shù)據(jù)可以依次經(jīng)過采集結(jié)點(diǎn)、接收終端、TCP 服務(wù)器、HTTP 服務(wù)器、PC 上位機(jī)。
圖2 硬件設(shè)計(jì)框圖
2.1.2 編程實(shí)現(xiàn)
采集設(shè)備程序的設(shè)計(jì)使用順序結(jié)構(gòu)的模塊編程的編程方式。主程序設(shè)計(jì)框圖如圖3 所示。
圖3 主程序設(shè)計(jì)框圖
主程序的設(shè)計(jì)思路大致為:首先要規(guī)劃好哪些變量是需要設(shè)置為全局屬性的而哪些要設(shè)置為臨時(shí)的,其次是由于采集節(jié)點(diǎn)有比較多的傳感器數(shù)據(jù),所以為了方便管理定義了一個(gè)結(jié)構(gòu)體來存放,這樣增強(qiáng)了代碼的可讀性和維護(hù)性。進(jìn)入main()函數(shù),先定義和初始化好相關(guān)的局部變量,然后對(duì)各個(gè)模塊進(jìn)行初始化,如:串口、GPS、各種傳感器等相關(guān)初始化。接下來就是對(duì)設(shè)備的定位,GPS 開始獲取數(shù)據(jù),主控接收GPS 模塊發(fā)送過來的數(shù)據(jù)并進(jìn)行解析,如果重復(fù)獲取數(shù)據(jù)都未能將必要的位置信息解析出來,可以認(rèn)為設(shè)備當(dāng)前位置的GPS 信號(hào)比較弱或者接收不到GPS 信號(hào),這個(gè)時(shí)候程序會(huì)放棄GPS 模塊,將直接往下執(zhí)行。接下來就是等待接收端發(fā)送過來的信號(hào),如果收到則開始采集數(shù)據(jù)和發(fā)送數(shù)據(jù)。
終端設(shè)備程序程序設(shè)計(jì)主要是無線串口與采集設(shè)備通信和WIFI 模塊與TCP 服務(wù)器通信。主函數(shù)的設(shè)計(jì)思路就是將所有模塊都開始初始化之后開始對(duì)WIFI 模塊進(jìn)行聯(lián)網(wǎng)測試,在指定WLAN 的情況之下,將自動(dòng)完成接入網(wǎng)絡(luò),并且與TCP 服務(wù)器連接,如果聯(lián)網(wǎng)成功,則開始循環(huán)發(fā)送信號(hào)給各位從機(jī)接收采集設(shè)備的數(shù)據(jù)。
在系統(tǒng)設(shè)計(jì)中,由于需要實(shí)現(xiàn)多對(duì)一的通信加上串口不能同時(shí)進(jìn)行多對(duì)一的通信,所以最終選用了廣播與監(jiān)聽模式,同時(shí)需要采用輪詢機(jī)制,一點(diǎn)對(duì)多點(diǎn)通信, N 個(gè)從節(jié)點(diǎn)輪流與中心點(diǎn)通信,從節(jié)點(diǎn)上傳,等待中心點(diǎn)收到后返回確認(rèn),然后下一個(gè)節(jié)點(diǎn)再開始上傳,直到所有N 個(gè)節(jié)點(diǎn)全部完成,一個(gè)循環(huán)周期結(jié)束該結(jié)構(gòu)本質(zhì)上還屬于點(diǎn)對(duì)點(diǎn)通信,但是加入了分時(shí)處理, N個(gè)從節(jié)點(diǎn)之間的頻點(diǎn)可以分開,也可重復(fù)使用。優(yōu)勢在于單項(xiàng)目成本低, 不足之處是僅適合從節(jié)點(diǎn)數(shù)量不大和網(wǎng)絡(luò)實(shí)時(shí)性要求不高的應(yīng)用。
Web 主要由前端交互界面設(shè)計(jì),后端數(shù)據(jù)處理兩部分組成。其中前端主要進(jìn)行用戶交互、數(shù)據(jù)可視化分析、地圖構(gòu)建與定位,后端主要進(jìn)行數(shù)據(jù)的存儲(chǔ)、傳輸和對(duì)前端請(qǐng)求的響應(yīng)。其結(jié)構(gòu)框圖如圖4 所示。
圖4 WEB 設(shè)計(jì)框架
各部分具體功能為:(1)前端設(shè)計(jì)注冊界面,獲取用戶基本信息并上傳到后端。(2)前端設(shè)計(jì)用戶登錄界面驗(yàn)證用戶登錄信息。(3)前端獲取傳感器數(shù)據(jù)并進(jìn)行數(shù)據(jù)可視化分析。(4)前端設(shè)計(jì)監(jiān)測點(diǎn)地圖并實(shí)現(xiàn)傳感器定位。(5)后端設(shè)計(jì)數(shù)據(jù)庫結(jié)構(gòu)保存用戶注冊信息。(6)后端監(jiān)測并接收前端的請(qǐng)求并做出相應(yīng)的應(yīng)答。(7)后端獲取用戶各個(gè)傳感器的數(shù)據(jù)并進(jìn)行動(dòng)態(tài)處理。(8)前后端通過AJAX 進(jìn)行數(shù)據(jù)交互。
2.3.1 設(shè)計(jì)框圖
APP 部分主要分為三大部分,主要包括數(shù)據(jù)地塊數(shù)據(jù)獲取部分、系統(tǒng)信息提示部分、個(gè)人信息管理部分。具體結(jié)構(gòu)圖如圖5 所示。
圖5 app 設(shè)計(jì)框圖
2.3.2 功能介紹
2.3.2.1 數(shù)據(jù)獲取部分:利用HTTP 請(qǐng)求從服務(wù)器的數(shù)據(jù)庫上獲取地塊的數(shù)據(jù),之后在進(jìn)行數(shù)據(jù)解析在APP 上呈現(xiàn)出來。
2.3.2.2 系統(tǒng)信息提示部分:每隔十分鐘獲取一次服務(wù)器數(shù)據(jù)的各項(xiàng)數(shù)據(jù),在APP 內(nèi)對(duì)與標(biāo)準(zhǔn)數(shù)據(jù)進(jìn)行對(duì)比,數(shù)據(jù)出現(xiàn)異常則給用戶發(fā)送數(shù)據(jù)異常消息。
2.3.2.3 個(gè)人信息管理部分:通過HTTP 數(shù)據(jù)請(qǐng)求和數(shù)據(jù)上傳方式,獲取和修改個(gè)人信息。系統(tǒng)更新通知會(huì)通過“系統(tǒng)通知”模塊發(fā)送給用戶。
2.3.3 定位實(shí)現(xiàn)
節(jié)點(diǎn)定位使用了高德地圖的API 接口服務(wù),在高德地圖API 官方網(wǎng)站下載Android 的SDK 包就可以在Android studio中使用API 提供的接口函數(shù),將數(shù)據(jù)的經(jīng)緯度傳入,實(shí)現(xiàn)在地圖上標(biāo)點(diǎn)并且顯示文字信息。
接收終端通過網(wǎng)絡(luò)通信將數(shù)據(jù)發(fā)送到TCP 服務(wù)器之后,TCP 服務(wù)器會(huì)將數(shù)據(jù)進(jìn)行解析和存進(jìn)數(shù)據(jù)庫,PC 上位機(jī)屬于應(yīng)用層,與HTTP 服務(wù)器直接通信,在上位機(jī)發(fā)起HTTP 請(qǐng)求,將相關(guān)的參數(shù)和URL 發(fā)給HTTP,HTTP 會(huì)返回一定的json 格式數(shù)據(jù),在上位機(jī)只需要解析就可以獲取數(shù)據(jù)。
Python 提供了多個(gè)圖形開發(fā)界面的庫,Tkinter:Tkinter 模塊(Tk 接口) 是Python 的標(biāo)準(zhǔn)Tk GUI 工具包的接口Tk 和Tkinter 可以在大多數(shù)的Unix 平臺(tái)下使用, 同樣可以應(yīng)用在Windows 和Macintosh 系統(tǒng)里。Tk8.0 的后續(xù)版本可以實(shí)現(xiàn)本地窗口風(fēng)格, 并良好地運(yùn)行在絕大多數(shù)平臺(tái)中。Tkinter 是Python的標(biāo)準(zhǔn)GUI 庫。Python 使用Tkinter 可以快速的創(chuàng)建GUI 應(yīng)用程序。由于Tkinter 是內(nèi)置到Python 的安裝包中、只要安裝好Python 之后就能import Tkinter 庫、而且IDLE 也是用Tkinter編寫而成、對(duì)于簡單的圖形界面Tkinter 還是能應(yīng)付自如。
PC 上位機(jī)具有注冊登錄功能,查看指定節(jié)點(diǎn)數(shù)據(jù)、查看用戶信息、數(shù)據(jù)郵箱等功能。數(shù)據(jù)郵箱,可以將用戶所有節(jié)點(diǎn)的最新數(shù)據(jù)和其它相關(guān)信息發(fā)送到用戶注冊的時(shí)候填寫的郵箱。Python 中使用了SMTP 發(fā)送郵件,SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則,由它來控制信件的中轉(zhuǎn)方式。Python 的smtplib 提供了一種很方便的途徑發(fā)送電子郵件,它對(duì)SMTP 協(xié)議進(jìn)行了簡單的封裝。上位機(jī)如圖6 所示。
圖6 PC 端上位機(jī)
通過對(duì)整套系統(tǒng)的開發(fā),所有的研究目標(biāo)都具體的實(shí)現(xiàn)出來。本項(xiàng)目以阿里云服務(wù)器為基礎(chǔ),通過設(shè)計(jì)TCP 和HTTP 網(wǎng)絡(luò)通信的協(xié)議格式,在完成APP、上位機(jī)、WEB 和硬件系統(tǒng)的數(shù)據(jù)傳輸?shù)那疤嵯?,?shí)現(xiàn)了用戶實(shí)際監(jiān)測地點(diǎn)的數(shù)據(jù)上傳與存儲(chǔ),APP 用戶信息注冊、設(shè)備狀態(tài)監(jiān)控和地圖定位,PC 端數(shù)據(jù)實(shí)時(shí)顯示、定期數(shù)據(jù)郵件播報(bào)和設(shè)備位置信息顯示,WEB 大數(shù)據(jù)可視化分析、地圖構(gòu)建與設(shè)備定位等功能??紤]到設(shè)備長時(shí)間穩(wěn)定工作所需要的定期維護(hù)與檢修,本項(xiàng)目的所有軟件開發(fā)都包含有設(shè)備定位功能,方便用戶對(duì)硬件設(shè)備的部署和檢修。因此搭載在硬件設(shè)備上的北斗定位模塊在整個(gè)系統(tǒng)中占據(jù)了十分重要的地位,而且其精確的定位精度使得本項(xiàng)目的整體性能得到了極大地提升。