基于物聯(lián)網(wǎng)的智能灌溉系統(tǒng),使用NodeMCU ESP8266和Adafruit IO
掃描二維碼
隨時隨地手機看文章
由于不可預(yù)測的天氣條件和缺水,世界各地的農(nóng)民在種植作物方面面臨很多困難。傳統(tǒng)的灌溉系統(tǒng)耗水量大,供水不均勻。這會影響農(nóng)作物的質(zhì)量。
許多農(nóng)民已經(jīng)開始使用溫室農(nóng)業(yè)和智能灌溉系統(tǒng)。新興的物聯(lián)網(wǎng)技術(shù)和傳感器被用于開發(fā)灌溉系統(tǒng),該系統(tǒng)可以根據(jù)濕度值、溫度等氣候條件自動供水。
在這個項目中,我們正在使用NodeMCU,濕度傳感器和LDR構(gòu)建一個基于物聯(lián)網(wǎng)的智能灌溉系統(tǒng)。當濕度值低于特定值時,它會自動向植物澆水。它還會將濕度數(shù)據(jù)發(fā)送到Adafruit IO服務(wù)器,以跟蹤土地狀況。Adafruit IO儀表板也將有一些按鈕手動打開/關(guān)閉電磁閥和燈。本工程采用電磁閥向廠區(qū)供水。您可以根據(jù)工廠的要求更改電磁閥開啟的濕度值。這里我們使用的是NodeMCU ESP8666,這是一個非常流行的基于物聯(lián)網(wǎng)項目的Wi-Fi模塊。
組件的要求
硬件
?NodeMCU ESP8266
?土壤濕度傳感器模塊
?LDR
?10 k鍋
?電磁閥
?繼電器模塊
?LED
在線服務(wù)
?Adafruit IO
基于物聯(lián)網(wǎng)的智能灌溉系統(tǒng)電路圖
使用物聯(lián)網(wǎng)的智能灌溉系統(tǒng)電路圖如下:
在本電路中,土壤傳感器連接到NodeMCU的A0引腳上。LDR傳感器接D1引腳,Relay模塊接NodeMCU的D0引腳。電磁閥連接到繼電器模塊上,因此每當NodeMCU產(chǎn)生觸發(fā)器時,它就會灑水。
以下是基于物聯(lián)網(wǎng)的智能灌溉系統(tǒng)的設(shè)置:
Adafruit IO設(shè)置
Adafruit IO是一個開放的數(shù)據(jù)平臺,允許您在云中聚合、可視化和分析實時數(shù)據(jù)。使用Adafruit IO,您可以在互聯(lián)網(wǎng)上上傳,顯示和監(jiān)控數(shù)據(jù),并使您的項目啟用物聯(lián)網(wǎng)。您可以使用Adafruit IO控制電機,讀取傳感器數(shù)據(jù),并通過互聯(lián)網(wǎng)制作酷的物聯(lián)網(wǎng)應(yīng)用程序。為了測試和嘗試,有一些限制,Adafruit IO是免費使用的。我們以前也在樹莓派上使用過Adafruit IO。
1. 要使用Adafruit IO,首先,您必須在Adafruit IO上創(chuàng)建一個帳戶。要做到這一點,請訪問Adafruit IO網(wǎng)站,點擊屏幕右上方的“免費開始”。
2. 在完成帳戶創(chuàng)建過程后,登錄您的帳戶并單擊右上角的“AIO密鑰”以獲取您的帳戶用戶名和AIO密鑰。
當你點擊“AIO密鑰”,一個窗口將彈出你的Adafruit IO AIO密鑰和用戶名。復制此密鑰和用戶名,稍后將在代碼中用到。
3. 現(xiàn)在,在此之后,您需要創(chuàng)建一個提要。要創(chuàng)建提要,請單擊“feed”。然后點擊“Actions”,然后點擊“Create a New Feed”,如下圖所示。
4. 在此之后,將打開一個新窗口來輸入提要的名稱和描述。書寫描述是可選的。
5. 點擊“創(chuàng)建”,然后;您將被重定向到新創(chuàng)建的提要。
在這個項目中,我們總共創(chuàng)建了三個饋源——電磁閥、濕度數(shù)據(jù)和LED。
創(chuàng)建提要之后,現(xiàn)在創(chuàng)建Adafruit IO儀表板,以便在單個頁面上顯示所有這些提要。要創(chuàng)建儀表板,請單擊dashboard選項,然后單擊“Action”,然后單擊“create a New dashboard”。
在下一個窗口中,輸入儀表板的名稱并單擊“Create”。
6. 隨著儀表板的創(chuàng)建,我們將向儀表板添加提要。要添加提要,請單擊右上角的“+”。
首先,我們將添加兩個切換按鈕塊來控制LED和電磁閥。然后是一個用于濕度數(shù)據(jù)的圖形塊。
要在儀表板上添加按鈕,請單擊Toggle塊。
在下一個窗口中,它將要求您選擇提要,因此單擊LED提要。
之后,按照相同的步驟為電磁閥創(chuàng)建另一個Toggle按鈕塊。
7. 現(xiàn)在要在儀表板上添加圖形,請遵循相同的過程,但不是創(chuàng)建RESET塊,而是為圖形視圖創(chuàng)建折線圖塊。
在創(chuàng)建了所有的塊之后,我的儀表板看起來是這樣的:
您可以通過單擊設(shè)置按鈕來編輯儀表板。
智能灌溉系統(tǒng)的NodeMCU編程
要對NodeMCU進行智能灌溉系統(tǒng)編程,請將NodeMCU用Micro USB電纜連接到筆記本電腦上,然后打開Arduino IDE。在這個程序中,只有Adafruit MQTT庫被用作外部庫。你可在此下載資料庫:
Adafruit_MQTT.h
要用Arduino IDE編程NodeMCU,請進入File - > preferences - >Settings。
在“附加板管理器URL”字段中輸入,然后單擊“確定”。
現(xiàn)在轉(zhuǎn)到Tools > Board > Boards Manager。
在板管理器窗口中,在搜索框中輸入esp, esp8266將在下面列出?,F(xiàn)在選擇最新版本的電路板并單擊install。
安裝完成后,進入“工具>單板> NodeMCU 1.0(ESP-12E模塊)”。現(xiàn)在您可以使用Arduino IDE對NodeMCU進行編程。
完整的代碼在本教程的末尾給出,在這里我們一步一步地解釋程序,以便您可以輕松地理解這段代碼的工作。
通過包含所有必需的庫開始編寫代碼。
然后包括從Adafruit IO服務(wù)器復制的WiFi和Adafruit IO憑據(jù)。這些將包括MQTT服務(wù)器、端口號、用戶名和AIO密鑰
設(shè)置你要發(fā)布內(nèi)容的提要。這里,AgricultureData是提要名稱。
設(shè)置你訂閱的訂閱源。這里的“LED”和“Pump”是feed的名稱。
從A0引腳讀取LDR讀數(shù)并比較讀數(shù)。如果讀數(shù)小于200,則打開LED,否則關(guān)閉LED。
從傳感器讀取濕度讀數(shù),并將讀數(shù)與所需值進行比較。如果低于所需值,則打開水泵,否則關(guān)閉水泵。
每5秒將濕度數(shù)據(jù)發(fā)布到Adafruit IO feed。
閱讀訂閱的提要。如果字符串是‘ OFF ’,然后打開LED/水泵,如果字符串是‘ on ’,然后關(guān)閉LED/水泵。
最后,這是水分數(shù)據(jù)在Adafruit IO儀表板上的樣子:
這就是基于NodeMCU的物聯(lián)網(wǎng)智能灌溉系統(tǒng)的工作原理。你可以擴展這個項目,使用更多的傳感器來測量其他參數(shù),如濕度、壓力、溫度等。我們之前已經(jīng)建立了一個基于ESP8266的氣象站來讀取所有這些值。
本文編譯自iotdesignpro