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





