Zbuduj zautomatyzowany system ogrodniczy z Raspberry Pi Pico W

Zbuduj zautomatyzowany system ogrodniczy z Raspberry Pi Pico W

Z zielonym kciukiem i odrobiną cierpliwości, ogrodnictwo jest cudownym hobby, niezależnie od tego, czy masz kilka egzotycznych roślin w pomieszczeniu, czy pełnowymiarowy ogród zewnętrzny z ziemniakami i bylinami.

Powiedziawszy to, są też chwile, kiedy twoja cierpliwość może się skończyć, gdy rośliny zaczną umierać z czegoś, co wydaje się wcale nie mieć dobrego powodu.

Raspberry Pi Pico W może pomóc w zapewnieniu rozwiązania zapewniającego rozwój roślin bez kiwnięcia palcem (no, prawie).

Przyjrzyjmy się, jak monitor roślin, trochę kodu i mały mikrokontroler będą śledzić stan zdrowia rośliny z dowolnego miejsca w domu.

Wymagany sprzęt

Co zaskakujące, nie wymaga zbyt wiele sprzętu. Monitor roślin zawiera wiele magii. Naprawdę potrzebujesz tylko kilku elementów, aby zacząć.

Chociaż ten monitor roślin obsługuje zaciski krokodylkowe, ten projekt wykorzystuje złącza pinowe przymocowane z tyłu urządzenia do monitorowania roślin.

Konfigurowanie asystenta ogrodniczego

Ten projekt obejmuje podłączenie monitora instalacji do Raspberry Pi Pico W, a także tworzenie i manipulowanie kodem, aby wszystko działało. Serwer WWW będzie wymagany do obsługi prostej strony internetowej dostępnej w ramach domowego połączenia internetowego.

Istnieją różne wersje modeli Raspberry Pi Pico. Do tego projektu będziesz potrzebować Raspberry Pi Pico W. Aby dowiedzieć się, do czego zdolny jest Pico W, zapoznaj się z naszym przewodnikiem na temat tego, czym jest Pico W i co potrafi.

Najpierw upewnijmy się, że monitor instalacji jest podłączony i działa prawidłowo. W dalszej części artykułu zajmiesz się konfiguracją prostego serwera WWW służącego do monitorowania zakładu za pomocą dowolnego urządzenia z przeglądarką, podłączonego do sieci domowej.

Przygotowanie Monitora Roślin

Dzięki wielu czujnikom, które można kupić na różnych stronach internetowych, przekonasz się, że niektóre czujniki gleby łatwo ulegają zużyciu w glebie, a inne dość dobrze wytrzymują warunki pogodowe. Monk Makes Plant Monitor jest dobrą opcją, ponieważ nie jest podatny na korozję w glebie. Ten monitor nie tylko mierzy wilgotność gleby, ale także mierzy wilgotność i temperaturę.

monitor roślin w glebie, który jest podłączony do mikrokontrolera

Tylko cztery piny będą musiały być podłączone z monitora instalacji do twojego Raspberry Pi Pico W:

  • GND idzie do GND
  • 3V łączy się z wyjściem 3V3
  • RX_IN znajdzie drogę do GP0
  • TX_OUT spotka się z GP1

Po podłączeniu do zasilania Raspberry Pi Pico W będzie w stanie zapewnić zasilanie sobie i monitorowi instalacji. Zauważysz kilka kontrolek na sprzęcie, które potwierdzają, że urządzenie działa. Jest też dioda LED, która świeci na zielono, żółto lub czerwono (w zależności od poziomu wilgoci wykrytej w glebie).

Chociaż Monk Makes Plant Monitor zawiera kilka świetnych modułów Pythona, nadal będziesz musiał stworzyć prosty kod, aby monitorować stan gleby twojej rośliny. Możesz pobrać następujące pliki Pythona z naszego repozytorium MUO GitHub.

Będziesz potrzebował pmon.py i test.py dla części wykrywającej glebę, a pliki Pythona microdot.py , mm_wlan.py i pico_w_server.py zostaną później użyte do ukończenia prostego serwera WWW.

Teraz jest świetny moment, aby zatrzymać się i odświeżyć, dostrzegając subtelne różnice między MicroPythonem a Pythonem, jeśli jeszcze tego nie zrobiłeś.

Plik Pythona pmon.py tworzy klasę MicroPython dla monitora instalacji. Transmisją danych w trybie dupleks zajmie się UART, a potem trzeba też trochę popracować nad konwersją sygnału analogowego na cyfrowy. Zauważysz również , że w tym pliku zdefiniowano funkcje wetness , temp iwilgotność .

   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")

Następnie będziesz potrzebować pliku test.py uzyskanego z naszego repozytorium MUO GitHub.

Zauważysz, że moduły time, pmon (z PlantMonitor ) i machine są wymagane do prawidłowego monitorowania stanu rośliny.

Po zaimportowaniu modułu PlantMonitor wszystko, czego potrzeba do monitorowania warunków glebowych, to prosta pętla while. Ponadto polecenie print wyświetli odczyty wilgotności, temperatury i wilgotności gleby po uruchomieniu test.py w Thonny.

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)

Nie masz ochoty podlewać rośliny, gdy gleba jest zbyt sucha? Przypisz przekaźnik pompy do pinu na Raspberry Pi Pico i użyj instrukcji if, aby obserwować wartość wilgotności (na 100), aby uruchomić pompę wodną za pośrednictwem przekaźnika, aby włączyć się i ponownie dozować wodę.

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

Będziesz chciał przeprowadzić kilka testów, aby znaleźć idealną równowagę, aby upewnić się, że twoja roślina jest zadowolona z ilości wody, którą otrzymuje. Możesz także dodać inną instrukcję if, aby włączyć lampę grzewczą za pośrednictwem przekaźnika, jeśli twoja roślina jest zbyt zimna.

Prosty serwer WWW

Będziesz potrzebował trzech plików Pythona z naszego repozytorium MUO GitHub, aby Twój Raspberry Pi Pico W mógł transmitować statystyki gleby do domowych połączeń internetowych:

  • microdot.py
  • mm_wlan.py
  • pico_w_server.py

Plik microdot obsługuje funkcje zaplecza w celu utworzenia tego prostego serwera WWW opartego na protokole HTTP i wyświetla kod wyjściowy Pythona jako stronę internetową opartą na HTML, którą można wywołać przy użyciu adresu IP Raspberry Pi Pico W.

Plik mm_wlan.py oferuje prosty sposób na połączenie z siecią bezprzewodową. Otrzymasz adres IP swojego Raspberry Pi Pico i połączoną wiadomość. Jeśli połączenie nie powiodło się, zamiast tego otrzymasz komunikat o niepowodzeniu połączenia.

W pliku pico_w_server.py wpisujesz identyfikator SSID (pamiętaj, że Raspberry Pi Pico W łączy się tylko z identyfikatorami SSID 2,4 GHz) i hasło Wi-Fi. W sekcji HTML możesz dostosować to, co serwer WWW będzie wyświetlał w przeglądarce internetowej. Możesz także usunąć komentarze z sekcji odświeżania i dostosować interwał, jeśli nie chcesz, aby strona była odświeżana co sekundę.

Na samym dole tego pliku możesz także dostosować port. Jest to przydatne, jeśli chcesz udostępnić te informacje w Internecie poza domem.

Po uruchomieniu pliku test.py wymagane pliki Pythona serwera ( mm_wlan i pico_w_server ) są importowane. Po uruchomieniu pliku test.py pobierz adres IP, jeśli Twoje Pi (znajduje się w danych wyjściowych Thonny’ego) i dodaj używany port (domyślnie 80) z dowolnej przeglądarki internetowej podłączonej do tego samego identyfikatora SSID 2,4 GHz w domu. Powinieneś zobaczyć coś takiego:

prosta strona html wyświetlająca statystyki gleby

Aby zmniejszyć zależność podłączonego komputera, zmień plik test.py na main.py i zapisz na swoim Raspberry Pi Pico W. Możesz również rozważyć podłączenie wyświetlacza LCD do Pico, aby zaprogramować wyświetlacz do wyjścia adres IP (po usunięciu zależności podłączonego komputera).

Przywróć ten zielony kciuk

Dzięki wyrafinowanemu czujnikowi gleby i prostemu serwerowi sieciowemu możesz teraz monitorować stan swoich roślin za pomocą przeglądarki internetowej w dowolnym miejscu w domu.

Nie krępuj się modyfikować kodu według własnego uznania. Jeśli masz na to ochotę, rozważ stworzenie aplikacji wykrywającej glebę, która doda trochę dopracowania prostemu serwerowi sieciowemu, który właśnie skonfigurowałeś.

Aby projekt był kompletny, dodaj pompę i przekaźnik oraz lampę grzewczą, a otrzymasz w pełni zautomatyzowany ogród. Teraz będziesz mógł na zawsze zachować swój status „zielonego kciuka”.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *