Internet Rzeczy w pomiarach środowiskowych (6). Zestaw do kontrolowania wilgotności gleby Enviro Grow firmy Pimoroni

Internet Rzeczy w pomiarach środowiskowych (6). Zestaw do kontrolowania wilgotności gleby Enviro Grow firmy Pimoroni

Pielęgnacja kwiatów doniczkowych to wdzięczne zajęcie poprawiające atmosferę domu, ale też świetna okazja do poznania układów IoT zawierających nie tylko czujniki, lecz także elementy wykonawcze. Doskonałym do tego celu produktem, umożliwiającym natychmiastowe uruchomienie działającego urządzenia, okazuje się zestaw do kontrolowania wilgotności gleby uprawianych roślin Enviro Grow (PIM637) firmy Pimoroni. Zestaw przeznaczony jest do projektów automatycznego ogródka.

Wiarygodny pomiar wilgotności gleby stanowi niełatwe zadanie. Wilgotność gleby to bowiem coś więcej niż tylko określenie ilości wody w glebie. Aby wyciągnąć sensowne wnioski na temat zawartości H2O w podłożu, musisz wiedzieć coś o jego rodzaju. Gleba sama w sobie składa się z wody, powietrza, minerałów, materii organicznej, a czasami również lodu. Objętościowa zawartość wody (VWC) jest stosunkiem objętości wody do całkowitej objętości gleby. Pod względem tego parametru, gleba wysuszona w piecu z definicji zawiera 0% VWC. To jeden zdefiniowany punkt końcowy. Czysta woda znajduje się na drugim końcu skali, w 100%. Wiele osób uważa, że 100% VWC to podłoże w pełni nasycone, ale tak nie jest. Każdy rodzaj gleby będzie nasycony przy różnej zawartości wody.

Gleby na polu rzadko osiągają nasycenie. Gdy grunt absorbuje wodę, tworzy film wodny, który przylega do cząstek gleby. Istnieją również przestrzenie porów wypełnione powietrzem. To uwięzione powietrze sprawia, że procent nasycenia rzadko będzie równy teoretycznemu maksimum dla danego typu gleby.

Czujniki pojemnościowe wilgotności gleby

Czujniki pojemnościowe korzystają z wysokich częstotliwości (zwykle od 50 do 100 MHz), aby zminimalizować wpływ zasolenia gleby na wyniki odczytu. Taka częstotliwość sond pojemnościowych „widzi” całą wodę w glebie, a jednocześnie okazuje się wystarczająco wysoka, aby uniknąć większości błędów pomiaru wynikających z zasolenia podłoża. Czujniki pojemnościowe mierzą przenikalność dielektryczną w celu uzyskania danych na temat objętościowej zawartości wody.

Rozsądne pomiary wilgotności można przeprowadzić przy użyciu dowolnej techniki, a błędy w pomiarach często wynikają raczej ze złych metod instalacji niż z ograniczeń samych metod.

Czujniki pojemnościowe mogą wykonywać pomiar ciągły. Niektóre ich rodzaje są łatwe w instalacji. Ponadto nie kosztują wiele i mogą uzyskać dobrą dokładność dzięki kalibracji pod kątem specyficznej odmiany gleby (2...3%). Zużywają również niewiele energii, do ich zasilania wystarczą małe baterie z niewielką liczbą paneli słonecznych. Przy wysokim zasoleniu (powyżej 8 dS/m ekstraktu nasycenia) czujnik staje się niedokładny. Niektóre dostępne na rynku wyroby o niskiej jakości charakteryzują się słabą dokładnością i wydajnością.

Obwody czujników pojemnościowych można zaprojektować tak, aby wykrywały bardzo małe zmiany w objętościowej zawartości wody – do tego stopnia, że NASA zastosowała technologię pojemnościową do pomiaru zawartości wody na Marsie.

Czujnik wilgotności gleby SoilWatch 10

SoilWatch 10 firmy Pino-Tech to pojemnościowy czujnik wilgotności gleby, który umożliwia pomiar względnej zawartości wody w podłożu (fotografia 1) [14].

Fotografia 1. Czujnik wilgotności gleby SoilWatch 10 [14]

Jest on wodoodporny i odporny na warunki atmosferyczne – osłonięte elektrody oraz hermetyczna obudowa zabezpieczają układ przed korozją.

Specyfikacja czujnika SoilWatch 10 [14]:

  • zasilanie: 3,1...5,0 V (maksymalnie 5,5 V),
  • prąd: ~15 mA,
  • sygnał wyjściowy: 0...3 V,
  • dryft temperaturowy: mniejszy niż 5 mV (typ.),
  • temperatura pracy: od –20°C do 80°C (odczyty poniżej 0°C są bez znaczenia),
  • wymiary: 170×25×25 mm.

