蕭德璋 房杰祥 王金偉 陳夢(mèng)瑤 陳佳智
摘 要:針對(duì)當(dāng)前很多農(nóng)業(yè)溫室不能實(shí)時(shí)獲取各項(xiàng)室內(nèi)環(huán)境數(shù)據(jù)的現(xiàn)狀,為了更加方便地監(jiān)測(cè)溫室農(nóng)作物生長(zhǎng)環(huán)境,文章設(shè)計(jì)了一種低成本獲取溫室作物生長(zhǎng)環(huán)境數(shù)據(jù)的方案。方案通過(guò)軟硬件結(jié)合,使用樹(shù)莓派Raspberry Pi4B作為終端,連接DHT11、MQ-135等多個(gè)傳感器,結(jié)合Python開(kāi)發(fā)并上傳數(shù)據(jù)到OneNet開(kāi)放平臺(tái),配套APP用以方便農(nóng)戶實(shí)時(shí)查看溫室內(nèi)環(huán)境的空氣溫濕度、氣體毒性等參數(shù)指標(biāo)。經(jīng)測(cè)試,系統(tǒng)數(shù)據(jù)獲取穩(wěn)定并可實(shí)時(shí)根據(jù)環(huán)境更新,有一定的參考價(jià)值和實(shí)用價(jià)值。
關(guān)鍵詞:物聯(lián)網(wǎng);農(nóng)業(yè)溫室;樹(shù)莓派;Python;Vue
中圖分類號(hào):TP277;TP391.44 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-1064(2021)02-043-02
DOI:10.12310/j.issn.1674-1064.2021.02.019
科學(xué)技術(shù)的不斷進(jìn)步發(fā)展催生了物聯(lián)網(wǎng)技術(shù),并在各個(gè)方面都產(chǎn)生了應(yīng)用價(jià)值。目前,我國(guó)溫室農(nóng)業(yè)的物聯(lián)網(wǎng)水平還尚處于起步階段。借助物聯(lián)網(wǎng)技術(shù)可以節(jié)約自然、人力資源,提高農(nóng)業(yè)生產(chǎn)效率。溫室環(huán)境中農(nóng)作物生長(zhǎng)所依賴的空氣溫濕度、土壤溫濕度及其光照強(qiáng)度等參數(shù)指標(biāo),對(duì)農(nóng)作物生長(zhǎng)都有著十分重要的影響。只有在適宜的綜合環(huán)境因子的共同作用下,才能夠使農(nóng)作物充分生長(zhǎng),達(dá)到高產(chǎn)值。傳統(tǒng)農(nóng)業(yè)環(huán)境因素的檢測(cè)方式,主要依賴人工以往的溫室種植經(jīng)驗(yàn),實(shí)地獲取各參數(shù)指標(biāo)進(jìn)行分析。該方式存在效率低、人力耗費(fèi)大、生產(chǎn)投入高、樣本誤差大等問(wèn)題,無(wú)法滿足農(nóng)作物對(duì)其生長(zhǎng)環(huán)境的即時(shí)需求。因此,對(duì)影響農(nóng)作物生長(zhǎng)環(huán)境因素的相應(yīng)指標(biāo)進(jìn)行實(shí)時(shí)監(jiān)測(cè),顯得尤為重要。在環(huán)境因子短時(shí)間內(nèi)產(chǎn)生巨大變化時(shí),可以執(zhí)行機(jī)器或者人為及時(shí)干預(yù),采取相應(yīng)措施,使損失降到最低,實(shí)現(xiàn)效益化。
樹(shù)莓派為Python編程提供了一個(gè)成本低廉、穩(wěn)定可靠的開(kāi)發(fā)平臺(tái),其允許樹(shù)莓派的開(kāi)發(fā)者將項(xiàng)目擴(kuò)展到較大的規(guī)模[1]。文章設(shè)計(jì)一種基于樹(shù)莓派的多個(gè)傳感器監(jiān)測(cè)系統(tǒng),相比傳統(tǒng)的農(nóng)業(yè)溫室系統(tǒng),具有體積小、價(jià)格低、操作便捷等優(yōu)點(diǎn)。
1 系統(tǒng)設(shè)計(jì)方案
農(nóng)業(yè)溫室環(huán)境檢測(cè)系統(tǒng),主要以樹(shù)莓派系列微處理器為控制核心,外圍硬件模塊主要包括一系列傳感器模塊、攝像頭軟件模塊、顯示模塊等,系統(tǒng)總體設(shè)計(jì)和架框圖如圖1所示。
2 硬件組成及實(shí)現(xiàn)原理
硬件控制部分主要由Raspberry Pi4B、DHT11空氣溫濕度傳感器、mh-rd11雨滴檢測(cè)傳感器、mq-135有毒氣體檢測(cè)傳感器、火焰報(bào)警控制模塊,以及移動(dòng)攝像頭控制模塊和電源供電控制模塊等多個(gè)部分的組件組成。
2.1 Raspberry Pi模塊
溫室環(huán)境監(jiān)測(cè)系統(tǒng)采用樹(shù)莓派為主要控制器,是一個(gè)開(kāi)放源代碼的硬件平臺(tái)。該平臺(tái)包含一塊具備I/O功能電路板的ARM芯片,能適應(yīng)物聯(lián)網(wǎng)等多種工作環(huán)境,不僅能跑全系列ARM GNU/Linux發(fā)行版,而且支持Snappy Ubuntu Core及Windows 10 IOT[2]。在其上安裝Debian,不僅體積小,而且功能極其豐富且強(qiáng)大。相比上一代CPU,性能提升至1.5Ghz的四核64位CPU。該處理器的性能使其能流暢地運(yùn)行在本設(shè)計(jì)中,能夠滿足對(duì)于多個(gè)傳感器數(shù)據(jù)的同步讀取需求。此外,其中還包含40個(gè)GPIO引腳,支持外接鋰電池模塊及拓展板,使其可以與硬件進(jìn)行數(shù)據(jù)讀取交互和高度定制化。
2.2 鋰電池拓展板及顯示模塊
鋰電池拓展板載獨(dú)立開(kāi)關(guān),使用USB 5V輸出,由兩塊18650鋰電池作為供電源。顯示模塊采用分辨率為128×64的OLED液晶顯示屏,顯示單元能夠自主發(fā)光,采用SPI或I2C的通信方式。該模塊主要用于人機(jī)交互[3],顯示當(dāng)前由Raspberry Pi收集到的溫濕度數(shù)據(jù)。
2.3 傳感器模塊
傳感器應(yīng)用模塊主要包括溫濕度傳感器DHT11、MQ-135有毒氣體傳感器、FC-28土壤濕度變化傳感器,這些傳感器可以通過(guò)杜邦線直接連到樹(shù)莓派進(jìn)行實(shí)時(shí)數(shù)據(jù)采集。上述傳感器用到的主要有三個(gè)接口:VCC、GND以及DATA接口。VCC接入電源正極3.3V或5.5V,使用5.5V電源時(shí)需串聯(lián)一個(gè)電阻,用以限流對(duì)樹(shù)莓派起保護(hù)作用。GND接入樹(shù)莓派GPIO接口中GROUND接口。DATA接入GPIO數(shù)據(jù)接口,可在Python的驅(qū)動(dòng)代碼中自定義,如:
GPIO.setmod(GPIO.BCM)
GPIO.setup(18,GPIO.IN)
2.4 攝像頭模塊
攝像頭模塊由樹(shù)莓派配套的攝像頭及其排線組合構(gòu)成,與Raspberry Pi之間通過(guò)CSI接口相互進(jìn)行連接,參數(shù)包含視場(chǎng)角72.4°、焦距3.29等。由樹(shù)莓派主板安裝OpenCV軟件庫(kù),可采集數(shù)據(jù)并進(jìn)行處理。
3 系統(tǒng)軟件設(shè)計(jì)
配套樹(shù)莓派傳感器的App前端展示使用Vue框架開(kāi)發(fā),后端接口Laravel框架開(kāi)發(fā),服務(wù)部署在Centos服務(wù)器,一套代碼,多端使用,易于修改。
3.1 手機(jī)端App前端設(shè)計(jì)思路
App前端所用技術(shù)主要是利用uni-app框架的便利性,其語(yǔ)法完全貼合了Vue這一近年新型前端框架的語(yǔ)法,uni-app是一個(gè)能夠直接利用Vue.js來(lái)開(kāi)發(fā)所有基于前端的應(yīng)用框架,開(kāi)發(fā)者自己編寫(xiě)一套源代碼,可以將其發(fā)布給IOS、Android、H5、各種小程序、快應(yīng)用等眾多平臺(tái)。這樣對(duì)于軟件開(kāi)發(fā)者的開(kāi)發(fā)、后期維護(hù)及其用戶的使用都比較友好。
Vue是另一個(gè)重要技術(shù)概念,因?yàn)槠浔旧硎且环N抽象技術(shù),允許通過(guò)自動(dòng)使用小型、獨(dú)立和一般并且可以互相交叉復(fù)用的網(wǎng)絡(luò)組件模型,來(lái)自動(dòng)構(gòu)建一個(gè)大型網(wǎng)絡(luò)應(yīng)用。幾乎所有不同類型的組件應(yīng)用程序界面,都希望是一個(gè)可以直接抽象出來(lái)成為一個(gè)基于組件類的樹(shù)。其有以下特點(diǎn):如簡(jiǎn)化代碼整體結(jié)構(gòu),降低維護(hù)成本;為代碼、模塊的復(fù)用提供基礎(chǔ);提升代碼的穩(wěn)定性(因?yàn)閷?duì)不同業(yè)務(wù)、模塊可以通過(guò)倉(cāng)庫(kù)權(quán)限控制進(jìn)行物理隔離);提升整體架構(gòu)的伸縮性,為業(yè)務(wù)擴(kuò)展打下基礎(chǔ)。App功能包括查看空氣溫濕度、火焰?zhèn)鞲衅鞯刃盘?hào)。
3.2 后端設(shè)計(jì)
使用PHP(編程語(yǔ)言)的后端框架Laravel進(jìn)行接口開(kāi)發(fā),隨著互聯(lián)網(wǎng)提倡的前后端完全分離,PHP也基本告別了view模板嵌套開(kāi)發(fā),轉(zhuǎn)而專門(mén)編寫(xiě)資源接口。Laravel是PHP框架中最優(yōu)雅的框架,國(guó)內(nèi)也有越來(lái)越多的人告別thinkPHP,選擇Laravel。雖然框架本身便對(duì)API有支持,但在工作中還是需要再做一些額外的處理——解決使用不便,一些擴(kuò)展包不能很好地支持的缺點(diǎn),讓其在開(kāi)發(fā)API時(shí)更加得心應(yīng)手。
3.3 Raspberry Pi軟件設(shè)計(jì)方案
Raspberry pi4B官方基于Linux的Raspbian系統(tǒng)安裝后,需要安裝Python環(huán)境,而后安裝BCM2835及OpenCV庫(kù),使用庫(kù)可以方便通過(guò)GPIO接口對(duì)傳感器進(jìn)行函數(shù)操作。Python語(yǔ)法易于讀寫(xiě),兼容總多平臺(tái),可在Windows開(kāi)發(fā)之后通過(guò)SFTP傳送到樹(shù)莓派中運(yùn)行。由于需要驅(qū)動(dòng)多個(gè)傳感器,因此需要開(kāi)發(fā)多個(gè)文件部分關(guān)鍵代碼如下:
import Adafruit_DHT //導(dǎo)入Adafruit庫(kù)
sensor=Adafruit_DHT.DHT11//設(shè)置傳感器類型,此處為DHT11
GPIO=18//將引腳設(shè)置為18
humidity, temperature = Adafruit_DHT.read_retry(sensor, GPIO)
//通過(guò)Adafruit庫(kù)通過(guò)引腳讀取溫濕度
文件運(yùn)行之后,傳感器將實(shí)時(shí)獲取數(shù)據(jù),通過(guò)多次實(shí)驗(yàn),數(shù)據(jù)獲取準(zhǔn)確,基本無(wú)誤差。
4 結(jié)語(yǔ)
通過(guò)搭建樹(shù)莓派傳感器,以及前后端開(kāi)發(fā)App,由傳感器獲得的數(shù)據(jù)實(shí)時(shí)傳輸?shù)椒?wù)器再到App顯示出來(lái),供農(nóng)業(yè)生產(chǎn)提供參考,減少對(duì)于作物生長(zhǎng)過(guò)程中的不利因素。樹(shù)莓派搭建的作物生長(zhǎng)環(huán)境檢測(cè)平臺(tái)具有無(wú)可比擬的成本優(yōu)勢(shì),其可拓展性強(qiáng),系統(tǒng)開(kāi)源,可以及時(shí)獲得溫室內(nèi)數(shù)據(jù)并根據(jù)數(shù)據(jù)進(jìn)行解決,對(duì)農(nóng)業(yè)的科學(xué)發(fā)展具有推動(dòng)作用。
參考文獻(xiàn)
[1] 李警波,李密生,唐博,等.基于樹(shù)莓派和Python的黃瓜病斑識(shí)別系統(tǒng)的設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2020,10(8):45-47.
[2] 周毅飛,呂曉菡,李慶海,等.基于“樹(shù)莓派”三代的農(nóng)業(yè)智慧監(jiān)測(cè)系統(tǒng)研究[J].南方農(nóng)業(yè),2019,13(10):62-65.
[3] 王玉濤,于金星,陳鑫,等.基于樹(shù)莓派的自適應(yīng)空調(diào)控制系統(tǒng)設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2020,10(10):32-3