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