構(gòu)建一個(gè)智能灌溉系統(tǒng)
我妻子喜歡植物和食物,花園往往是她快樂的地方。問題是,它也是各種動(dòng)物(尤其是鹿)的快樂之地,它們想先吃掉它。所以,在瘋狂的一年半的時(shí)間里,我最終設(shè)法找到時(shí)間建造了一個(gè)史詩般的花園。但是,我不能讓一個(gè)項(xiàng)目在沒有技術(shù)輔助的情況下進(jìn)行,所以我建造了一個(gè)自動(dòng)灌溉系統(tǒng)來配合它。
智能灌溉的目標(biāo)是連接到我在排水溝上安裝的雨桶上。根據(jù)天氣情況,我們自動(dòng)打開連接pvc灌溉系統(tǒng)的閥門,然后連接滴灌軟管。
硬件
我越來越喜歡ESP32作為我的首選arduino。即使是誰決定了瓶的順序(例如。D5, D18, D19, D21…??)必須有某種物質(zhì),它只是可靠地工作,讓我把一大堆代碼。
但是,盡管它的一個(gè)優(yōu)點(diǎn)是可以使用wifi,但在院子里進(jìn)行的項(xiàng)目往往很難獲得wifi信號(hào)。我把我的手機(jī)放在房子的另一端,而不是wifi的位置,所以幾乎沒有任何信號(hào)。因此,為了保證這一切都能可靠地工作,我使用的是blue公司的noteccarrier - f,以便在wifi出現(xiàn)故障時(shí)(實(shí)際上大多數(shù)時(shí)候都是這樣)打電話。
另一個(gè)關(guān)鍵的硬件是閥門。我試過其他的閥門,它們都不工作,而且沒有明顯的原因。我應(yīng)該在這里添加一個(gè)附屬鏈接,因?yàn)槲铱梢宰C明,我確實(shí)得到的閥門只是工作,但相反,我將是一個(gè)傻瓜,錯(cuò)過了那些便士,只是提供我得到的圖片:
我們?nèi)匀恍枰獙㈤y門連接到arduino,因此我們需要最后一個(gè)組件。我使用的是L298N電機(jī)驅(qū)動(dòng)控制器板。這是一個(gè)難得的美妙時(shí)刻,我一直在做這些無聊的項(xiàng)目,我碰巧手頭有一些,而且還設(shè)法找到了它們(這是不可思議的部分)。
下面是引腳輸出:
Esp32 d18→l298n in3
Esp32 d19→l298n in4
12V電源- L298N
12V電源的GND和ESP32的GND - L298N GND
球閥黃色→L298N GND
球閥紅色→OUT3
球閥藍(lán)色→OUT4
ESP32 D21 (SDA)→Notecarrier-F上的SDA
ESP32 D22 (SCL)→nocarrier - f上的SCL
ESP32 GND→GND無載波- f
ESP32和Notecarrier-F分別通過usb供電。
代碼!
這里有很多代碼,但可以相對(duì)簡潔地總結(jié)。所有這一切的主要目標(biāo)是獲取天氣數(shù)據(jù),并決定是否相應(yīng)澆水。
大多數(shù)情況下,我們的目標(biāo)是每隔一天澆一次水。如果昨天下了不少雨,或者今天很有可能會(huì)下雨,今天就不要澆水了。如果天氣特別熱,就每天澆水。對(duì)于天氣數(shù)據(jù),我嘗試了一些與以前項(xiàng)目不同的東西,它似乎很有效,那就是Open Meteo。
我們讓設(shè)備在不使用時(shí)休眠,它會(huì)在早上醒來獲取天氣數(shù)據(jù)。我們會(huì)先嘗試使用wifi,如果無法使用,我們就會(huì)使用blue。
我添加了兩個(gè)非常方便的測試字段,以確保一切工作,它們是IGNORE_ALREADY_WATERED_TODAY和FORCE_NOTECARD標(biāo)志。從名字上看,它們很簡單,但如果我們用天氣數(shù)據(jù)來測試所有東西,以確保閥門的開啟和關(guān)閉正確不止一次,我們可以忽略我們今天已經(jīng)澆水了。在配置blue時(shí),我們可以強(qiáng)制代碼使用記事卡。這是特別有用的,因?yàn)镋SP32實(shí)際上能夠成功地在內(nèi)部進(jìn)行wifi呼叫,而我們應(yīng)該期望呼叫在外部失敗-所以我們需要確保我們?cè)跍y試時(shí)不使用wifi,一旦我們知道該部分工作。
添加藍(lán)調(diào)
對(duì)于不太熟悉Blues的人來說,這是在我們可能沒有其他連接時(shí)發(fā)送或接收數(shù)據(jù)的好方法。我傾向于把它作為遠(yuǎn)離wifi的項(xiàng)目的首選。
如果你是布魯斯的新手,第一步是遵循他們的快速入門指南(在這里找到),它會(huì)引導(dǎo)你配置一切,并啟動(dòng)和運(yùn)行。一旦你的項(xiàng)目設(shè)置好了,只要遵循下面的步驟,你就可以開始了。
對(duì)于這個(gè)項(xiàng)目中的路由,我們使用了Notecard Web請(qǐng)求的代理選項(xiàng),如下所示:
對(duì)于我的設(shè)置,我發(fā)現(xiàn)在Blues項(xiàng)目中設(shè)置2條路由效果很好。一個(gè)取昨天的數(shù)據(jù),一個(gè)取今天的數(shù)據(jù)。我發(fā)現(xiàn)在Blues路由url中包含字段對(duì)我來說效果很好,所以它們有點(diǎn)長,但您需要的兩個(gè)字段都在下面。我標(biāo)記我的路線meteoY和meteoT(昨天和今天,使用meteo api)。
這樣,我們就擁有了我們所需要的一切,以便我們已經(jīng)討論過的代碼能夠完全工作。
額外的信用-一個(gè)安卓應(yīng)用程序
時(shí)不時(shí)地,我們會(huì)有一種暗示,我們應(yīng)該“再快速做一件事”。我的想法是,通過像web瀏覽器這樣的url來調(diào)用arduino很容易,所以我基本上只是讓它看起來更好。
該應(yīng)用程序的目的是提供直接控制閥門的能力,我們可以打開,關(guān)閉,或者打開然后關(guān)閉(就像按一個(gè)按鈕打開,等待,然后關(guān)閉)閥門。
無論如何,它都不是世界上最花哨的應(yīng)用程序,但它確實(shí)可以完整地工作,并且包含在項(xiàng)目中。使此工作一致的最簡單方法是使用ESP32的ip地址,您可以鎖定該地址以使其與wi - fi網(wǎng)絡(luò)保持一致。例如,我使用谷歌Wifi設(shè)置,為了保持ip地址一致,我可以在谷歌Home應(yīng)用程序中這樣做。
回想起來,這個(gè)想法的問題是,如前所述,設(shè)置對(duì)wifi來說有點(diǎn)太遠(yuǎn)了。由于這個(gè)應(yīng)用程序被設(shè)置為通過wifi工作,理論上它確實(shí)工作,但在實(shí)踐中,這是一個(gè)有點(diǎn)愚蠢的附加組件,至少對(duì)我的設(shè)置。如果你遵循,你的設(shè)置是在你的wifi范圍內(nèi),歡迎你!值得慶幸的是,我認(rèn)為沒有必要手動(dòng)打開和關(guān)閉閥門。如果我們覺得需要澆水的水量超過了雨水桶的自動(dòng)水量,我們就用軟管。
完成了!
整個(gè)項(xiàng)目(包括花園的建造)花費(fèi)了相當(dāng)多的工作來實(shí)現(xiàn),所以看到它全部完成并工作是非常令人滿意的。電子設(shè)備完全工作,是一種設(shè)置和忘記類型的解決方案,應(yīng)該有助于保持花園的活力,而我們的注意力集中在讓我們的孩子活著等事情上,所以希望所有的前期努力都有回報(bào)。
本文編譯自hackster.io





