毛敏
摘 要: 為了遠(yuǎn)程實(shí)時(shí)監(jiān)測農(nóng)業(yè)生產(chǎn)數(shù)據(jù)的目的,采用網(wǎng)絡(luò)模塊W5100、數(shù)字溫濕度傳感器DHT11、光照傳感器BH1750FVI、土壤濕度傳感器,以Arduino Uno微處理器和虛擬儀器Labview 為平臺(tái)設(shè)計(jì)出遠(yuǎn)程實(shí)時(shí)農(nóng)業(yè)監(jiān)測系統(tǒng)。通過試驗(yàn),該系統(tǒng)2秒鐘可給出現(xiàn)場實(shí)時(shí)監(jiān)測數(shù)據(jù),測量結(jié)果隨著環(huán)境參數(shù)的改變而改變,適用于需要遠(yuǎn)程實(shí)時(shí)農(nóng)業(yè)監(jiān)測的場合。
關(guān)鍵詞: W5100; 傳感器; Labview; Arduino
中圖分類號(hào): TP311
文獻(xiàn)標(biāo)志碼: A
文章編號(hào):1007-757X(2019)06-0035-03
Abstract: In order to remotely monitor agricultural production data in real time, the network module W5100, digital temperature and humidity sensor DHT11, illumination sensor BH1750FVI and soil humidity sensor are used to design real-time agricultural monitoring system based on Arduino UNO microprocessor and virtual instrument Labview. Through experiments, the system can give the real-time monitoring data within 2 seconds, and the measurement result changes with the change of environment parameters. It is suitable for the situation that needs the remotely real-time agriculture monitoring.
Key words: W5100; Sensors; Labview; Arduino
0?引言
智能農(nóng)業(yè)的核心問題是對(duì)農(nóng)業(yè)信息的獲取、對(duì)所獲信息的管理、經(jīng)信息分析做出的決策、由決策而決定的具體實(shí)施方案。而對(duì)農(nóng)業(yè)信息的獲取是智能農(nóng)業(yè)的起點(diǎn),是非常關(guān)鍵的,如果無法實(shí)時(shí)地獲取農(nóng)業(yè)信息,就無法建造真正的智能農(nóng)業(yè),所以建立一個(gè)實(shí)用、可靠的農(nóng)業(yè)檢測系統(tǒng)非常必要。
隨著通信、計(jì)算機(jī)、傳感器技術(shù)的發(fā)展,將物聯(lián)網(wǎng)應(yīng)用到農(nóng)業(yè)監(jiān)測系統(tǒng)中是目前的發(fā)展趨勢,它將采集到的溫度、濕度、光照強(qiáng)度、土壤水分等信息進(jìn)行處理[1-2],為農(nóng)業(yè)生產(chǎn)的在各個(gè)時(shí)期的精準(zhǔn)管理提供信息支出。
本文設(shè)計(jì)了一種基于Arduino和Labview的遠(yuǎn)程智能農(nóng)業(yè)監(jiān)測系統(tǒng),可以對(duì)農(nóng)作物生長環(huán)境參數(shù)實(shí)時(shí)采集,數(shù)據(jù)采集終端設(shè)備采用Arduino作為控制核心,上位機(jī)軟件采用Labview,兩者通過網(wǎng)絡(luò)模塊W5100進(jìn)行通信。
1?系統(tǒng)設(shè)計(jì)
在系統(tǒng)中,Labview[3]編寫的軟件作為上位機(jī),負(fù)責(zé)讀取由Arduino Uno[4]微處理器發(fā)送的溫濕度、光照強(qiáng)度、土壤濕度并進(jìn)行顯示。
Arduino Uno微處理器作為下位機(jī),通過網(wǎng)絡(luò)模塊W5100接收上位機(jī)發(fā)來的命令,負(fù)責(zé)接收和判斷命令、采集和傳輸溫度、濕度、光照強(qiáng)度、土壤濕度數(shù)據(jù),并將這些數(shù)據(jù)通過網(wǎng)絡(luò)模塊W5100上傳至Labview上位機(jī)軟件進(jìn)行顯示。系統(tǒng)框圖如圖1所示:
1.1?傳感器
1.1.1?DHT11數(shù)字溫/濕度傳感器
DHT11數(shù)字溫濕度傳感器[5]采用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器。DHT11傳感器包括一個(gè)電阻式感濕元件和一個(gè)NTC測溫元件,并與一個(gè)高性能8位單片機(jī)相連接,輸出數(shù)字信號(hào),具有功耗小、超快響應(yīng)、抗干擾能力強(qiáng)等優(yōu)點(diǎn)。
1.1.2?光照傳感器BH1750FVI
光照傳感器BH1750FVI是一個(gè)數(shù)字環(huán)境光傳感器,不區(qū)分環(huán)境光源,接近于視覺靈敏度的分光特性,可對(duì)廣泛的亮度進(jìn)行1勒克斯的高精度測定,模塊內(nèi)部包含通信電平轉(zhuǎn)換,與5V單片機(jī)IO直接連接。
1.1.3?土壤濕度傳感器
通過測量兩根探針之間的電阻,來了解土壤中的水分含量。當(dāng)插入土壤中時(shí),由于土壤中水分含量不同,土壤的電阻值就不同。
1.2?硬件設(shè)計(jì)
通過網(wǎng)絡(luò)模塊W5100[6],實(shí)現(xiàn)Arduino Uno 微處理器與Labview的無線連接,溫濕度傳感器DHT11、光照傳感器BH1750FVI、土壤濕度傳感器與Arduino Uno 微處理器構(gòu)成硬件平臺(tái),溫濕度、光照強(qiáng)度、土壤濕度數(shù)據(jù)經(jīng)Arduino Uno 微處理器處理后,通過網(wǎng)絡(luò)模塊W5100傳送到上位機(jī),Labview 軟件編寫VI函數(shù),在Labview前面板實(shí)時(shí)顯示溫濕度、光照強(qiáng)度、土壤濕度數(shù)值,實(shí)現(xiàn)Labview 軟件與Arduino控制板遠(yuǎn)程交互式通信。
1.2.1?Arduino Uno微處理器
Arduino[7-8]是一款便捷靈活、方便上手的開源電子原型平臺(tái),功能強(qiáng)大,適用于讀取溫濕度傳感器信號(hào),可與上位機(jī)通訊,制作交互式產(chǎn)品,該系統(tǒng)包括硬件(Arduino開發(fā)板) 和軟件(Arduino IDE)兩部分。
1.2.2?虛擬儀器Labview
虛擬儀器Labview[9]有常規(guī)儀器的控制面板,采用可視化的圖形編程語言和平臺(tái),在計(jì)算機(jī)屏幕上建立圖形化的軟面板來替代常規(guī)的傳統(tǒng)儀器面板,可節(jié)省成本。
Labview為Arduino開發(fā)了專門的接口工具包,把這個(gè)工具包和Arduino軟件結(jié)合起來,通過Labview軟件可實(shí)現(xiàn)對(duì)Arduino微處理器的控制或交換數(shù)據(jù)。
W5100是一種多功能的網(wǎng)絡(luò)接口芯片,內(nèi)部集成有以太網(wǎng)控制器,主要應(yīng)用于高集成、高穩(wěn)定、高性能和低成本的系統(tǒng)中。
1.2.3?硬件連接
網(wǎng)絡(luò)模塊W5100與Arduino Uno控制板連接,W5100配置一個(gè)網(wǎng)絡(luò)地址:192.168.1.177,通過網(wǎng)線與計(jì)算機(jī)網(wǎng)卡連接,將計(jì)算機(jī)的網(wǎng)卡地址配置成192.168.1.175,W5100與計(jì)算機(jī)組成一個(gè)小的局域網(wǎng),用于網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送與接收。
DHT11的信號(hào)線接入Arduino Uno板的數(shù)字端口2中,電源線接入Arduino Uno板上的+5V電壓端口,地線接入Arduino Uno板上的GND端口。
BH1750FVI的SDA端接入Arduino Uno板的模擬端口A4中,SCL端接入Arduino Uno板的模擬端口A5中,電源線接入Arduino Uno板上的+5 V電壓端口,地線接入Arduino Uno板上的GND端口。
土壤濕度傳感器的D0端接入Arduino Uno板的數(shù)字端口7中,A0端接入Arduino Uno板的模擬端口A0中,電源線接入Arduino Uno板上的+5 V電壓端口,地線接入Arduino Uno板上的GND端口。
1.3?軟件設(shè)計(jì)
1.3.1?Labview程序設(shè)計(jì)
Labview編寫的軟件[10]負(fù)責(zé)讀取Arduino Uno發(fā)送的溫濕度、光照強(qiáng)度、土壤濕度值并進(jìn)行顯示。
1.前面板設(shè)計(jì)
Labview前面板顯示溫濕度、光照強(qiáng)度、土壤濕度值。前面板如圖2所示。
2.程序框圖設(shè)計(jì)
采用條件結(jié)構(gòu)+移位寄存器的狀態(tài)機(jī)來實(shí)現(xiàn)Labview上位機(jī)主程序,將主程序劃分為5個(gè)狀態(tài)。0狀態(tài)為初始化網(wǎng)絡(luò)服務(wù),1狀態(tài)為溫度測量,2狀態(tài)為濕度測量,3狀態(tài)為光照測量,4狀態(tài)為水分測量。
在0狀態(tài)中,初始化網(wǎng)絡(luò)服務(wù),配置網(wǎng)絡(luò)地址,如圖3所示:
在1狀態(tài)中,讀取溫度數(shù)據(jù)并顯示,如圖4所示:
在2狀態(tài)中,讀取濕度數(shù)據(jù)并顯示,如圖5所示:
在3狀態(tài)中,讀取光照數(shù)據(jù)并顯示,如圖6所示:
在4狀態(tài)中,讀取水分?jǐn)?shù)據(jù)并顯示,如圖7所示:
1.3.2?Arduino程序設(shè)計(jì)
Arduino Uno控制器完成接收和判斷命令、讀取和傳輸溫濕度、光照、土壤濕度數(shù)據(jù),并處理成字節(jié)數(shù)據(jù),通過網(wǎng)絡(luò)模塊W5100上傳給上位機(jī)。
#include 引入網(wǎng)絡(luò)模塊
#include 引入溫度模塊
定義溫度對(duì)象;
#define 定義溫度讀取輸出引腳 2
#define 溫度命令字0x10
#define 濕度命令字0x20
#define 水分命令字0x40
#define ?光照命令字0x30
#include 引入以太網(wǎng)網(wǎng)絡(luò)模塊
定義網(wǎng)卡的MAC地址;
定義IP地址 ip(192,168,1,177);
定義網(wǎng)絡(luò)服務(wù)的端口;
定義數(shù)據(jù)處理函數(shù);
程序初始化(){
網(wǎng)絡(luò)接口初始化,設(shè)置MAC地址和網(wǎng)絡(luò)地址
啟動(dòng)服務(wù)器,開始進(jìn)行端口偵聽。
}
void 循環(huán)檢測()
{
if (有客戶端連接) {
當(dāng)有客戶端連接進(jìn)來時(shí) {
if (客戶端連接是否有效) {
一次接收兩個(gè)字節(jié)數(shù)組,第一位命令識(shí)別代碼,第二個(gè)位命令字
{
讀取命令識(shí)別代碼和命令字。
}
對(duì)接收到的名字字進(jìn)行處理。
}
}
處理完成,關(guān)閉客戶端連接;
}
}
Void ?讀取溫度(){
讀取溫度,將其存放在變量中
switch (根據(jù)讀取的數(shù)字進(jìn)行判斷){
case 溫度讀取正常: break;
case 溫度讀取失敗;
case ?溫度讀取超時(shí):
default:
溫度讀取錯(cuò)誤。}}
void 處理接收的數(shù)據(jù)信息(void){
if(命令識(shí)別代碼如果為 0x55)
{
switch(命令字){
case 溫度命令字:
讀取溫度;
break;
case 濕度命令字: 讀取濕度
break;
case 水分命令字: 讀取水分?jǐn)?shù)值
break;
case 光照命令字: ?讀取光照數(shù)值
break; }}}
2?測試過程
為了驗(yàn)證系統(tǒng)的實(shí)時(shí)性, 啟動(dòng)電路,可以看到Arduino UNO的TXD、RXD指示燈不斷閃爍, 連續(xù)采集溫濕度、光照、土壤濕度數(shù)據(jù),通過網(wǎng)絡(luò)模塊W5100將采集到的數(shù)據(jù)傳輸給Labview,2秒后在Labview的前面板(圖2所示)顯示測試結(jié)果。
繼續(xù)對(duì)DHT11數(shù)字溫濕度傳感器增加溫度和濕度、對(duì)光照傳感器增加照度、對(duì)土壤增加水分,從前面板可以看到:前面板顯示數(shù)值持續(xù)增大滿足實(shí)時(shí)顯示要求。如圖8所示。
3?總結(jié)
在本系統(tǒng)中,Arduino Uno微處理器便捷靈活,具有豐富的接口,編程簡單;虛擬儀器Labview設(shè)有常規(guī)儀器的控制面板,采用可視化的圖形編程語言和平臺(tái),在計(jì)算機(jī)屏幕上建立圖形化的軟面板來替代常規(guī)的傳統(tǒng)儀器面板,實(shí)時(shí)顯示測量數(shù)據(jù),不需要設(shè)計(jì)專門的顯示電路;網(wǎng)絡(luò)模塊實(shí)現(xiàn)Labview 軟件與Arduino微處理器遠(yuǎn)程交互式通信。
簡單的電路可完成復(fù)雜的功能,不需要專門設(shè)計(jì)顯示電路,使設(shè)計(jì)成本降低,該系統(tǒng)還具有遠(yuǎn)距離測量、反應(yīng)快、測量精度高、分辨力高的優(yōu)點(diǎn)。
參考文獻(xiàn)
[1]?彭智洪,趙東堯,蔣益瑩,李帆,楊炎,陸小飛.基于藍(lán)牙的溫濕度采集系統(tǒng)設(shè)計(jì)[J].科技資訊,2017,15(6):7.
[2]?左義海,石振東,王博等.創(chuàng)客從0到1--基于Arduino設(shè)計(jì)[M]. 北京:北京航空航天大學(xué)出版社,2016.
[3]?吳城龍,陳文斌.低功耗無線溫濕度測量系統(tǒng)的設(shè)計(jì)開發(fā)研究[J].資源節(jié)約與環(huán)保,2016(12):7.
[4]?陳呂洲.Arduino程序設(shè)計(jì)基礎(chǔ)[M]. 北京:北京航空航天大學(xué)出版社,2015.
[5]?王鷂芝,屈薔,趙陽.基于LabVIEW的庫房監(jiān)測系統(tǒng)設(shè)計(jì)[J].電子測量技術(shù),2015,38(9):78-81.
[6]?張銀鴻,閔建,莊建,胡磊,李嘉杰.基于以太網(wǎng)的多協(xié)議溫濕度采集系統(tǒng)研制[J].核電子學(xué)與探測技術(shù),2015,35(5):478-482.
[7]?于崇梓.Arduino開發(fā)實(shí)戰(zhàn)指南(Labview卷)[M]. 北京: 機(jī)械工業(yè)出版社,2014.
[8]?修金鵬.Arduino與LabVIEW互動(dòng)設(shè)計(jì)[M].北京:清華大學(xué)出版社,2014.
[9]?金婕.淺談便攜式溫濕度測量儀的設(shè)計(jì)[J].科技與企業(yè),2014(19):195.
[10]?畢莉婭.一種高集成溫濕度測量系統(tǒng)的研制[J].化學(xué)分析計(jì)量,2013,22(4):76-78.
[11]?胡仁喜,高海賓.LABVIEW2010虛擬儀器從入門到精通[M].北京: 機(jī)械工業(yè)出版社,2013.
(收稿日期: 2018.05.31)