[PROJEKT] Czujnik wilgotności gleby oraz KAmduino UNO
Projekt pokazuje przykładowe wykorzystanie czujnika wilgotności gleby do monitorowania nawodnienia rośliny doniczkowej. Diody LED (czerwona, żółta oraz zielona) sygnalizują prawidłowe nawodnienie lub potrzebę podlania rośliny.
Do realizacji projektu wykorzystano następujące elementy:
- Płytka KAmduino UNO
- Czujnik wilgotności gleby firmy Waveshare
- Przewody męsko-żeńskie oraz męsko-męskie
- Niewielka płytka stykowa
- Diody LED (czerwona, żółta oraz zielona)
Rys. 1. Czujnik wilgotności gleby firmy Waveshare
Czujnik wilgotności firmy Waveshare, dzięki swojemu kształtowi przypominającemu widelec, może być łatwo umieszczony w glebie. Wyjściem sensora jest sygnał analogowy, który rośnie proporcjonalnie do poziomu wilgotności ziemi, w której jest umieszczony. Czujnik pozwala na pomiar do głębokości 38 mm. Tego rodzaju sensor może być przydatny do projektu automatycznego podlewania lub ciągłego monitorowania wilgotności gleby.
Przy dłuższym stosowaniu w wilgotnej glebie czujnik może ulegać korozji. Aby temu zapobiec można wyłączać czujnik, gdy nie jest używany (np. przy pomocy przekaźnika lub trazystora) i przeprowadzać pomiar co jakiś czas zamiast w sposób ciągły.
Podłączenie czujnika wilgotności gleby do płytki KAmduino UNO jest bardzo proste. Należy podłączyć zasilanie (5V), oraz wyjście czujnika do wejścia analogowego np. A0. Wyjścia dla diod LED – dioda czerwona: pin 2, dioda żółta: pin 3 oraz dioda zielona: pin 4. Szczegółowe połączenie zostało przedstawione w tabeli poniżej:
Pin KAmduino UNO | Pin czujnika wilgotności gleby |
+5V | VCC |
GND | GND |
A0 | AOUT |
Zmontowany układ prezentuje się następująco:
Rys. 2. Zmontowany układ z płytką KAmduino UNO oraz czujnikiem wilgotności gleby
Po zmontowaniu części sprzętowej można przejść do napisania programu. Jego zadaniem jest pobranie wartości analogowej z czujnika, wysłanie jej na port szeregowy (odczyt w monitorze portu szeregowego), a następnie, zależnie od odczytanej wartości, zapalenie odpowiedniej diody LED. Dioda zielona zostanie zapalona, gdy wilgotność gleby jest wysoka, dioda żółta przy średnim poziomie wilgotności gleby, natomiast dioda czerwona gdy wilgotność gleby jest niska i potrzebne będzie podlewanie.
W dalszej części artykułu zostanie przedstawiony program realizujący wyżej wymienione założenia (kod programu znajduje się sekcji „do pobrania”)
Na początku zdefiniowano trzy nazwy dla poszczególnych kolorów diod LED (aby nie trzeba było pamiętać i używać w programie numerów pinów do których podpięte są poszczególne diody). Następnie została zadeklarowana zmienna pomiar, do której będzie zapisywana wartość pochodząca z czujnika wilgotności gleby.
#define LED_Czerwona 2 #define LED_Zolta 3 #define LED_Zielona 4 int pomiar = 0;
Następnie w funkcji setup() ustawiono prędkość portu szeregowego na wartość 9600 oraz zdefiniowano jako wyjście piny, do których będą podłączone diody LED.
void setup() { Serial.begin(9600); pinMode(LED_Czerwona,OUTPUT); pinMode(LED_Zolta,OUTPUT); pinMode(LED_Zielona,OUTPUT); }
W pętli głównej programu do zmiennej pomiar jest zapisywana wartość zmierzona wejścia analogowego A0. Jeżeli czujnik nie został umieszczony w glebie (zmienna pomiar równa 0) zostanie wyświetlony komunikat aby umieścić czujnik w glebie. Następnie sprawdzane jest jaką wartość wskazuje czujnik. Jeżeli jest to mniej niż 100 zostanie zapalona dioda czerwona, jeżeli natomiast wartość wynosi więcej niż 700 – zostanie zapalona dioda zielona. Gdy wartość będzie mieściła się w zakresie od 100 do 700 zostanie zapalona dioda żółta. (wartości dla gleby suchej oraz wilgotnej należy dobrać indywidualnie, będą one zależeć od użytej gleby itp.).
pomiar = analogRead(A0); Serial.print("Wartosc z czujnika wilgotnosci gleby: "); Serial.println(pomiar); if (pomiar == 0) { Serial.println("Czujnik musi znajdowac sie w glebie!"); } else if (pomiar <100) { digitalWrite(LED_Czerwona, HIGH); // Zapalenie diody czerwonej digitalWrite(LED_Zolta,LOW); digitalWrite(LED_Zielona,LOW); // W przypadku automatycznego podlewania, w tym miejscu należy umieścić kod np. do włączenia pompy } else if( pomiar >700) { digitalWrite(LED_Czerwona, LOW); digitalWrite(LED_Zolta,LOW); digitalWrite(LED_Zielona,HIGH); // Zapalenie diody zielonej } else { digitalWrite(LED_Czerwona, LOW); digitalWrite(LED_Zolta,HIGH); // Zapalenie diody zółtej digitalWrite(LED_Zielona,LOW); } delay(1000);
Testy można przeprowadzić podpinając płytkę KAmduino UNO do komputera i otwierając monitor portu szeregowego (należy ustawić prędkość transmisji na 9600). Następnie należy umieścić czujnik wilgotności gleby w docelowej doniczce z ziemią i poczekać chwilę na stabilizację pomiaru. Wartość zmierzoną można zanotować, a następnie „podlać” glebę obserwując wskazania czujnika. Dzięki tym testom będzie można dobrać odpowiednie wartości do sygnalizacji wilgotności dla poszczególnych diod LED.
W moim przypadku dla suchej gleby otrzymano wartość około 67, natomiast dla świeżo podlanej gleby uzyskano wartość około 733.
Działanie programu zostało zaprezentowane na filmiku poniżej: