Wskaźnik wilgotności gleby z czujnikiem pojemnościowym i diodami LED

Wskaźnik wilgotności gleby z czujnikiem pojemnościowym i diodami LED
W tym projekcie zbudujemy bardzo prosty, ale praktyczny wskaźnik wilgotności gleby oparty na Arduino UNO, pojemnościowym czujniku wilgotności gleby oraz dwóch diodach LED. Układ będzie informował użytkownika, czy roślina wymaga podlania, czy ziemia jest jeszcze wystarczająco wilgotna. Jeżeli gleba będzie zbyt sucha, zapali się czerwona dioda LED. Jeżeli poziom wilgotności będzie odpowiedni, zapali się zielona dioda LED.
Do pomiaru wykorzystamy czujnik wilgotności gleby odporny na korozję. Jest to czujnik pojemnościowy, więc w przeciwieństwie do prostych czujników rezystancyjnych nie mierzy wilgotności przez bezpośrednie przewodzenie prądu między odsłoniętymi elektrodami. Dzięki temu lepiej nadaje się do dłuższej pracy w wilgotnym środowisku i jest znacznie praktyczniejszy w projektach związanych z roślinami, doniczkami, małymi systemami nawadniania albo prostym monitoringiem gleby.
Całość jest bardzo dobra jako pierwszy projekt z wejściem analogowym w Arduino. Czujnik wystawia na wyjściu sygnał analogowy, Arduino odczytuje go przez pin A0, a następnie porównuje wynik z ustawionym progiem. Na podstawie tego progu program decyduje, czy należy zapalić diodę czerwoną, czy zieloną.

Lista potrzebnych elementów
Do zbudowania prostego wskaźnika wilgotności gleby potrzebujemy tylko kilku podstawowych elementów. Projekt można złożyć na płytce stykowej, więc na start nie trzeba nic lutować.
| Element | Opis |
|---|---|
| Arduino UNO | Główny mikrokontroler, który odczytuje wartość z czujnika i steruje diodami LED |
| Czujnik wilgotności gleby odporny na korozję | Pojemnościowy czujnik z wyjściem analogowym |
| Dioda LED czerwona | Informuje, że gleba jest zbyt sucha i trzeba podlać roślinę |
| Dioda LED zielona | Informuje, że gleba jest dobrze podlana |
| Rezystory 330 Ω, 2 sztuki | Ograniczają prąd płynący przez diody LED |
| Przewody połączeniowe | Do połączenia modułów na płytce stykowej |
| Płytka stykowa | Do wygodnego montażu układu bez lutowania |
Do diod LED najlepiej zastosować rezystory 330 Ω. Można również użyć 220 Ω, ale 330 Ω jest bardzo bezpiecznym i uniwersalnym wyborem dla Arduino UNO. Dioda nadal będzie dobrze widoczna, a prąd będzie ograniczony do rozsądnej wartości. Przy zasilaniu 5 V rezystor 330 Ω daje zwykle kilka do kilkunastu miliamperów prądu, zależnie od koloru i typu diody, co jest w zupełności wystarczające do sygnalizacji.
Przygotowaliśmy gotowy koszyk, aby maksymalnie ułatwić Wam zakupy i kompletowanie wszystkich potrzebnych elementów, należy jednak pamiętać o ręcznym zwiększeniu ilości tych komponentów, które w projekcie występują więcej niż jeden raz oraz zaopatrzeniu się w przewody do połączeń elementów.
Podłączenie elementów
Podłączenie układu jest bardzo proste. Czujnik wilgotności gleby zasilamy z Arduino UNO, a jego wyjście analogowe podłączamy do wejścia A0. Dwie diody LED podłączamy do pinów cyfrowych D2 i D3, każdą przez osobny rezystor ograniczający prąd.
| Czujnik wilgotności gleby | Arduino UNO |
|---|---|
| VCC | 5 V |
| GND | GND |
| AO / AOUT / SIG | A0 |
| Dioda LED czerwona | Arduino UNO |
|---|---|
| Anoda, czyli dłuższa nóżka | D2 przez rezystor 330 Ω |
| Katoda, czyli krótsza nóżka | GND |
| Dioda LED zielona | Arduino UNO |
|---|---|
| Anoda, czyli dłuższa nóżka | D3 przez rezystor 330 Ω |
| Katoda, czyli krótsza nóżka | GND |
Warto pamiętać, że dioda LED ma polaryzację. Dłuższa nóżka to anoda, którą podłączamy do pinu Arduino przez rezystor. Krótsza nóżka to katoda, którą podłączamy do masy. Jeżeli dioda nie świeci mimo poprawnego działania programu, pierwszą rzeczą do sprawdzenia jest właśnie jej kierunek podłączenia.
Jak działa pomiar wilgotności?
Arduino UNO ma wejścia analogowe, które pozwalają mierzyć napięcie i zamieniać je na wartość liczbową. Funkcja analogRead() zwraca wynik z zakresu od 0 do 1023. W naszym projekcie czujnik podłączony jest do wejścia A0, więc program regularnie odczytuje wartość z tego wejścia i porównuje ją z ustawionym progiem.
W praktyce wartość z czujnika zależy od konkretnej gleby, głębokości wsunięcia sondy, zasolenia podłoża, wilgotności oraz zasilania. Dlatego próg najlepiej dobrać doświadczalnie. W naszym przykładzie ustawiliśmy próg na 250, ponieważ taka wartość została dobrana podczas testów. Jeżeli u Ciebie diody przełączają się za wcześnie albo za późno, wystarczy zmienić wartość zmiennej progSucho.
Najprostsza metoda kalibracji wygląda tak, że najpierw wkładamy czujnik w suchą ziemię i sprawdzamy odczyt w Monitorze portu szeregowego. Potem podlewamy ziemię, czekamy chwilę, aż wilgoć równomiernie się rozprowadzi, i ponownie sprawdzamy odczyt. Próg ustawiamy pomiędzy wartością dla suchej i wilgotnej gleby.

