使用 Raspberry Pi Pico W 構建自動化園藝系統
憑藉園藝經驗和一些耐心,園藝是一種可愛的愛好,無論您是在室內種植一些外來植物,還是擁有一個長滿土豆和多年生植物的成熟室外花園。
話雖如此,有時當植物開始死亡時,您的耐心可能會耗盡,而這似乎根本沒有充分的理由。
Raspberry Pi Pico W 可以幫助提供一種解決方案,確保植物無需費力(嗯,幾乎)就能茁壯成長。
讓我們回顧一下植物監測器、一些代碼和微型微控制器如何從您家中的任何地方跟踪植物的健康狀況。
所需硬件
令人驚訝的是,不需要很多硬件。Plant Monitor 包含許多神奇功能。你真的只需要幾個項目就可以開始了。
- Monk Makes 的植物監測儀
- 4x 母-公跳線
- 樹莓派 Pico W
儘管此植物監控器支持使用鱷魚夾,但此項目使用連接到植物監控設備背面的針式連接器。
設置園藝助手
該項目涉及將植物監視器連接到您的 Raspberry Pi Pico W,以及創建和操作代碼以使一切正常工作。需要網絡服務器來提供可在您的家庭互聯網連接中訪問的簡單網頁。
Raspberry Pi Pico 有不同的型號版本。對於此項目,您將需要使用 Raspberry Pi Pico W。要了解 Pico W 的功能,請查看我們關於 Pico W 是什麼以及它可以做什麼的指南。
首先,讓我們確保工廠監視器已連接並正常工作。在本文的後面,您將解決設置一個簡單的 Web 服務器的問題,該服務器用於通過連接到家庭網絡的任何支持瀏覽器的設備來監控您的工廠。
準備植物監視器
通過各種 Internet 站點可以購買許多傳感器,您會了解到一些土壤傳感器在土壤中很容易磨損,而其他傳感器則可以很好地承受這些因素。Monk Makes Plant Monitor 是一個不錯的選擇,因為它不易在土壤中腐蝕。該監測器不僅可以測量土壤濕度,還可以測量濕度和溫度。
只需將四個引腳從植物監視器連接到您的 Raspberry Pi Pico W:
- GND 去 GND
- 3V 連接到 3V3 輸出
- RX_IN 將找到通向 GP0 的路徑
- TX_OUT 會與 GP1 會合
接通電源後,您的 Raspberry Pi Pico W 將能夠為自身和植物監視器供電。您會注意到硬件上的一些指示燈表明設備處於正常工作狀態。此外,還有一個 LED 燈會發出綠色、黃色或紅色光(取決於土壤中檢測到的水分含量)。
儘管 Monk Makes Plant Monitor 帶有一些很棒的 python 模塊,但您仍然需要創建一些簡單的代碼來監控植物土壤的健康狀況。您可以從我們的 MUO GitHub 存儲庫中獲取以下 python 文件。
土壤傳感部分需要pmon.py和test.py ,稍後將使用 python 文件microdot.py、mm_wlan.py和pico_w_server.py來完成簡單的 Web 服務器。
如果您還沒有這樣做,現在是暫停一下並通過 MicroPython 和 Python 之間的細微差別重新振作起來的好時機。
python 文件pmon.py為工廠監視器創建一個 MicroPython 類。UART 將負責雙工數據傳輸,然後還需要一些將模擬轉換為數字的工作。您還會注意到此文件中也定義了wetness、temp和humidity函數。
def get_wetness(self):
return int(self.request_property("w"))
def get_temp(self):
return float(self.request_property("t"))
def get_humidity(self):
return float(self.request_property("h"))
def led_off(self):
self.uart.write("l")
def led_on(self):
self.uart.write("L")
接下來,您需要從我們的 MUO GitHub 存儲庫中獲取test.py文件。
您會注意到模塊time、pmon(來自PlantMonitor)和machine是正確監控工廠健康狀況所必需的。
由於導入了PlantMonitor模塊,監測土壤狀況所需的只是一個簡單的 while 循環。此外,print命令將在 Thonny 中運行test.py後輸出土壤水分、溫度和濕度讀數。
time.sleep(2) # PlantMonitor startup time
pm = PlantMonitor()
while True:
w = pm.get_wetness()
t = pm.get_temp()
h = pm.get_humidity()
print("Wetness: {0} Temp: {1} Humidity: {2}".format(w, t, h))
time.sleep(1)
當土壤太乾時不想給植物澆水?將您的泵繼電器分配給 Raspberry Pi Pico 上的一個引腳,並使用 if 語句觀察濕度值(滿分 100)以通過繼電器觸發您的水泵,以打開並再次分配水。
relay1 = Pin(15, Pin.OUT) #relay is wired up to GP15 and GND
if w = 24 # watch for a wetness value of 24/100
relay1.value(1) # turn on the relay
relay1(0) # turn off the relay
您將需要進行一些測試以找到完美的平衡,以確保您的植物對其接收的水量感到滿意。如果您的植物太冷,您還可以添加另一個 if 語句以通過繼電器打開加熱燈。
簡單的網絡服務器
您需要來自我們的 MUO GitHub 存儲庫的三個 python 文件,以便您的 Raspberry Pi Pico W 將土壤統計數據廣播到您的家庭互聯網連接:
- 微點.py
- mm_wlan.py
- pico_w_server.py
microdot文件處理後端功能以創建這個簡單的基於 HTTP 的 Web 服務器,並將 python 代碼輸出顯示為基於 html 的網頁,可以使用 Raspberry Pi Pico W 的 IP 地址調用該網頁。
mm_wlan.py文件提供了一種連接無線網絡的簡單方法。您將收到 Raspberry Pi Pico 的 IP 地址和連接消息。如果連接不成功,您將收到一條連接失敗消息。
pico_w_server.py文件是您輸入 SSID(請記住,Raspberry Pi Pico W 僅連接到 2.4GHz SSID)和您的 Wi-Fi 密碼的地方。在 HTML 部分,您可以自定義您的 Web 服務器將在 Web 瀏覽器上顯示的內容。如果您不希望網頁每秒左右刷新一次,您還可以從刷新部分刪除評論並調整間隔。
在此文件的最底部,您還可以自定義端口。如果您希望將此信息公開到您家以外的互聯網,這會很方便。
當您運行test.py文件時,會為您導入所需的服務器 python 文件(mm_wlan和pico_w_server )。運行test.py文件後,獲取 Pi 的 IP 地址(在 Thonny 輸出中找到)並從連接到相同 2.4GHz SSID 的任何網絡瀏覽器添加您使用的端口(默認為 80)在家。你應該看到這樣的東西:
為了減少您連接的 PC 的依賴性,將test.py文件更改為main.py並保存在您的 Raspberry Pi Pico W 上。您可能還希望考慮將 LCD 連接到您的 Pico,以便您對顯示器進行編程以輸出IP 地址(當您刪除連接的 PC 的依賴項時)。
帶回那個綠色的拇指
借助精密的土壤傳感器和簡單的網絡服務器,您現在可以在家中任何地方通過網絡瀏覽器監控植物的健康狀況。
隨意調整您認為合適的代碼。如果您願意,可以考慮創建一個土壤傳感應用程序,為您剛剛設置的簡單網絡服務器添加一些潤色。
為了使這個項目感覺完整,添加一個泵和繼電器,以及一個加熱燈,您將擁有一個完全自動化的花園。現在您將能夠永遠保持您的“綠拇指”狀態。
發佈留言