SoilWatch 10 pracuje z częstotliwością 75 MHz i generuje sygnał analogowy w zakresie 0...3 V, przy czym zakres wyjściowy jest przybliżony i różni się nieznacznie w przypadku różnych modeli. Ponadto – w zależności od użytej wersji – czujnik zapewnia napięcie wyjściowe bliskie 0 V w powietrzu i około 3 V w wodzie. SoilWatch 10 ma własny regulator napięcia, więc zmiany napięcia zasilania nie wpływają na jego sygnał wyjściowy.

Gdy czujnik jest stosowany w aplikacjach zasilanych bateryjnie, zaleca się użycie odpowiedniego klucza (tranzystor lub przekaźnik), aby włączyć sensor jedynie na krótko. Typowy czas, po którym moduł jest gotowy do pracy, wynosi mniej niż 100 ms.

Dane kalibracyjne czujnika SoilWatch 10 dla gliny piaszczystej są pokazane na rysunku 1 [14]. Taka gleba może mieć VWC równe 32% w warunkach polowych (co wskazuje na jej dobre nawodnienie).

Rysunek 1. Dane kalibracyjne czujnika SoilWatch 10 dla gliny piaszczystej [14]

Zestaw Enviro Grow (PIM637)

Zestaw Enviro Grow (PIM637) firmy Pimoroni zawiera trzy pojemnościowe czujniki wilgoci gleby, trzy pompki wody, pojemnik na baterie AA oraz płytkę Enviro Grow (PIM627) z czujnikiem ciśnienia, oświetlenia oraz wilgotności i temperatury powietrza (fotografia 2) [1].

Fotografia 2. Zestaw Enviro Grow (PIM637) [1]

Każdy element zestawu można zakupić oddzielnie. Dodatkowo możliwe jest dokupienie dłuższych (1 m) kabli (CAB1006) do podłączenia czujników wilgotności gleby oraz przedłużacza kabla zasilania pompki (CAB2101).

Na rynku dostępny jest ponadto zestaw Grow (PIM510) firmy Pimoroni, zawierający te same trzy pojemnościowe czujniki wilgoci gleby z kablami 35 cm oraz płytkę Grow HAT Mini (PIM533) stanowiącą nakładkę na Raspberry Pi [7].

Zestaw Enviro Grow (PIM637) zawiera [1]:

  • płytkę Enviro Grow (PIM627) [2],
  • 3× czujnik wilgotności gleby (PIM520) [3],
  • 3× kabel czujnika wilgotności (35 cm) (CAB1007) [5],
  • 3× minipompę wody (z kablem) (COM3700) [4],
  • rurkę silikonową 1 m (COM3800) [6],
  • 3× baterię AA,
  • pojemnik na trzy baterie AA,
  • kabel USB micro-B,
  • rzep do mocowania pojemnika baterii.

Czujnik wilgotności gleby (PIM520)

Pojemnościowy czujnik wilgotności gleby (PIM520) firmy Pimoroni jest wyposażony w cyfrowe wyjście z modulacją częstotliwości (fotografia 2, w środku u góry) [3]. Sygnał wyjściowy mieści się w zakresie ok. 2...30 Hz. Ponieważ sensor pojemnościowy nie ma odsłoniętych elektrod, okazuje się znacznie mniej podatny na korozję w miarę upływu czasu niż tradycyjne czujniki rezystancyjne. Opisywany model zaopatrzony został w złącze JST SH 3P. Po obu stronach powierzchni czujnika zaznaczono linię UNDER oraz GROUND, pokazującą głębokość, na jaką czujnik powinien zostać wsunięty w glebę. Model PIM520 ma wymiary 99×10×5 mm.

Firma nie podaje więcej informacji na temat tego produktu oraz nie udostępnia schematu. Czujnik ma postać jednowarstwowej płytki drukowanej z elementami elektronicznymi przylutowanymi (SMD) na górnej części płytki (fotografia 2). Obie strony płytki są pokryte lakierem zabezpieczającym, a duże pola miedziane usytuowane obustronnie tworzą kondensator pomiarowy. Elementy elektroniczne nie są niczym zabezpieczone. W projekcie zastosowane zostały dwa układy scalone oraz kilka rezystorów i kondensatorów. TLC555C to uniwersalny timer skonfigurowany jako oscylator i jest zgodny z układem opisanym w artykule [8]. Pojemność pomiarowa z rezystorami dołączonymi do TLC555C określa generowaną częstotliwość wyjściową generatora. W przypadku czujnika umieszczonego w powietrzu jest to ok. 112 kHz. Ten przebieg jest podawany na układ 14-stopniowego dzielnika binarnego 74HC4060 – gdy czujnik umieszczony jest w powietrzu, podzielony sygnał cyfrowy ma częstotliwość ok. 27,446 Hz.

Minipompa wody (COM3700)

Minipompa wody (COM3700) firmy Pimoroni to mała, zanurzana pompa odśrodkowa o klasie wodoodporności IP68 i wymiarach ok. 43×38,5×25,5 mm (fotografia 3, w środku) [4]. Pompka działa z mocą 0,91 W przy napięciu 4,5 V (pobór prądu to 0,18 A). Zaopatrzona została w przewód zasilania ze złączem kompatybilnym z Molex Picoblade (raster 1,25 mm). Można ją łatwo podłączyć do gniazdek płytki Enviro Grow lub Grow HAT Mini. Dodatkowo możliwe jest dokupienie kabla przedłużacza zasilania (1 m) pompki wody (CAB2101). Maksymalna wysokość podnoszenia wody wynosi 0,55 m, a najwyższy osiągalny przepływ: 100 l/h. Do pompy podłącza się silikonową rurkę o wewnętrznej średnicy 5 mm (w zestawie).

Minipompa wody przeznaczona jest do domowych systemów automatycznego nawadniania roślin. Należy unikać wciągania gleby do pompki, ponieważ może to spowodować zablokowanie rotora. Aby uzyskać maksymalną trwałość silnika, należy również unikać pracy pompy na sucho przez dłuższy czas.

Płytka Enviro Grow (PIM627)

Widok płytki Enviro Grow (PIM627) pokazano na fotografii 3. Na dolnej stronie płytki znalazła się bezpośrednio (SMD) wlutowana płytka Raspberry Pi Pico W, udostępniająca gniazdko microUSB oraz przycisk BOOTSEL. Na dole płytki Enviro Weather zamontowane jest też gniazdko zasilania bateryjnego BATT (JST-PH), przycisk RESET (SW_RESET), dołączony do wejścia RUN procesora RP2040, dwie diody LED (widoczne także od góry) oraz trzy gniazdka (A, B, C) do podłączenia minipompek wody (PUMP). Natomiast na górnej stronie płytki zamontowane zostały: czujnik światła LTR-559 (LIGHT), sensor ciśnienia, temperatury i wilgotności (BME280), brzęczyk (BUZZER), gniazdko komunikacji I²C standardu Qwiic (QW/ST) oraz trzy gniazdka (A, B, C) do podłączenia czujników wilgotności gleby (SOIL).

Fotografia 3. Płytka Enviro Grow, a) widok od dołu, b) widok z góry [2]

Dodatkowo udostępnione są:

  • Przycisk użytkownika POKE (STATUS, dołączony do wejścia GPIO7 procesora RP2040) – wybudza płytkę ze stanu uśpienia i pozwala na natychmiastowy odczyt.
  • Dioda ACTIVITY (LED_ACT, biała, zamontowana pod spodem) – świeci, gdy płytka pracuje.
  • Dioda WARNING (LED_ALARM, czerwona, zamontowana pod spodem) – miga, jeśli wystąpił błąd, np. brak połączenia.

Dioda LED_ACT jest – poprzez rezystor 1 kΩ – sterowana z wyjścia GPIO6 procesora RP2040, zaś dioda LED_ALARM (także przez rezystor 1 kΩ) jest podłączona do wyjścia CLKOUT układu PCF85063 (RTC).

Właściwości płytki Enviro Grow [2]:

  • Raspberry Pi Pico W:
    • dwurdzeniowy Arm Cortex M0+ działający z częstotliwością do 133 MHz i wyposażony 264 kB pamięci SRAM,
    • 2 MB pamięci flash QSPI obsługującej XiP,
    • moduł zasilany i programowalny przez USB micro-B,
    • bezprzewodowa komunikacja 2,4 GHz.
  • Czujnik BME280:
    • pomiar ciśnienia: od 300 do 1100 hPa,
    • pomiar temperatury: od –40 do 85°C,
    • pomiar wilgotności powietrza: 0...100% RH,
    • interfejsy I²C oraz SPI.
  • Czujnik LTR-559:
    • pomiar natężenia oświetlenia od 0,01 do 64000 lx,
    • czujnik zbliżeniowy do 5 cm,
    • filtr UV/IR,
    • interfejs I²C.
  • Brzęczyk piezoelektryczny
  • Funkcja uśpienia/budzenia za pomocą RTC
  • Przycisk użytkownika
  • Przycisk resetowania RESET
  • Przycisk BOOTSEL (na płytce Raspberry Pi W)
  • Złącze akumulatora JST-PH
  • Dioda LED użytkownika
  • Dioda LED ostrzegawcza
  • Złącze Qwiic/Stemma QT do podłączenia układów zewnętrznych z protokołem I²C
  • 3× złącze JST SH 3P do podłączenia czujnika wilgotności gleby
  • 3× złącze Picoblade 2P do podłączenia mini pompy wody

Brzęczyk jest – poprzez tranzystor MOSFET – sterowany z wyjścia GPIO28 procesora RP2040. Sygnały z gniazdek do podłączenia czujników wilgotności gleby dołączane są do wejść GPIO13...15. Sygnały sterowania pompkami są podawane z wyjść GPIO10...12 (rezystory 2,2 kΩ do masy) na tranzystory MOSFET zabezpieczone diodami BAT54C.

Układ scalony BME280 firmy Bosch wykonuje pomiary ciśnienia (300...1100 hPa, 18/20 bitów), temperatury (–40°C...+85 °C, 18/20 bitów) oraz wilgotności względnej (0...100%, 16 bitów) w technologii pojemnościowej [11]. Na płytce Enviro Grow układ BME280 został skonfigurowany do pracy ze standardem komunikacji I²C i zasilaniem 3,3 V.