Gotowy kod
Poniższy kod odczytuje poziom wilgotności gleby z wejścia A0, wypisuje wynik w Monitorze portu szeregowego z prędkością 115200 baud, a następnie steruje dwiema diodami LED. Jeżeli odczyt jest większy niż ustawiony próg, program uznaje, że gleba jest zbyt sucha i zapala czerwoną diodę. Jeżeli odczyt jest mniejszy lub równy progowi, zapala się zielona dioda.
const int SENSOR_PIN = A0;
const int LED_RED = 2;
const int LED_GREEN = 3;
// Próg dobrany testowo.
// Jeżeli układ pokazuje zły stan, zmień tę wartość po sprawdzeniu odczytów w Serial Monitorze.
int progSucho = 250;
void setup()
{
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
Serial.begin(115200);
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, LOW);
}
void loop()
{
int wilgotnosc = analogRead(SENSOR_PIN);
Serial.print("Odczyt czujnika wilgotnosci gleby: ");
Serial.println(wilgotnosc);
if (wilgotnosc > progSucho)
{
// Gleba zbyt sucha - trzeba podlac
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, LOW);
}
else
{
// Gleba dobrze podlana
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, HIGH);
}
delay(500);
}

Testowanie układu
Po wgraniu programu do Arduino UNO otwieramy Monitor portu szeregowego i ustawiamy prędkość na 115200. Następnie obserwujemy wartości odczytywane z czujnika. Najlepiej wykonać dwa proste testy. Najpierw sprawdzamy odczyt, gdy czujnik znajduje się poza ziemią albo w suchej glebie. Następnie wkładamy czujnik w dobrze podlaną ziemię i sprawdzamy, jak zmienia się wskazanie.
Jeżeli czerwona dioda świeci wtedy, gdy ziemia faktycznie jest sucha, a zielona wtedy, gdy ziemia jest mokra, układ działa prawidłowo. Jeżeli reakcja jest odwrotna albo próg przełączania jest nieodpowiedni, wystarczy zmienić wartość progSucho. Dla jednego podłoża dobrym progiem może być 250, dla innego 350, a dla jeszcze innego 450. Nie jest to błąd, tylko normalne zachowanie czujników analogowych w kontakcie z różnymi rodzajami gleby.
Dlaczego warto użyć czujnika pojemnościowego?
Do pomiaru wilgotności gleby można spotkać różne typy czujników. Najprostsze czujniki rezystancyjne mają odsłonięte metalowe ścieżki, które z czasem mogą korodować, szczególnie gdy przez długi czas pracują w wilgotnej ziemi. Czujnik pojemnościowy jest pod tym względem znacznie wygodniejszy, ponieważ pomiar nie opiera się na przepływie prądu przez ziemię pomiędzy odsłoniętymi elektrodami. Dzięki temu taki moduł lepiej nadaje się do projektów, które mają działać dłużej niż tylko podczas krótkiego testu na biurku.
W naszym przypadku czujnik ma wyjście analogowe, więc jego obsługa z Arduino UNO jest bardzo prosta. Nie potrzebujemy dodatkowych bibliotek, komunikacji I2C ani żadnej skomplikowanej konfiguracji. Wystarczy podłączyć zasilanie, masę i przewód sygnałowy do wejścia analogowego.

Możliwe rozbudowy projektu
Ten projekt można potraktować jako bazę do bardziej rozbudowanego systemu podlewania. Najprostszym kolejnym krokiem jest dodanie brzęczyka, który będzie informował dźwiękiem o suchej glebie. Można też dodać przekaźnik lub moduł MOSFET i sterować małą pompką wody. Wtedy Arduino mogłoby nie tylko informować o potrzebie podlania, ale również automatycznie uruchamiać podlewanie.
Innym ciekawym dodatkiem może być wyświetlacz LCD albo OLED, na którym pokazywana będzie aktualna wartość odczytu z czujnika. Jeżeli projekt ma działać w większym systemie, można też przenieść go na ESP32 i wysyłać pomiary przez WiFi do Home Assistant, MQTT albo własnego panelu WWW.
Podsumowanie
W tym projekcie zbudowaliśmy prosty wskaźnik wilgotności gleby na Arduino UNO. Układ wykorzystuje pojemnościowy czujnik wilgotności gleby, dwie diody LED i kilka podstawowych elementów pasywnych. Czerwona dioda informuje o tym, że roślinę należy podlać, a zielona pokazuje, że wilgotność jest wystarczająca.
Najważniejszym etapem uruchomienia jest dobranie progu progSucho do konkretnej gleby i konkretnego sposobu montażu czujnika. W naszym przykładzie próg został ustawiony na 250, ale warto obserwować odczyty w Monitorze portu szeregowego i dopasować tę wartość do własnej rośliny. Dzięki temu prosty układ z Arduino może stać się praktycznym pomocnikiem przy podlewaniu kwiatów, testach automatycznego nawadniania albo nauce obsługi wejść analogowych.

Prezentowaną w artykule elektronikę znajdziesz oczywiście w naszym sklepie 👉 sklep.msalamon.pl 👈Zapraszamy również na nasze social media, gdzie na bieżąco informujemy o nowych produktach oraz o najciekawszych promocjach 😎👇



Ultradźwiękowy czujnik odległości HC-SR04
Moduł Bluetooth HC-05