劉芳+陳義明
摘要:根據(jù)現(xiàn)代化智能農業(yè)的需求調查,對于溫濕度傳感器的農業(yè)物聯(lián)網(wǎng)的設計進行了研究,系統(tǒng)采用dht11溫濕度傳感器作為數(shù)據(jù)采集器,通過NodeMCUwifi模塊使dht11傳感器與消息中轉服務器MQTT server處于同一局域網(wǎng)下,MQTT代理服務器根據(jù)發(fā)送者發(fā)送的消息將消息轉發(fā)給符合條件的訂閱者,MQTT server再將獲取到的數(shù)據(jù)發(fā)送給sitewhere物聯(lián)網(wǎng)云服務平臺進行數(shù)據(jù)匯聚,然后使用MongoDB數(shù)據(jù)庫進行數(shù)據(jù)分析。
關鍵詞:溫濕度傳感器;NodeMCU;MQTT代理服務器;Sitewhere平臺;MongDB數(shù)據(jù)庫
空氣的溫濕度對于農作物來說極為重要,直接性的影響著農作物的存活率與產量,因此,生產人員需要時刻了解該項指標的數(shù)據(jù),并且將其控制在合適的范圍內,同時,這也是一項極為繁瑣的工程。如果通過人力去時刻測量的話,而物聯(lián)網(wǎng)的提出給這一難題提供了便利的解決辦法,農業(yè)物聯(lián)網(wǎng)技術是通過無線網(wǎng)絡和互聯(lián)網(wǎng)進行傳輸,將感知層采集到的數(shù)據(jù)進行合聚、存儲、處理,最后通過智能化來操作終端實現(xiàn)數(shù)據(jù)監(jiān)測,科學決策和實時服務的過程,采用物聯(lián)網(wǎng)技術可以輕松實現(xiàn)時時刻刻對空氣溫濕度的監(jiān)測,不僅可以保證數(shù)據(jù)獲取的實時性、大幅度的提高測量的數(shù)據(jù)的精確性、便利性,而且可以通過物聯(lián)網(wǎng)云平臺對所監(jiān)測的數(shù)據(jù)進行匯總,使用數(shù)據(jù)庫從數(shù)據(jù)中提取總結出問題的所在并找出合理的解決方案反饋給控制傳感器,然后實施控制以確保溫濕度被控制在合理的范圍內。本方案可以運用在溫室大棚、室內動物培育應用中,本研究結合dhtll溫濕度傳感器,MQrr與Sitewhere物聯(lián)網(wǎng)云平臺,Mon-goDB數(shù)據(jù)庫實現(xiàn)了對空氣溫濕度的實時監(jiān)測和數(shù)據(jù)采集分析,可通過該分析結果反饋控制傳感器,使各項指標穩(wěn)定在用戶需求的范圍內。
1系統(tǒng)總體設計方案
本方案是以dht11溫濕度傳感器和NodeMCU開發(fā)板為主要硬件,使用Arduino軟件進行編程,首先傳感器將數(shù)據(jù)傳送至開發(fā)板上,然后利用串口來顯示數(shù)據(jù)檢測傳感器是否可成功獲取到溫濕度數(shù)據(jù),確定數(shù)據(jù)可成功獲取后,通過NodeMCU的WIFI模塊進行指定的WIFI網(wǎng)絡連接,使其與客戶端在同一局域網(wǎng)下,然后將數(shù)據(jù)發(fā)送至MQTT,通過MQTT代理服務器作為中間消息件將傳感器采集到的數(shù)據(jù)實時的發(fā)送到Sitewhere物聯(lián)網(wǎng)云平臺進行數(shù)據(jù)存儲、處理,然后MongoDB數(shù)據(jù)庫再將Sitewhere平臺上獲取到的數(shù)據(jù)進行分析,將分析結果反饋控制傳感器使其處于理想的狀態(tài)下,系統(tǒng)的總體設計結構如圖1所示。
2傳感器及Arduino編程
2.1DHT11溫濕度傳感器用途與構成簡單介紹
DHT11傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器,主要用于測量空氣中的溫室度,廣泛應用于溫室大棚、畜牧業(yè)養(yǎng)殖等工程中,它采用單總線方式直接讀取溫度、濕度數(shù)據(jù),應用專用的數(shù)字采集技術和溫度傳感技術,具有良好的靈敏感應特性、功耗低、穩(wěn)定性高、成本低等特點。
2.2 NodeMCU開發(fā)板與DHT11的連線
將DHT11模塊的VCC、GND、DATA引腳分別與NodeMCU的VCC、GND、D4引腳進行連接,NodeMCU通過D4引腳從傳感器的數(shù)據(jù)端接收數(shù)據(jù),圖2為NodeMCU與DHT11的連線圖。
2.3用傳感器dht11編程的核心代碼
1)實例化dht11對象
dht11 DHT11:
2)setup初始化串口
Serial-begin(9600);
3)loop0中讀取DHT11狀態(tài),分析狀態(tài)后使用串口輸出
4)燒寫程序到NodeMCU,并使用Arduino IDE串口查看輸出數(shù)據(jù)。
3開發(fā)板NodeMCU的WiFi網(wǎng)絡TCP連接
3.1NodeMCU的特點與構成簡要介紹
NodeMCU包含了可以運行在esp8266Wi-FiSoC芯片之上的固件,以及基于ESP-12模組的硬件,NodeMCU Lua WIFI是一款基于ESP8266 CP2102的物聯(lián)網(wǎng)開發(fā)板,它以Lua語言為基礎,可讓開發(fā)者以arduino的方式與底層硬件打交道,使開發(fā)人員可以輕松對硬件設備進行操作,具有成本低、交互簡單等特點。
3.2 NodeMCU下的WIFI編程
3.2.1NodeMCU下的WIFIClient編程步驟
1)Arduino IDE下安裝ESP8266開發(fā)板擴展程序后進行網(wǎng)絡連接,在連接之前確定NodeMCU可以wifi路由器進行連通。
2)創(chuàng)建WIFIClient并向服務器發(fā)起TCP連接請求。
3)向服務器發(fā)送信息
4)服務器接收信息
3.2.2 NodeMCU下連接VCIFI的主要代碼
4代理服務器MQTT模塊
4.1MQTT協(xié)議的的背景
MQTT是1999年由IBM公司的Andv Stanford博士以及Ar-con公司ArlenNipper博士發(fā)明的一項技術,是一種基于二進制消息的發(fā)布/訂閱編程模式的消息協(xié)議,面向M2M和物聯(lián)網(wǎng)的連接協(xié)議,采用輕量級發(fā)布和訂閱消息傳輸機制可通過很少的代碼寬帶與遠程設備進行連接,使設備對設備之間的短消息通信簡單易用,該協(xié)議具有開銷小、傳輸小、耗電量小等特點,它采用小型傳輸,可以將數(shù)據(jù)包最小化并有效分配與傳輸。可廣泛應用于移動即時通信、物聯(lián)大數(shù)據(jù)、智能家居、消息通信等方面。與RESTful架構的物聯(lián)網(wǎng)系統(tǒng)相比,MQTT協(xié)議借助了消息推送功能,可以更好地實現(xiàn)遠程控制,另外,RESTful具有客戶端和服務器端兩個角色,而MQTT協(xié)議包括發(fā)布者,代理服務器和訂閱者三個角色。endprint
4.2MQTT協(xié)議的特點
1)發(fā)布/訂閱的消息模式
在MQTT協(xié)議的發(fā)布/訂閱模式中,發(fā)布者與訂閱者只需要認同一個代理就可以,不需要相互了解對方,可以不同時在線,也不需要等待對方的消息確認,可隨時發(fā)布訂閱消息,以UTF-8字符串形式進行傳輸。
21使用了TCP/IP進行網(wǎng)絡連接
3)具有三種消息發(fā)布服務質量
可根據(jù)不同場景進行選擇不同的級別服務質量,共有Qos0、Qos1、Qos2三種服務質量可選擇。Qos0是指消息發(fā)送者會盡可能地去發(fā)送消息,但是如果發(fā)送失敗了就不會再次發(fā)送,Qosl是指如果消息發(fā)送失敗或者接收者未作應答,發(fā)送者會重新發(fā)送消息,直到接收者應答確保接收者至少收到一次消息,Qos2是指接收者能且只能接收到一次消息。這三種服務質量各有優(yōu)缺點,第一種可能會導致接收者未接收到消息,第二種可能會導致消息接收重復,第三種雖然避免了前兩種的弊端,但是會增加一定的開銷。
4)通信傳輸小、開銷小
采用UTF-8字符串形式進行傳輸,使消息最小化傳輸,大大降低了網(wǎng)絡流量的使用。
4.3 MQTT代理服務器的工作原理
發(fā)送者通過TCP/IP與訂閱者進行網(wǎng)絡連接,并向訂閱者的broker發(fā)送帶有某一主題的消息,訂閱著登錄broker,使用mos-quitto_sub-v-t Topic命令訂閱發(fā)送者發(fā)送的Topic主題的消息,然后等待著消息從broker的到來并會打印到命令框中,圖3為iQrr代理服務器的工作原理圖。
4.4 MQTT消息發(fā)布主要代碼
5Sitewhere物聯(lián)網(wǎng)云平臺模塊
Sitewhere是一款開源的用于數(shù)據(jù)采集,存儲,處理的物聯(lián)網(wǎng)平臺,具有設備管理,數(shù)據(jù)存儲等功能,Sitewhere的體系結構為一個租戶可以對應多個不同的站點,每一個站點又可以對應多個不同的資產。每一個資產可以對應多個不同的規(guī)格,每一個規(guī)格可以對應多個不同的設備,從租戶到設備這樣層層細分,使不同規(guī)格的設備所獲取到的數(shù)據(jù)都能發(fā)送到Sitewhere平臺上進行數(shù)據(jù)的匯聚,圖4為Sitewhere的組織結構。
6Mongo DB數(shù)據(jù)庫
Mongo DB是目前在IT行業(yè)非常受歡迎的一種非關系型數(shù)據(jù)庫,具有靈活的數(shù)據(jù)存儲方式,很好的實現(xiàn)的面向對象的思想,在該數(shù)據(jù)庫中每一條記錄都代表一個文件對象。Mongo DB最受歡迎的地方在于不需要開發(fā)人員手動編寫SQL語句,直接通過調用方法就可以實現(xiàn)CRUD操作分布式文檔存儲數(shù)據(jù)庫。
在本架構中,MongoDB對Sitewhere物聯(lián)網(wǎng)平臺上匯聚的數(shù)據(jù)進行分析處理,然后將數(shù)據(jù)分析結果反饋給MQTI"代理服務器,再通過MQTT反饋控制傳感器以完成用戶的需求。
7結束語
以上介紹了一種面向大數(shù)據(jù)分析的物聯(lián)網(wǎng)平臺架構的具體實現(xiàn)過程,并附加了主要代碼以便于讀者的理解。經(jīng)過多次測試,當MQTT與NodeMCU處于同一局域網(wǎng)時訂閱者可通過broker成功實時的接收到數(shù)據(jù),并可成功地將數(shù)據(jù)發(fā)送到Site-where物聯(lián)網(wǎng)開發(fā)平臺進行數(shù)據(jù)匯總,系統(tǒng)較為穩(wěn)定,獲取總結數(shù)據(jù)信息極為便利輕松,用戶可以通過MongDB數(shù)據(jù)庫分析出來的結果來反饋控制溫室大棚等內部的各項指標,確保動植物的健康成長。endprint