Układ scalony LTR-559 firmy LiteOn to czujnik światła otoczenia (ALS) oraz czujnik zbliżeniowy (PS) [12]. Na płytce Enviro Grow układ ten pracuje z zasilaniem 3,3 V. Wyjście INT dołączone zostało do wejścia GPIO3 procesora RP2040.

Układ scalony PCF85063ATL firmy NXP jest zegarem czasu rzeczywistego (RTC) i kalendarzem zoptymalizowanym pod kątem niskiego zużycia energii [13]. Na płytce Enviro Grow układ PCF8563ATL jest zasilany z napięcia V+_A0 (3,3 V). Układ PCF85063A skonfigurowany został do generowania sygnału RTC_ALARM. Do wyjścia /INT jest dołączony tranzystor MOSFET generujący sygnał RTC_ALARM. Wyjście CLKOUT układu dołączone zostało do diody LED (LED_ALARM).

Układy scalone BME280, LTR-559 oraz PCF85063ATL omówiliśmy dokładnie w poprzednim artykule z serii „Internet Rzeczy w pomiarach środowiskowych (4): Stacja pogodowa Enviro Weather” [16].

Płytkę Enviro Weather można zasilać w danym momencie z jednego źródła: poprzez gniazdko micro USB albo z zewnętrznego napięcia – poprzez złącze akumulatora JST-PH. Układ zasilania płytki Enviro Grow jest taki sam, jak płytki Enviro Weather i został dokładnie opisany w poprzednim artykule z serii „Internet Rzeczy w pomiarach środowiskowych (5): Optymalizacja poboru mocy urządzenia IoT z płytką Raspberry Pi Pico W” [21].

Płytka Raspberry Pi Pico W

Raspberry Pi Pico W firmy Raspberry Pi to płytka z mikrokontrolerem RP2040 wyposażonym w dwa rdzenie ARM Cortex-M0+ pracujące z częstotliwością 133 MHz, 264 kB RAM [15]. Na płytce znajduje się również 2 MB pamięci QSPI flash. Mikrokontroler RP20240 udostępnia rozbudowane interfejsy komunikacyjne: 2×SPI, 2×I²C, 2×UART, 3×12-bit ADC, 16 kanałów PWM oraz obsługę trybu niskiego zużycia energii (uśpienia) i trybu bezczynności. Układ może być programowany w języku C/C++ lub microPython.

Płytka ma zamontowane gniazdko micro USB służące do zasilania i przesyłania danych (USB 1.1 w trybach Host i Device). Wyposażona została ponadto w układ scalony CYW43439 firmy Infineon, rozszerzający jej funkcjonalności o łączność bezprzewodową w standardzie Wi-Fi 4 (IEEE 802.11b/g/n) oraz Bluetooth 5.2 (BDR, EDR oraz BLE) z pojedynczą anteną współdzieloną.

Po obu stronach płytki znajdują się pady umożliwiające wlutowanie złączy goldpin (2×20) lub bezpośrednie przylutowanie do płytki bazowej (SMD). Udostępniają one zasilanie oraz 26 wyprowadzeń GPIO.

Pierwsze uruchomienie płytki Enviro Grow

Dokładna instrukcja montażu zestawu krok po kroku (ze zdjęciami) pt. „Plant Monitoring with Enviro Grow” [9] stanowi doskonały przewodnik łączenia wszystkich elementów zestawu. Dodatkowe przydatne informacje zamieszczone zostały w „Auto-Watering with Grow” [10]. Gdy wszystko zostanie połączone, można rozpocząć pracę (początkowo lepiej uczynić to bez wody).

Podłącz baterię lub kabel USB do płytki Enviro i naciśnij przycisk POKE z przodu płytki, aby ją wybudzić. Dioda ACTIVITY zaświeci się, a po około sekundzie zacznie pulsować, wskazując, że urządzenie działa.

Jeśli płytka nie została jeszcze skonfigurowana, automatycznie włączy się odpowiedni tryb – dioda ACTIVITY zacznie szybko migać.

Płytka Enviro jest dostarczana z preinstalowanym oprogramowaniem, dzięki któremu można błyskawicznie rozpocząć rejestrowanie danych. Zaletę Enviro stanowi fakt, że całe oprogramowanie jest przechowywane na urządzeniu w postaci skryptów MicroPython, więc łatwo je otworzyć i sprawdzić każdy szczegół ich działania, a także zmienić pewne elementy.

Oprogramowanie obsługuje wiele miejsc docelowych do wysyłania danych:

  • Adafruit IO: platforma zaprojektowana przez Adafruit do przechowywania i wyświetlania danych.
  • MQTT: najpopularniejszy protokół przesyłania wiadomości w Internecie Rzeczy (IoT).
  • InfluxDB: platforma, na której programiści tworzą aplikacje IoT, analitykę oraz chmurę.
  • Adres HTTP: żądanie jest wysyłane do podanego adresu URL wraz ze wszystkimi danymi.

Dołączanie aplikacji Thonny do płytki Enviro Grow

Thonny to środowisko IDE o otwartym kodzie źródłowym, które służy do pisania i przesyłania programów MicroPython do różnych płytek programistycznych, takich jak Raspberry Pi Pico, ESP32 i ESP8266.

1. Na komputerze zainstaluj najnowszą wersję programu Thonny [17].

2. Dołącz skonfigurowaną płytkę Enviro Grow kablem USB do komputera.

3. Sprawdź w Menadżerze urządzeń, który port COMxx został przypisany do dołączonej płytki.

4. Z menu w prawym dolnym rogu wybierz MicroPython (RP2040) Board CD @COMxx.

5. Z okna RP2040 device otwórz plik main.py.

6. Kliknij na przycisk Stop/Restart backend .

7. Kliknij na przycisk Run current script .

Płytka z oprogramowaniem fabrycznym startuje w trybie konfiguracji, a biała dioda ACTIVITY szybko miga.

Płytka Enviro Grow w trybie konfiguracji wystawia punkt dostępowy Wi-Fi o nazwie „Enviro Grow Setup”. W oknie Shell dołączonego do płytki programu Thonny zostanie wyświetlony log wykonywanych operacji.

Aktualizacja oprogramowania firmowego z transferem pliku obrazu

Użytkowanie płytki Enviro Weather najlepiej rozpocząć od zaktualizowania oprogramowania wbudowanego. Aktualizacja jest opisana na stronie Upgrading Firmware [18].

8. Pobierz ze strony Enviro MicroPython firmware [19] najnowszą wersję firmowego pliku obrazu (uf2), zawierającą jednocześnie Enviro i MicroPythona. Obecnie jest to plik pimoroni-enviro-v1.20.4-micropython-enviro-v0.0.10.uf2.

9. Trzymaj wciśnięty przycisk BOOTSEL płytki Raspberry Pi Pico W (pod spodem płytki Enviro) i podłącz ją kablem USB do komputera.

Spowoduje to przejście oprogramowania płytki Pico W do trybu DFU i zostanie otwarte na komputerze okno RPI-RP2 pokazujące zawartość dysku udostępnianego przez Pico W.

10. Przeciągnij pobrany plik uf2 do okna RPI-RP2.

Pico W uruchomi się ponownie z najnowszą wersją MicroPythona. Nie będzie już udostępniał dysku oraz przejdzie bezpośrednio do trybu konfiguracji.

Uwaga! Nastąpi skasowanie poprzedniej zawartości pamięci Flash płytki, w tym pliku config.py oraz katalogów readings i uploads. Jeśli są one potrzebne, należy wcześniej wykonać ich kopie.

Aktualizacja oprogramowania firmowego z transferem plików projektu

Pełna wersja obrazu nie zawiera typowo najnowszej wersji MikroPythona. Jednak można osobno załadować jego najnowszą wersję, a potem dodać pliki aktualnej aplikacji Enviro.

11. Pobierz ze strony Pimoroni Pico Libraries and Examples [20] najnowszą wersję firmowego pliku obrazu (uf2) zawierającego MicroPythona. Obecnie jest to plik pimoroni-enviro-v1.21.0-micropython.uf2.

12. Trzymaj wciśnięty przycisk BOOTSEL płytki Pico W (pod spodem płytki Enviro) i podłącz ją kablem USB do komputera.

13. Odczekaj na koniec konfigurowania sterowników Windows.

14. Przeciągnij pobrany plik uf2 do okna RPI-RP2.

15. Jeśli jest to potrzebne, ponownie odczekaj do końca konfigurowania sterowników Windows.

Teraz kolej na aplikację Enviro.

16. Pobierz ze strony Enviro MicroPython firmware [19] folder projektu aplikacji Enviro (zip). Obecnie jest to plik enviro-v0.0.10.zip.

17. Rozpakuj plik zip.

18. Odłącz i dołącz płytkę Enviro Weather kablem USB do komputera.

19. Uruchom program Thonny.

20. Z menu w prawym dolnym rogu wybierz MicroPython (RP2040) Board CD @COMxx.

21. W oknie Files → This computer otwórz folder z rozpakowanym projektem aplikacji Enviro.

22. W oknie This computer zaznacz linie: enviro, phew oraz main.py.

23. Kliknij prawym klawiszem myszki i wybierz Upload to. Odczekaj do zakończenia przesyłania plików.

24. Kliknij w menu przycisk Stop/Restart backend.

25. Otwórz plik main.py na Raspberry Pi Pico.

26. Kliknij w menu przycisk Run current script.

27. W oknie Shell zobacz log startowy.

Konfigurowanie konta chmury Adafruit IO

Adafruit IO to bardzo prosty sposób na rozpoczęcie przechowywania danych w chmurze, dzięki czemu można zacząć działać w ciągu kilku minut. Skonfigurowanie prostego panelu do przeglądania danych z czujników jest łatwe. Adafruit oferuje całkowicie darmowy poziom, który pozwala na pracę z maksymalnie 10 kanałami.

28. Otwórz stronę https://io.adafruit.com/

29. Utwórz konto Adafruit, klikając opcję Get Started for Free.

30. Wypełnij dane.

Nazwa użytkownika będzie później potrzebna.

31. Gdy jesteś zalogowany, kliknij na IO w menu strony adafruit.io.

32. Kliknij żółty przycisk (klucza) w prawym górnym rogu strony.

Klucz jest długą liczbą, dlatego najlepiej go skopiować, aby nie trzeba było go później zapisywać/wpisywać.

33. W menu strony kliknij na Feeds.

Utwórz nową grupę o nazwie Grow.

34. Kliknij New Group.

35. Wpisz nazwę grupy, np. enviro. Kliknij Create.

Nie musisz ręcznie tworzyć kanałów dla Enviro – stanie się to automatycznie.

Bezpłatna obsługa Adafruit IO umożliwia przechowywanie danych przez 30 dni oraz publikowanie do 30 punktów danych na minutę. Taka wartość wydaje się spora, ale pamiętaj, że Enviro zwraca jednocześnie do 10 różnych odczytów z czujników. Płytka może – przy braku dostępu do chmury – przechowywać odczyty przez kilka godzin, a po podłączeniu zostaną one wysłane jednocześnie.

Dołączanie Enviro do chmury Adafruit IO

Aby skonfigurować płytkę Enviro Grow i rozpocząć rejestrowanie/publikowanie danych, trzeba przejść proces udostępniania. Można to uczynić za pomocą telefonu lub innego urządzenia obsługującego Wi-Fi, takiego jak tablet lub laptop.

36. Upewnij się, że płytka Enviro Grow ma podłączoną baterię lub zasilanie USB.

Płytka powinna przejść do trybu konfiguracji, a biała dioda ACTIVITY powinna szybko migać. Jeśli tak się nie dzieje, spróbuj nacisnąć RESET z tyłu płytki.

Płytka Enviro Grow pracująca w trybie konfiguracji wystawia punkt dostępowy Wi-Fi i sieć o nazwie „Enviro Grow Setup”.

37. W telefonie (lub innym urządzeniu bezprzewodowym) przejdź do ustawień Internetu/sieci bezprzewodowej.

38. Znajdź sieć bezprzewodową o nazwie „Enviro Grow Setup” i połącz się z nią.

Po połączeniu pokazywana jest strona pico.wireless.

39. W pierwszym oknie kliknij Ready? Let’s go!

40. Wpisz nazwę płytki Enviro Grow, np. grow1.

41. Wybierz sieć Wi-Fi z obsługą Internetu, wpisz hasło, kliknij Logging.

42. Wybierz Every five minutes oraz Every reading, kliknij Uploads.

43. Wybierz, gdzie przesyłać dane: Adafruit IO.

44. Wpisz nickname Twojego konta Adafruit IO oraz wpisz (skopiuj) klucz.

Konfigurowanie progu alarmu w kanałach. Jeśli w kanale poziom wilgotności gleby spadnie poniżej ustawionej wartości progowej (np. 50%), zostanie wygenerowany wielokrotny sygnał dźwiękowy, przy czym liczba sygnałów wskazuje kanał: A – jeden, B – dwa i C – trzy.

Można włączyć automatyczne nawadnianie. Zestaw Enviro Grow automatycznie włączy pompkę i będzie podlewać roślinę w doniczce do momentu, gdy poziom wilgotności gleby (w odpowiednim kanale) osiągnie ustawiony poziom progowy.

Biała dioda ACTIVITY cały czas szybko miga.

W następnym oknie kliknij Reset the board.

Dioda ACTIVITY dopiero teraz gaśnie. Log operacji wykonywanych podczas pierwszego uruchomienia płytki po skonfigurowaniu pokazany został na rysunku 2. Procesor ulegnie wybudzeniu przez zegar RTC za 5 minut. Wtedy dioda ACTIVITY zaświeci się przez sekundę i będzie pulsować cztery razy – w ten sposób sygnalizuje wykonywanie pomiarów i wysyłanie danych do sieci.

Rysunek 2. Log operacji płytki Enviro Grow po skonfigurowaniu

Jeśli płytka jest podłączona do zasilania z gniazdka USB, procesor nie przechodzi do stanu uśpienia. Płytka zachowuje połączenie poprzez USB z komputerem i dalej wystawiany jest wirtualny port COM.

Jeżeli natomiast płytka jest zasilana z gniazdka BATT, to procesor wchodzi w stan uśpienia (a właściwie jest wyłączany).

Ponowne konfigurowanie płytki Enviro Grow

Można ponownie uruchomić tryb konfigurowania płytki Enviro Grow.

45. Wciśnij i trzymają przycisk POKE.

46. Przyciśnij i zwolnij przycisk RESET (na odwrotnej stronie płytki).

47. Trzymaj przycisk POKE jeszcze przez więcej niż trzy sekundy.

Dioda ACTIVITY zaświeci się, a po około sekundzie zacznie pulsować, wskazując, że urządzenie działa w trybie konfiguracji.

Konfigurowanie płytki Enviro Grow poprzez plik konfiguracyjny

Można również zastosować prostszy sposób zmiany konfiguracji.

48. Dołącz aplikację Thonny do płytki Raspberry Pi Pico (opis powyżej).

49. Z okna RP2040 device otwórz plik config.py.

W tym pliku są zapisane wszystkie informacje konfiguracyjne: nickname, wifi_ssid, wifi_password, adafruit_io_username, adafruit_io_key, destination, reading_frequency i upload_frequency, oraz kilka innych.

Wystarczy teraz zmodyfikować odpowiednie pola, a potem zapisać.

W celu ustawienia wartości progu wilgotności gleby w kanale, należy zmienić wartości procentowe. Jeśli nie są używane wszystkie czujniki (lub trzeba wyłączyć dźwięk alarmów płytki Enviro Grow), należy ustawić odpowiednie kanały na 0. Zalecanym przez producenta sposobem na ustalenie właściwych poziomów jest pozostawienie doniczek do wyschnięcia do punktu, w którym wymagają podlewania, sprawdzenie odczytów, a następnie ustawienie w pliku config.py wartości zmiennych moisture_target_X na tę liczbę.

Najwygodniej po pierwszym skonfigurowaniu płytki Enviro Grow skopiować plik config.py z płytki do komputera – i w razie potrzeby podmieniać dane konfiguracyjne. Po resecie lub przełączeniu zasilania płytka zaczyna od razu pracować w trybie wysyłania danych do sieci.

Konfigurowanie automatycznego podlewania

Aby włączyć automatyczne nawadnianie, należy w Thonny otworzyć plik config.py i zmienić ustawienie zmiennej auto_water z False na True. Trzeba pamiętać, by następnie zapisać plik do płytki.

Prawdopodobnie zajdzie potrzeba dostosowania ustawienia zmiennej moisture_target, w zależności od rodzaju podlewanych roślin. Kod fabryczny automatycznego nawadniania obliczy czas pracy pomp na podstawie różnicy między poziomem wilgoci zgłoszonym przez czujniki a poziomem docelowym wilgoci – i dostarczy większą ilość wody, gdy potrzebne będzie intensywniejsze podlewanie.

Jeśli trzeba zmienić opisane powyżej zachowanie (być może pozwolić np. na dłuższe czasy podlewania), to należy otworzyć plik enviro/boards/grow.py w Thonny i poszukać linii:

duration = round((targets[i] – moisture_levels[i]) / 25, 1)

Zmienna duration określa, przez ile sekund pompa będzie pracować.

Można zmienić we wzorze liczbę 25 na mniejszą (np. 10), aby wydłużyć wszystkie impulsy – lub ustawić stałą wartość (np. 0,2), tak aby za każdym razem pompa dozowała tę samą ilość wody.

Prawdopodobnie wymagana okaże się pewna regulacja w celu znalezienia odpowiednich poziomów dla docelowej konfiguracji. Producent sugeruje, aby po zmianie ustawień kodu nie pozostawiać konfiguracji bez nadzoru ani na noc. Zaleca monitorowanie pracy czujnika przez jakiś czas, aż zacznie on działać zgodnie z oczekiwaniami.

Praca z zestawem Enviro Grow

Użytkowanie zestawu Enviro Grow jest proste, szczególnie według opisu zamieszczonego w „Plant Monitoring with Enviro Grow” [9]. Jednak warto zwrócić uwagę na kilka kwestii.

Istotne okazuje się umieszczenie czujników wilgotności w doniczce (fotografia tytułowa) [9]. Powinny znajdować się dalej od krawędzi doniczki – najlepiej po przeciwnej stronie niż koniec rurki do podlewania. Unikaj tworzenia syfonu za pomocą pompki i rurki – może to spowodować dość szybkie opróżnienie całego zbiornika wody do doniczek. Upewnij się również, że końcówki rurek z roślinami znajdują się zawsze wyżej niż poziom wody w zbiorniku.

Co najmniej połowa czujnika – najlepiej do napisu UNDER (fotografia 4) lub GROUND – musi stykać się z glebą, po drugiej stronie czujnika. Nie należy również przekraczać tej głębokości, gdyż umieszczone powyżej elementy elektroniczne nie zostały niczym zabezpieczone. Obie strony płytki drukowanej sensora są pokryte lakierem zabezpieczającym, ale boki nie mają żadnej ochrony. Po pewnym czasie konstrukcja taka może sprzyjać przenikaniu wody pod zabezpieczoną boczną powierzchnię.

Fotografia 4. Czujnik wilgotności gleby (PIM520) [3]

Jeśli występuje dziwne zjawisko, w którym po pewnym czasie wszystkie odczyty z czujników umieszczonych w różnych doniczkach osiągają tę samą wartość – sprawdź, czy rośliny się nie stykają. Jeśli liście Twoich roślin są ze sobą połączone elektrycznie, może to prowadzić do odczytu wspólnej pojemności gleby.

Woda nie jest najlepszym sprzymierzeńcem układów elektronicznych, dlatego najlepiej umieścić system automatycznego nawadniania jak najdalej od wtyczek czy źródła zasilania. Dobrym pomysłem okaże się ułożenie całości na tacy lub podobnej podstawce, aby w razie wyciekania wody nie dostała się ona w żadne miejsce, w którym stwarzałaby zagrożenie.

Podsumowanie

Zestaw Enviro Grow stanowi znaczący krok naprzód w technologii pielęgnacji roślin. Dzięki zaawansowanym funkcjom i możliwościom oferuje kompleksowe rozwiązanie do monitorowania nawadniania roślin i zarządzania tym procesem, co czyni go nieocenionym narzędziem dla wszystkich osób zajmujących się uprawą roślin.

Zestaw Enviro Grow został doceniony i otrzymał 10 na 10 punktów na oficjalnej stronie Raspberry Pi Magazine.

Henryk A. Kowalski
Instytut Informatyki
Politechnika Warszawska

Literatura:

  1. Enviro Grow (Pico W Aboard) – Enviro Grow + Accessory Kit (PIM637), https://shop.pimoroni.com/products/enviro-grow?variant=40055904338003
  2. Enviro Grow (Pico W Aboard) – Enviro Grow + Sensors (PIM627), https://shop.pimoroni.com/products/enviro-grow?variant=40055904305235
  3. Grow Moisture Sensors (pack of 3) (PIM520), https://shop.pimoroni.com/products/grow-moisture-sensor-pack-of-3?variant=32271401123923
  4. Mini Submersible Water Pump (Grow) (COM3700), https://shop.pimoroni.com/products/mini-pump?variant=39273944907859
  5. 3-pin JST-SH cables for Grow moisture sensors (pack of 3) – 35cm (CAB1007), https://shop.pimoroni.com/products/grow-moisture-sensor-cables?variant=32292222009427
  6. Silicone Tube (1m) (Grow) (COM3800), https://shop.pimoroni.com/products/8mm-silicone-tube-1m?variant=32345147474003
  7. Grow – Grow Kit (PIM510), https://shop.pimoroni.com/products/grow?variant=32208365486163
  8. Hacking a Capacitive Soil Moisture Sensor (v1.2) for Frequency Output, https://thecavepearlproject.org/2020/10/27/hacking-a-capacitive-soil-moisture-sensor-for-frequency-output/
  9. Plant Monitoring with Enviro Grow, September 30, 2022, https://learn.pimoroni.com/article/plant-monitoring-with-enviro-grow
  10. Auto-Watering with Grow, https://learn.pimoroni.com/article/auto-watering-with-grow
  11. BME280 temperature, pressure, humidity sensor, https://www.bosch-sensortec.com/products/environmental-sensors/humidity-sensors-bme280/
  12. LTR-559 light and proximity sensor (datasheet), http://optoelectronics.liteon.com/upload/download/ds86-2013-0003/ltr-559als-01_ds_v1.pdf
  13. PCF85063A Tiny Real-Time Clock/Calendar with Alarm Function and I²C-Bus, NXP, https://www.nxp.com/products/peripherals-and-logic/signal-chain/real-time-clocks/rtcs-with-ic-bus/tiny-real-time-clock-calendar-with-alarm-function-and-ic-bus:PCF85063A
  14. SoilWatch 10 – Soil Moisture Sensor, https://pino-tech.eu/soilwatch10/
  15. Raspberry Pi Pico and Pico W, https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html
  16. Internet Rzeczy w pomiarach środowiskowych (4) Stacja pogodowa Enviro Weather firmy Pimoroni, EP 4/2024, https://ep.com.pl/projekty/moduly-w-aplikacjach/16089-internet-rzeczy-w-pomiarach-srodowiskowych-4-stacja-pogodowa-enviro-weather-firmy-pimoroni
  17. Thonny Python IDE, https://thonny.org/
  18. Upgrading Firmware, Pimoroni, https://github.com/pimoroni/enviro/blob/main/documentation/upgrading-firmware.md
  19. Enviro MicroPython firmware, https://github.com/pimoroni/enviro
  20. Pimoroni Pico Libraries and Examples, https://github.com/pimoroni/pimoroni-pico
  21. Internet Rzeczy w pomiarach środowiskowych (5): Optymalizacja poboru mocy urządzenia IoT z płytką Raspberry Pi Pico W, EP 5/2024, https://ep.com.pl/projekty/moduly-w-aplikacjach/16121-internet-rzeczy-w-pomiarach-srodowiskowych-5-optymalizacja-poboru-mocy-urzadzenia-iot-z-plytka-raspberry-pi-pico-w
Artykuł ukazał się w
Elektronika Praktyczna
czerwiec 2024
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik grudzień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje listopad - grudzień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna grudzień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich grudzień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów