Internet Rzeczy w pomiarach środowiskowych (14). Dołączanie czujników temperatury gleby do modułu Enviro Grow

Internet Rzeczy w pomiarach środowiskowych (14). Dołączanie czujników temperatury gleby do modułu Enviro Grow

Zestaw do kontrolowania wilgotności gleby uprawianych roślin Enviro Grow (PIM637) firmy Pimoroni umożliwia natychmiastowe rozpoczęcie eksperymentów. Dodatkowy czujnik temperatury gleby może poszerzyć możliwości monitorowania parametrów istotnych dla właściwej pielęgnacji roślin doniczkowych.

Podziękowania dla pana Macieja Michny z Centrum Badań i Rozwoju Nordic Semiconductor w Krakowie za udostępnienie zestawów sprzętowych Power Profiler Kit II (PPK2).

Wiarygodny pomiar wilgotności gleby nie jest łatwy. Gleba składa się z wody, powietrza, minerałów, materii organicznej i czasami lodu. Objętościowa zawartość wody (VWC) jest równa objętości wody podzielonej przez całkowitą objętość gleby, przy czym rzadko osiąga ona stan nasycenia. Zadowalającą dokładność pomiaru referencyjnego wilgotności gleby daje czujnik SoilWatch 10 firmy Pino-Tech [1]. Wymaga on jednak „czystego” (pozbawionego zakłóceń) zasilania i dokładnego pomiaru napięcia.

Zakłócenia szpilkowe na szynie zasilania 3V3 płytki RPI Pico W, zastosowanej w zestawie Enviro Grow, praktycznie uniemożliwiają dokładne pomiary napięcia [4]. Wbudowany przetwornik ADC procesora RP2040 jest tylko 12-bitowy. W celu zachowania kompatybilności z arytmetyką 16-bitową odczytane słowa danych są przesuwane w lewo o 4 bity. Powoduje to duże skoki wartości przy niewielkich zmianach rzeczywistego poziomu napięcia wejściowego. Brak dokładnego napięcia odniesienia tego przetwornika powoduje również duże, skokowe, a co gorsza – przypadkowe zmiany odczytu, spowodowane impulsowymi zakłóceniami przetwornicy zasilającej procesor. Dlatego do celów eksperymentalnych został zastosowany zewnętrzny, 16-bitowy przetwornik ADC typu ADS1115.

Cyfrowy czujnik temperatury DS18B20

DS18B20 firmy Analog Devices (dawniej Maxim oraz Dallas) jest cyfrowym czujnikiem temperatury z interfejsem 1-Wire [2]. Przy zasilaniu 3…5,5 V pobiera prąd o natężeniu 1 mA w stanie aktywnym i 750 nA w stanie bezczynności. Rozdzielczość czujnika temperatury jest konfigurowana przez użytkownika na 9, 10, 11 lub 12 bitów (maksymalny czas pomiaru 750 ms), co odpowiada przyrostom odpowiednio o 0,5°C, 0,25°C, 0,125°C i 0,0625°C. Domyślna rozdzielczość po włączeniu zasilania wynosi 12 bitów. Po podaniu napięcia zasilającego układ DS18B20 włącza się i przechodzi w stan bezczynności o niskim poborze mocy. Aby zainicjować pomiar temperatury i konwersję analogowo-cyfrową, urządzenie nadrzędne musi wydać polecenie Convert T (44h). Po konwersji wynikowe dane są przechowywane w 2-bajtowym rejestrze temperatury w pamięci podręcznej, a DS18B20 powraca do stanu bezczynności.

Magistrala 1-Wire ma tylko jedną linię danych. Każde urządzenie (master lub slave) łączy się z tą linią za pośrednictwem portu typu otwarty dren lub wyprowadzenia 3-stanowego. Pozwala to każdemu urządzeniu „zwolnić” linię danych, gdy urządzenie nie przesyła żadnych informacji, dzięki czemu magistrala pozostaje dostępna do użycia przez inne urządzenie. Magistrala 1-Wire wymaga zewnętrznego rezystora pullup o wartości około 5 kΩ. W systemie opartym na szynie 1-Wire obecny jest zawsze pojedynczy master magistrali do sterowania jednym lub większą liczbą urządzeń podrzędnych.

