|
pe1fxsfegdr640100230506.gif (60.41 KB, 下載次數(shù): 0)
下載附件
保存到相冊
pe1fxsfegdr640100230506.gif
2024-11-6 22:23 上傳
+ }5 w4 [! x( H, W6 t4 P
點擊上方藍色字體,關(guān)注我們1 P& z5 [1 e7 u
1- a3 j6 W/ Z( V+ O1 b! |4 L1 [
項目概述& m; p1 e3 x3 k( x( O! k$ t
6 A% A& G' L0 a4 P& w% x7 J
智能農(nóng)業(yè)是目前農(nóng)業(yè)發(fā)展的新方向,它根據(jù)農(nóng)作物的生長習(xí)性及時調(diào)整土壤狀況和環(huán)境參數(shù),以最少的投入獲得最高的收益,改變了傳統(tǒng)農(nóng)業(yè)中必須依靠環(huán)境種植的弊端及粗放的生產(chǎn)經(jīng)營管理模式,改善了農(nóng)產(chǎn)品的質(zhì)量與品質(zhì),調(diào)整了農(nóng)業(yè)的產(chǎn)業(yè)結(jié)構(gòu),確保了農(nóng)產(chǎn)品的總產(chǎn)量,高效地利用了各種各樣的農(nóng)業(yè)資源,可取得可觀的經(jīng)濟效益和社會效益。 E7 Q* |! v+ E8 \% l" j
/ [4 U4 n& ~% P8 r在農(nóng)業(yè)生產(chǎn)過程中,溫度、濕度、光照強度、CO2濃度、水分,以及其他養(yǎng)分等多種自然因素共同影響農(nóng)作物生長。傳統(tǒng)農(nóng)業(yè)的管理方式遠遠沒有達到精細化管理的標(biāo)準(zhǔn),只能算是粗放式管理,在這種管理方式下,通過人的感知能力來管理上述環(huán)境參數(shù),無法達到準(zhǔn)確性要求。而智能農(nóng)業(yè),是通信、計算機和農(nóng)學(xué)等若干學(xué)科和領(lǐng)域共同發(fā)展并相互結(jié)合所形成的產(chǎn)物,它將信息采集、傳輸、處理和控制集成在一起,使人們更容易獲得農(nóng)作物生長各個階段的各類信息,也讓人們更容易掌控這些信息,通過人工智能與農(nóng)業(yè)生產(chǎn)的結(jié)合真正實現(xiàn)人與自然的交互。
9 g, [( k' e' h6 I
% f3 b# p: g2 b3 W# `, A% P \5 i智能農(nóng)業(yè)的核心問題可以概括為以下四部分,即農(nóng)業(yè)信息的獲取、對所獲取信息的管理、經(jīng)信息分析做出的決策、由決策而決定的具體實施方針。在這四部分中,對農(nóng)業(yè)信息的獲取是智能農(nóng)業(yè)的起點,也是非常關(guān)鍵的一點,做不到準(zhǔn)確實時地獲取農(nóng)業(yè)信息,就無法建造真正的智能農(nóng)業(yè)。而實現(xiàn)智能農(nóng)業(yè),建立一個實用、可靠、可長期監(jiān)測的農(nóng)業(yè)環(huán)境監(jiān)測系統(tǒng)是非常必要的。- v) r% p- \" {% l3 }+ ?: G
6 U( q& ]: v3 o$ w! X1 {3 k' k, D隨著通信、計算機、傳感網(wǎng)等技術(shù)的迅猛發(fā)展,將物聯(lián)網(wǎng)應(yīng)用到農(nóng)業(yè)監(jiān)測系統(tǒng)中已經(jīng)是目前的發(fā)展趨勢,它將采集到的溫度、濕度、光照強度、土壤水分、土壤溫度、植物生長狀況等農(nóng)業(yè)信息進行加工、傳輸和利用,為農(nóng)業(yè)生產(chǎn)在各個時期的精準(zhǔn)管理和預(yù)警提供信息支持,追求以最少的資源消耗獲得最大的優(yōu)質(zhì)產(chǎn)出,使農(nóng)業(yè)增長由主要依賴自然條件和自然資源向主要依賴信息資源轉(zhuǎn)變,使不可控的產(chǎn)業(yè)得以有效控制。
% g7 R* r" h! _3 U4 }5 b2
+ a" c0 q0 E% e9 @) n# F項目架構(gòu)& \6 S; z8 T) P$ W" x) M% s
, w0 J4 X7 {& C, C+ S0 j; T本篇博文將要介紹一種基于Arduino與LabVIEW的智能農(nóng)業(yè)監(jiān)測系統(tǒng),可以實現(xiàn)農(nóng)作物生長環(huán)境參數(shù)的實時采集以及上位機監(jiān)測軟件的數(shù)據(jù)分析和遠程監(jiān)測。數(shù)據(jù)采集終端設(shè)備采用Arduino作為控制核心,上位機軟件采用LabVIEW,兩者通過RS-485總線實現(xiàn)通信,只需要在田壟之間進行RS-485布線,即可實現(xiàn)組網(wǎng)通信。
3 ^( Z! v3 b$ i v# u0 ?3 e% w
+ x, B! A3 i G7 `
tfsxzr1wi24640100230606.png (123.56 KB, 下載次數(shù): 2)
下載附件
保存到相冊
tfsxzr1wi24640100230606.png
2024-11-6 22:23 上傳
/ \3 d- ^/ p9 }: q, N; {& h/ P d6 p; ]3 G B0 j7 |
3
8 P& A- O+ ^/ I6 H9 B" |傳感器選型
* l0 b5 {5 S& p5 v0 ~% D4 u7 M4 x# F( V/ a. O9 Y
3.1、溫濕度傳感器6 K' e9 K0 N8 u# F6 H, s
2 O" e9 t$ ?% [. m$ c6 o8 ?7 sSHT11是瑞士Sensirion公司推出的一款數(shù)字溫濕度傳感器芯片,將傳感元件和信號處理電路集成在一塊微型電路板上,輸出完全標(biāo)定的數(shù)字信號,采用CMOSens專利技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器芯片內(nèi)部包括一個電容性聚合體測濕敏感元件、一個用能隙材料制成的測溫元件,并在同一芯片上與14位的A/D轉(zhuǎn)換器以及串行接口電路實現(xiàn)無縫連接。因此,具有品質(zhì)卓越、響應(yīng)迅速、抗干擾能力強、性價比高等優(yōu)點,廣泛應(yīng)用于暖通空調(diào)、汽車、消費電子、自動控制等領(lǐng)域。
1 k) l) I, s3 ], y% L+ O% v
+ ~7 Q) R+ I5 H( M3 S, F每個傳感器芯片都在極為精確的濕度腔室中進行標(biāo)定,校準(zhǔn)系數(shù)以程序形式儲存在OTP內(nèi)存中,用于內(nèi)部的信號校準(zhǔn)。兩線制的串行接口與內(nèi)部的電壓調(diào)整,使外圍系統(tǒng)集成變得快速而簡單。微小的體積、極低的功耗,使SHT11成為各類應(yīng)用的首選。
$ |4 k# v3 q6 t% R( l
* J. r% ~: D' i* }2 D
1mbthyxjrlo640100230706.png (119.32 KB, 下載次數(shù): 1)
下載附件
保存到相冊
1mbthyxjrlo640100230706.png
2024-11-6 22:23 上傳
& b/ O- P6 X2 i& v( K
) b# B/ o: o" L5 F) D3.2、光強度傳感器
2 a1 L) Y5 w% p8 {1 l5 {2 W7 V( x
BH1750FVI是一種兩線式串行總線接口的數(shù)字型光強度傳感器,可以根據(jù)收集的光線強度數(shù)據(jù)來調(diào)整液晶或者鍵盤背景燈的亮度,利用它的高分辨率可以探測較大范圍的光強度變化。BH1750FVI光照傳感器模塊如下圖所示: t$ w+ L' |. Q* f; n& G+ `
+ j( o3 s% ]% T" I3 B v
tbdgos1p2ef640100230807.png (60.95 KB, 下載次數(shù): 3)
下載附件
保存到相冊
tbdgos1p2ef640100230807.png
2024-11-6 22:23 上傳
+ c0 i7 ]2 Y0 s! y# Q6 b7 l( U
+ e1 |% D# L7 E$ D& L# i6 y; S! b. Q
3.3、水分傳感器
! R# k& I: b3 ~
# j& S) |& O5 k; z. ]3 u0 B專業(yè)的農(nóng)用水分傳感器價格較貴,此處選擇價格較為低廉的電阻式水分傳感器,如下圖所示:2 a& w1 O$ z, S7 y! m3 f( ]; I3 m7 t
: ?3 L7 K1 J9 T
5db4byt5hrq640100230907.png (131.92 KB, 下載次數(shù): 2)
下載附件
保存到相冊
5db4byt5hrq640100230907.png
2024-11-6 22:23 上傳
8 |* T% |- M6 G- h+ Y: j* E+ M D; J1 _- t6 Z+ H5 u) _& |
4( K# p" Q* R1 [' u4 _9 ?: I
硬件環(huán)境
& u) u" i8 g; Z' `1 N9 ~. V( G: ^( @* U/ h& N. r% c8 L
將SHT11溫濕度傳感器的VCC、GND、SCK、DATA分別接至Arduino Uno控制板上的+5V、GND、模擬端口A2和A3。
$ Q: ]) s- N% V( ^" b2 D1 X0 E" h! i; p% M$ q
將BH1750FVI光照傳感器的VCC、GND、SCL、SDA和ADD分別接至Arduino Uno控制板上的+5V、GND、SCL、SDA和GND,此處在硬件連接圖上沒有表示出來。8 O3 L0 C! S) a+ O) L" L. i, u1 R
+ E! o! \( O( ^/ o0 N( m; f) X
將水分傳感器的VCC、GND、Vout分別接至Arduino Uno控制板上的+5V、GND和模擬端口A0,此處在硬件連接圖上表示出來。6 q- ^5 ~- c3 b. B" B7 Z5 I
& r/ X* v0 N# U) C9 @: h) ?$ Q8 B% P
將MAX485模塊的VCC、GND、RO、DI分別接至Arduino Uno控制板上的+5V、GND、RX和TX,將RE和DE端接至數(shù)字端口D2,用于控制收發(fā)信號。
6 Q- u' u' W5 q, \! n5 B
7 ?. ~5 h2 C) P- g' P" c8 e5 s1 eArduino Uno與MAX485和SHT11的硬件連接,如下圖所示:
( \: I9 t" V a Z/ H
/ a6 |6 h! u% O9 N; f) v
ufiljcx0k0h640100231007.png (107.38 KB, 下載次數(shù): 3)
下載附件
保存到相冊
ufiljcx0k0h640100231007.png
2024-11-6 22:23 上傳
6 O4 Y2 u3 a: Q# R5 Y! S, h$ c, g5! m7 J9 b6 S$ U& {
Arduino功能設(shè)計9 ^# s H1 k( S- M
) Q9 l3 M9 Q6 V' ^, N* I4 I
在基于RS-485總線的智能農(nóng)業(yè)監(jiān)測系統(tǒng)中,每個節(jié)點配置一個Arduino Uno控制器通過MAX485模塊掛在RS-485總線上。Arduino Uno控制器需要完成以下功能:接收和判斷命令、采集和傳輸溫濕度、光照和水分?jǐn)?shù)據(jù)。Arduino Uno控制器利用MAX485模塊通過串口從RS-485總線上接收上位機發(fā)來的命令,分析得到有效命令,再根據(jù)命令碼實現(xiàn)溫濕度、光照和水分?jǐn)?shù)據(jù)的采集,并上傳給LabVIEW軟件。5 F' ~; A. y0 O% ~$ K% I7 M
8 s3 n0 ^& {7 [& \7 F0 T
智能農(nóng)業(yè)監(jiān)測系統(tǒng)Arduino控制器程序代碼如下所示:
9 U% u; P* s D. g. r% f
3 q/ U' o6 C* t Q. h#include #include #define temp_Command 0x10 //采集命令字#define humidity_Command 0x20 //A1采集命令字#define water_Command 0x30 //D1采集命令字#define illumination_Command 0x40 //D0采集命令字// GY-30// BH1750FVI// in ADDR 'L' mode 7bit addr#define ADDR 0b0100011// addr 'H' mode// #define ADDR 0b1011100 // Specify data and clock connections and instantiate SHT1x object#define dataPin A3#define clockPin A2SHT1x sht1x(dataPin, clockPin); byte comdata[3]={0}; //定義數(shù)組數(shù)據(jù),存放串口接收數(shù)據(jù)float temp_c;float humidity;int dustPin=0;int dustVal=0;int Water_Val=0; int Illumination_Val = 0; void receive_data(void); //接受串口數(shù)據(jù)void test_do_data(void); //測試串口數(shù)據(jù)是否正確,并更新數(shù)據(jù) void setup(){ Serial.begin(9600); Wire.begin(); Wire.beginTransmission(ADDR); Wire.write(0b00000001); Wire.endTransmission();}void loop(){ while (Serial.available() > 0) //不斷檢測串口是否有數(shù)據(jù) { receive_data(); //接受串口數(shù)據(jù) test_do_data(); //測試數(shù)據(jù)是否正確并更新標(biāo)志位 }}void receive_data(void) { int i ; for(i=0;i3;i++) { comdata =Serial.read(); //延時一會,讓串口緩存準(zhǔn)備好下一個字節(jié),不延時可能會導(dǎo)致數(shù)據(jù)丟失, delay(2); }} void test_do_data(void){ if(comdata[0] == 0x55) //0x55和0xAA均為判斷是否為有效命令 { if(comdata[1] == 0xFF) { switch(comdata[2]) { case temp_Command: temp_c = sht1x.readTemperatureC(); Serial.print(temp_c, 2); break; case humidity_Command: humidity = sht1x.readHumidity(); Serial.print(humidity,2); break; case water_Command: Water_Val=analogRead(A0); Serial.print(Water_Val); break; case illumination_Command: // reset Wire.beginTransmission(ADDR); Wire.write(0b00000111); Wire.endTransmission(); delay(100); Wire.beginTransmission(ADDR); Wire.write(0b00100000); Wire.endTransmission(); // typical read delay 120ms delay(120); Wire.requestFrom(ADDR, 2); // 2byte every time for (Illumination_Val=0; Wire.available()>=1; ) { char c = Wire.read(); //Serial.println(c, HEX); Illumination_Val = (Illumination_Val 8) + (c & 0xFF); } Illumination_Val = Illumination_Val / 1.2; Serial.println(Illumination_Val); break; } } }}( K1 E% w: j4 C" k4 d
6
+ p0 [1 ^( Q+ \3 y# m1 |! oLabVIEW功能設(shè)計
, }) B5 ^/ b$ o5 ]7 N0 A6 E$ @9 }3 ?/ {- E& L/ j% U
LabVIEW上位機部分需要完成如下功能:根據(jù)所選擇的節(jié)點向RS-485總線上發(fā)送不同節(jié)點號的溫度、濕度、光照、水分的數(shù)據(jù)采集命令,Arduino控制器通過串口和MAX485模塊從RS-485總線上接收上位機命令,然后判斷接收的命令中的節(jié)點號是否與自己的節(jié)點號匹配,如果匹配則實現(xiàn)相應(yīng)的數(shù)據(jù)采集之后并將采集的數(shù)據(jù)回傳,LabVIEW軟件將回傳的數(shù)據(jù)顯示在前面板上;如果不匹配則舍棄當(dāng)前接收的上位機命令,重新等待下次命令的到來。/ s) f6 |% p6 b3 i* M5 M) K, e
. a* ^4 V) n: \7 m- C2 G- g
6.1、前面板設(shè)計6 I- i5 ?8 q; s$ u, Z) R/ q
8 f& @1 D" X Z3 q7 i; P0 @4 o$ Q, p
LabVIEW前面板分為節(jié)點選擇、工作指示燈和數(shù)據(jù)顯示模塊,節(jié)點選擇用于選擇當(dāng)前監(jiān)測的節(jié)點,將其數(shù)據(jù)顯示在顯示模塊上;工作指示燈用于該節(jié)點是否正常工作;顯示模塊主要用于顯示當(dāng)前的數(shù)據(jù),包括溫度、濕度、光照和水分情況。
# b/ w J6 g3 T+ q基于Arduino與LabVIEW的智能農(nóng)業(yè)監(jiān)控系統(tǒng)的LabVIEW上位機前面板,如下圖所示:$ O7 X, H: @ h$ r
, K4 ?+ [/ Y1 V0 c
koi3iutibnd640100231107.png (184.86 KB, 下載次數(shù): 1)
下載附件
保存到相冊
koi3iutibnd640100231107.png
2024-11-6 22:23 上傳
# Y% i7 {+ s, H: J( [- h' t
; U! r x6 [2 B( _9 |* j& j. }6.2、程序框圖設(shè)計9 P' ?1 W! Z: Q/ U- P! H9 U$ r
% R& S4 ~ @' }1 T4 Q. _采用條件結(jié)構(gòu)+移位寄存器的狀態(tài)機來實現(xiàn)LabVIEW上位機主程序,將主程序劃分為5個狀態(tài):0狀態(tài)為串口初始化,1狀態(tài)為溫度測量,2狀態(tài)為濕度測量,3狀態(tài)為光照測量,4狀態(tài)為水分測量,且初始狀態(tài)為0狀態(tài)(串口初始化)。
' I5 l& L% e6 o
, w5 q, t$ l: S ?& w為了更好地實現(xiàn)通信,制定如下的通信協(xié)議:幀頭+節(jié)點代號+操作碼。0x55為幀頭,節(jié)點代號有0xA1為節(jié)點0的代號,0xA2為節(jié)點1的代號,0xA3為節(jié)點2的代號,0xA4為節(jié)點3的代號,0xA5為節(jié)點4的代號,操作碼有0x10為溫度采集,0x20為濕度采集,0x30為光照采集,0x40為水分采集。6 \* K' Y( Y" A, _
3 N3 Q; X8 J5 r B4 i0 |
在0狀態(tài)中,通過設(shè)置的串口號來初始化串口通信,如下圖所示:
% q* A1 i) R( j
2 o0 K, v! ?$ ^! I7 P8 }
ubrpylkntbn640100231207.png (95.13 KB, 下載次數(shù): 1)
下載附件
保存到相冊
ubrpylkntbn640100231207.png
2024-11-6 22:23 上傳
: B/ r6 Z9 I+ U& a- {+ L
: N7 i& R! t* g5 s. C7 A在1狀態(tài)中,讀取溫度數(shù)據(jù)并顯示,如下圖所示:
8 Y4 i! j" X/ B- d9 y& C. e+ w3 D, g2 s# \* n
2tdysfw2333640100231308.png (116.65 KB, 下載次數(shù): 2)
下載附件
保存到相冊
2tdysfw2333640100231308.png
2024-11-6 22:23 上傳
0 |# P8 y- j% x! y0 a
Z- `* z) h* `& e& n在2狀態(tài)中,讀取濕度數(shù)據(jù)并顯示,如下圖所示:
1 E( i9 [9 ]" f
' x' E, T- v W D
apjgogvv3ef640100231408.png (119.27 KB, 下載次數(shù): 4)
下載附件
保存到相冊
apjgogvv3ef640100231408.png
2024-11-6 22:23 上傳
0 G! Q0 M9 j6 a* M" r7 E }( U; D. d4 f
在3狀態(tài)中,讀取光照數(shù)據(jù)并顯示,如下圖所示:
- Z) G; ~2 w. Z+ \% U) |: q% K! a7 R' L" a4 F8 G
2nayxbdq4km640100231508.png (114.23 KB, 下載次數(shù): 0)
下載附件
保存到相冊
2nayxbdq4km640100231508.png
2024-11-6 22:23 上傳
7 u, ~1 ]1 l& W3 \7 d
" ?9 Z5 s8 A) P: I; c+ ?在4狀態(tài)中,讀取水分?jǐn)?shù)據(jù)并顯示,如下圖所示:0 P: V- K( i6 E
& I7 Q( \" s4 q7 J+ K
5suff0e3ezv640100231608.png (120.41 KB, 下載次數(shù): 4)
下載附件
保存到相冊
5suff0e3ezv640100231608.png
2024-11-6 22:23 上傳
& }5 A. I2 M7 d9 \
8 }8 n9 {1 [3 |
最后,關(guān)閉串口通信。
4 |( i' z) ]0 e- Q6 R: a! P9 X* G# H" B2 U6 J4 y4 ]& b. i- a' e7 Y
由于RS-485總線具有抗干擾能力強的優(yōu)點,適合用于可靠性要求高的場合,本節(jié)介紹的智能農(nóng)業(yè)監(jiān)測系統(tǒng)采用RS-485總線作為每個子節(jié)點與總站的通信方式,如果需要檢測的面積較大,監(jiān)測密度較為稀疏,RS-485總線方式需要很多的線材,則采用ZigBee無線通信方式更為實用。由于農(nóng)業(yè)專業(yè)的傳感器價格較為昂貴,本部分采用較為低廉的傳感器來實現(xiàn)了一個簡易的監(jiān)測,如果需要專業(yè)應(yīng)用,則需要購買農(nóng)業(yè)專用的傳感器。
* O3 o4 O6 L9 t5 x
: T5 W" y$ Y. e' i
b0kfhzjsam4640100231708.png (401 Bytes, 下載次數(shù): 2)
下載附件
保存到相冊
b0kfhzjsam4640100231708.png
2024-11-6 22:23 上傳
- i/ V6 J$ a" V6 D# N/ ?" |. F
往期推薦LabVIEW Arduino ZigBee無線氣象站(項目篇—3)8 Z& Q; l3 M* J u: }9 Z' M
LabVIEW Arduino無線藍牙遙控智能車(項目篇—2)
1 F0 \4 z1 s3 l* {LabVIEW Arduino電子稱重系統(tǒng)(項目篇—1)
% a2 a- Q9 z2 i
7 Y r @" v! N6 [) T7 _4 E
bi34efsbarc640100231808.jpg (71.14 KB, 下載次數(shù): 3)
下載附件
保存到相冊
bi34efsbarc640100231808.jpg
2024-11-6 22:23 上傳
8 A$ P6 W$ I8 _- ?8 w3 R+ t9 T
oisdc5afzzb640100231908.gif (45.46 KB, 下載次數(shù): 3)
下載附件
保存到相冊
oisdc5afzzb640100231908.gif
2024-11-6 22:23 上傳
7 a" E y) H! e
點擊閱讀原文,更精彩~ |
|