Każdy układ DS18B20 zawiera unikalny, 64-bitowy kod zapisany w pamięci ROM. 48 bitów odpowiada za przechowywanie unikalnego numeru seryjnego, dlatego liczba urządzeń, które można zaadresować na jednej magistrali, jest w praktyce niemalże nieograniczona.

Czujnik wilgotności gleby SoilWatch 10

SoilWatch 10 firmy Pino-Tech to pojemnościowy czujnik wilgotności gleby, umożliwiający pomiar względnej zawartości wody w glebie (fotografia tytułowa). Czujnik jest wodoodporny i niewrażliwy na warunki atmosferyczne. Osłonięte elektrody i hermetyczna obudowa zabezpieczają wnętrze sensora przed korozją. SoilWatch 10 daje sygnał wyjściowy w zakresie 0…3 V (przy napięciu zasilania w zakresie 3,1…5,0 V). Czujnik zapewnia napięcie wyjściowe bliskie 0 V w powietrzu i około 3 V w wodzie, w zależności od zastosowanej wersji sensora. SoilWatch 10 ma wbudowany własny regulator napięcia, więc zmiany na szynie zasilania nie wpływają na sygnał wyjściowy czujnika. Typowy czas, po którym czujnik jest gotowy do pracy po włączeniu zasilania, wynosi mniej niż 100 ms. Dokładny opis sensora jest zamieszczony w artykule „Zestaw do kontrolowania wilgotności gleby Enviro Grow firmy Pimoroni” [1].

Zmodyfikowany moduł DFRobot I²C ADS1115

Moduł DFRobot I²C ADS1115 (DFR0553) firmy DFRobot [8] zawiera układ przetwornika analogowo-cyfrowego ADS1115. Zasilanie konwertera ADS1115 jest realizowane przez niskoszumny układ LDO typu LP5907MFX-3.3, dostarczający do 250 mA prądu przy napięciu wyjściowym równym 3,3 V. Przy spadku napięcia na tym układzie, wynoszącym 50...250 mV (przy obciążeniu 100...250 mA), układ można zasilać ze źródła napięcia o wartości około 3,55…5,5 V. Doskonale odpowiada on typowemu zakresowi napięcia zasilania z jednego ogniwa litowo-polimerowego. Układ ADS1115 obsługuje transmisję na szynie I²C. Na potrzeby opisywanych eksperymentów moduł został nieco zmodyfikowany:

  • Na dolnej stronie płytki drukowanej należy przeciąć ścieżkę połączoną z pinem 4 („+”) gniazdka P1.
  • Na górnej stronie płytki należy usunąć rezystory podciągające 10 kΩ (R1 i R2).
  • Przewodem należy połączyć nóżkę 1 przełącznika S1 (oznaczenie 0x49) oraz katodę diody D1.

W takiej konfiguracji pin 4 („+”) gniazdka P1 oraz piny 1…4 („+”) gniazdka P4 wyprowadzają regulowane, „czyste” napięcie 3,3 V. Podciąganie linii SCL i SDA należy zrealizować zewnętrznie.

Do pracy z układem ADS115 została zastosowana biblioteka języka MicroPython [9]. Opracował ją Wolfgang (Wolle) Ewald w języku Python, w implementacji przeznaczonej na platformę ESP32.

Pico Inky Pack – moduł z wyświetlaczem e-Paper

Pico Inky Pack (PIM634) firmy Pimoroni to moduł z czarno-białym wyświetlaczem e-Paper o przekątnej 2,9” i rozdzielczości 296×128 px, przeznaczony do współpracy z płytkami Raspberry Pi Pico oraz Raspberry Pi Pico W. Produkt ma wbudowany kontroler, który realizuje komunikację za pomocą interfejsu SPI.

Wyświetlacze e-Paper cechują się wysokim kontrastem wyświetlanego obrazu i pobierają prąd praktycznie tylko w momencie zmiany wyświetlanej treści, czyli przeładowania (odświeżenia) grafiki. Moduł PIM634 ma dodatkowo wbudowane trzy przyciski. Zasilanie wbudowanych obwodów elektronicznych jest pobierane z szyny 3V3 modułu RPi Pico.

Pico Graphics to zunifikowana biblioteka grafiki i wyświetlania firmy Pimoroni umożliwiająca sterowanie wyświetlaczami z Pico w języku MicroPython. Udostępnione są również przykłady.

Zestaw Enviro Grow (PIM637)

Zestaw Enviro Grow (PIM637) firmy Pimoroni zawiera trzy pojemnościowe czujniki wilgoci gleby (PIM520), trzy pompki wody (COM3700), pojemnik na baterie AA oraz płytkę Enviro Grow (PIM627) z czujnikiem oświetlenia oraz ciśnienia, wilgotności i temperatury powietrza. Płytka Enviro Grow jest prawie identyczna z Enviro Weather z tą różnicą, że ma wbudowane trzy tranzystory i gniazdka do sterowania zasilaniem pompek, trzy gniazdka czujników wilgotności gleby oraz dodatkowy tranzystor z brzęczykiem (nie ma natomiast gniazdek RJ11). Dokładny opis platformy zamieszczono w artykule „Zestaw do kontrolowania wilgotności gleby Enviro Grow firmy Pimoroni” [1].

Dołączanie czujników zewnętrznych do modułu Enviro Grow

Czujnik wilgotności gleby PIM520 dołączany jest do płytki Enviro Grow poprzez kabel CAB1007, zaś minipompka wody (COM3700) wyposażona jest we własny, wyprowadzony fabrycznie przewód.

Sygnał pomiarowy czujnika wilgotności gleby SoilWatch 10 jest dołączony do płytki przetwornika ADS1115, z której pobierane jest „czyste” napięcie zasilania dla czujnika [4]. Przetwornik jest natomiast dołączony do szyny I²C (wyprowadzenia GP4 i GP5 procesora).

Do pomiaru temperatury gleby zostały zastosowane sondy wodoodporne (IP68, obudowa ze stali nierdzewnej) z czujnikiem temperatury DS18B20 firmy DFRobot (DFR0198) [7]. Czujniki działają w trybie 3-przewodowym. Pracują na szynie 1-Wire dołączonej do wyprowadzenia GP16 procesora, ze wspólnym rezystorem podciągającym o wartości 5 kΩ.

Praca czujników z modułem Enviro Grow

Zastosowanie płytki Enviro Grow wymaga najpierw wpisania do niej najnowszej wersji firmowego pliku obrazu (uf2) aplikacji Enviro, zawierającego interpreter MicroPython oraz biblioteki firmowe, np. Pico Graphics. Następnie należy przesłać folder projektu najnowszej aplikacji Enviro. Procedura ta została dokładnie omówiona we wspomnianym wcześniej artykule pt. „Zestaw do kontrolowania wilgotności gleby Enviro Grow firmy Pimoroni” [1].

Najprostsza metoda wgrania oprogramowania firmowego przebiega następująco:

  • Pobierz ze strony Enviro MicroPython firmware [5] najnowszą wersję firmowego pliku obrazu (uf2), zawierającego zarówno aplikację Enviro, jak i interpreter MicroPython. W chwili pisania niniejszego artykułu jest to plik pimoroni-enviro-v1.22.2-micropython-enviro-v0.2.0.uf2.
  • Trzymaj wciśnięty przycisk BOOTSEL znajdujący się na płytce 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, przez co na komputerze zostanie otwarte okno RPI-RP2, pokazujące zawartość dysku udostępnianego przez Pico W.
  • Przeciągnij pobrany plik uf2 do okna dysku RPI-RP2.

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

Uwaga! Może nastapić skasowanie poprzedniej zawartości pamięci Flash.

Teraz trzeba wpisać do pamięci Raspberry Pi Pico W pliki aplikacyjne z pobranego pliku Enviro_Grow.zip (https://tiny.pl/k785zs9r). Podmieniane są pliki main.py i config.py.

W pliku config.py należy skonfigurować dostęp do Wi-Fi. W linii wifi_ssid = ‘nazwa_sieci’ należy wpisać nazwę własnej sieci Wi-Fi, zaś w linii wifi_password = ‘haslo’ trzeba podać jej hasło. Można też ustawić czas oczekiwania po każdym pomiarze. W linii reading_frequency = 1 należy podać ten czas w minutach. Dodatkowo można włączyć obsługę pompek wodnych (auto_water = True) oraz ustawić próg zadziałania (moisture_target_a = 50). Aplikacja Enviro umożliwia wysyłanie danych pomiarowych do chmury obliczeniowej Adafuit IO. Dokładny opis postępowania został już opisany na łamach „Elektroniki Praktycznej” w artykule „Stacja pogodowa Enviro Weather firmy Pimoroni” [3].

Obsługa programowa czujników jest wykonywana za pomocą sterowników dostarczonych przez firmę Pimoroni w pliku obrazu MicroPython z aplikacją Enviro.

Podczas wykonywania bloku pomiarowego cała aplikacja uruchamiana jest tylko raz. Dlatego każdorazowo musi być przeprowadzana inicjalizacja układów czujników, a potem odczyt danych pomiarowych. Po wystartowaniu oprogramowania błyska biała dioda LED (ACTIVITY). Na początku kodu inicjalizowana jest obsługa Enviro Weather, następuje też synchronizacja zegara RTC (PCF85063A) ze znacznikiem czasu, pobranym poprzez Wi-Fi z Internetu. Następnie aktywowany jest dostęp do czujników BME280 i LTR-599 na szynie I²C oraz pobierane są wyniki pomiarów parametrów z modułu Enviro Weather: temperatura, wilgotność, ciśnienie atmosferyczne, poziom oświetlenia i wilgotność gleby (z jednego do trzech kanałów). Wyliczana jest procentowa wartości wilgotności pomiędzy minimum (czujnik suchy) i maksimum (czujnik całkowicie mokry). Następnie wykonywany jest pomiar wilgotności gleby na podstawie sygnału z pojemnościowego czujnika SoilWatch 10, dołączonego do przetwornika ADC typu ADS1115. Odczyt napięcia jest wyświetlany jako procent objętościowy wody w glebie (VWC, Volumetric Water Content), wyskalowany dla piaszczystej gleby gliniastej. Ostatnim pomiarem jest odczyt temperatury gleby z czujników DS18B20 dołączonych do szyny 1-Wire.

Wszystkie wyniki pomiarów i obliczeń są prezentowane na wyświetlaczu e-Paper (fotografia 1). Na górze ekranu wyświetlane są parametry otoczenia: temperatura, wilgotność, ciśnienie atmosferyczne i poziom oświetlenia. Dalej umieszczone są dane dotyczące pomiaru parametrów gleby: wilgotności (z pojemnościowego czujnika deszczu zestawu Enviro Grow) oraz z sensora SoilWatch 10. Po prawej stronie znajdują się wyniki pomiaru temperatury gleby z dwóch czujników.

Fotografia 1. Przykład pomiaru z czujnikami wilgotności umieszczonymi w wodzie

Na koniec działania aplikacji wywoływana jest firmowa funkcja enviro.sleep, programująca RTC na wybudzenie procesora oraz wprowadzająca procesor na pewien czas (np. 1 min) w uśpienie. Podczas zasilania z wejścia BAT wyłączane jest zasilanie całej płytki Enviro Weather (z wyjątkiem układu RTC) oraz wszystkich dołączonych czujników. Sygnał alarmu z RTC wymusza reset procesora.

Oprogramowanie było uruchamiane w środowisku Thonny. Na listingu 1 pokazano okno Shell po uruchomieniu aplikacji pomiarowej. Różne informacje wyprowadzane są przez firmową aplikację Enviro – pozwalają one na zorientowanie się w postępach pracy oprogramowania.

Listing 1. Informacje wyświetlane w konsoli po uruchomieniu aplikacji Enviro

Do dynamicznego pomiaru prądu zasilania bardzo dobrze nadaje się zestaw Power Profiler Kit II (PPK2) firmy Nordic Semiconductor. Jest to samodzielne narzędzie, które bez pomocy zewnętrznego wyposażenia może mierzyć i dostarczać prądy od poniżej 1 μA do nawet 1 A. Praktyka pokazuje, że zakres pracy rozciąga się do 2 A, wymaga to jednak dołączenia dodatkowego portu USB do drugiego gniazdka PPK2. Dokładny opis PPK2 jest zamieszczony w artykule „Profilowanie mocy z zastosowaniem Power Profiler Kit II” [6].

Przebieg poboru prądu całego układu przy zasilaniu bateryjnym 4,2 V został pokazany na rysunku 1. Wykonywanie bloku pomiarowego trwa 14 s, a cała procedura jest powtarzana co 1 minutę. Maksymalny zmierzony pik prądowy przy ponownym włączaniu zasilania to 1,45 A (600 μs). W trakcie wykonywania bloku pomiarowego prąd średni wynosi 75,99 mA. Pompka pracuje przez 3 s z prądem średnim 197 mA.

Rysunek 1. Pobór prądu z baterii, dwa bloki pomiarowe

Uśrednione natężenie prądu za cały okres pomiarowy 1 min (zaznaczony na dolnym wykresie) wynosi tylko 18,21 mA. Pomiędzy blokami pomiarowymi pobór prądu spada do zaledwie 31 μA.

Przy zasilaniu z USB (5 V) nie występują szpilki prądowe na początku bloku pomiarowego, średni prąd podczas bloku jest podobny do opisanego poprzednio, a pomiędzy blokami średni pobór prądu to około 38 mA.

Podsumowanie

Pielęgnacja kwiatów doniczkowych jest wdzięcznym zajęciem poprawiającym atmosferę domowego ogniska, ale także świetną okazją do poznania układów IoT zawierających nie tylko czujniki, lecz także proste elementy wykonawcze. Zestaw Envoro Grow jest przeznaczony do projektów automatycznego ogródka. Dodanie czujników temperatury gleby oraz modułu wyświetlacza znacznie zwiększa funkcjonalność w zakresie monitorowania i zarządzania procesem nawadniania roślin.

Realizacja oprogramowania bazuje na projekcie „Pomiar wilgotności gleby i sterowanie nawadnianiem roślin doniczkowych”, wykonanego w ramach przedmiotu „Systemy wbudowane i oprogramowanie” na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej przez zespół w składzie: Miłosz Brym, Magdalena Wielgolewska, Wojciech Danielewicz, Mieszko Mazurkiewicz i Martyna Stankiewicz.

Henryk A. Kowalski
Instytut Informatyki
Politechnika Warszawska

Bibliografia

  1. Zestaw kontrolowania wilgotności gleby Enviro Grow firmy Pimoroni, EP 6/2024, https://tiny.pl/d5s0g9-f
  2. DS18B20, Analog Devices, https://tiny.pl/7n58_ddf
  3. Stacja pogodowa Enviro Weather firmy Pimoroni, EP 4/2024, https://tiny.pl/d93r1
  4. Optymalizacja poboru mocy urządzenia IoT z płytką Raspberry Pi Pico W, EP5/2024, https://tiny.pl/d59hg
  5. Enviro MicroPython firmware, Pimoroni, https://tiny.pl/dt49f
  6. Profilowanie mocy z zastosowaniem Power Profiler Kit II, EP 5/2022, https://tiny.pl/d93rd
  7. Waterproof DS18B20 Digital Temperature Sensor (DFR0198), DFRobot, https://tiny.pl/zz-cgfbx
  8. Gravity: I²C ADS1115 16-Bit ADC Module, DFR0553, DFRobot, https://tiny.pl/n6qfj60b
  9. ADS1115_mpy, A MicroPython module for the ADS1115 ADC. Wolfgang (Wolle) Ewald, https://tiny.pl/twv9zkq9
Artykuł ukazał się w
Elektronika Praktyczna
luty 2025
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik marzec 2025

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2025

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2025

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna luty 2025

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich marzec 2025

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik marzec 2025

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2025

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2025

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna luty 2025

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich marzec 2025

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik marzec 2025

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2025

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2025

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna luty 2025

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich marzec 2025

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów