Czujnik wilgotności gleby – Hygrometer sensor
Układ jest dość prosty i nie powinien Wam sprawić problemów w montowaniu, i uruchamianiu dość ciekawego i fajnego projektu. Tak więc od początku. Ja w swoim projekcie użyłem mikro kontrolera Arduino NANO V3.0, 5szt. diod (trzy zielone, jedna żółta i jedna czerwona), czujnika wilgotności gleby z bagnetem, i przewodów do połączenia elementów w układ. Stan wilgotności gleby sprawdzamy poprzez zapalające się diody. Zapalą się wszystkie oznacza że jest wilgotno, trochę mniej palą się cztery, sucho pali się tylko czerwona.
W skrócie diody podpinamy pod wyjścia cyfrowe od D2 do D6 , tak jak na schemacie i podajemy wspólne zasilanie, z Arduino wyprowadzamy zasilanie oraz masę. Do czujnika oczywiście również podpinamy zasilanie, masa i wyjście analogowe A0 łączymy z wejściem analogowym A0. Pozwoli to nam mierząc proporcjonalny sygnał napięciowy, dokładniej określić poziom wilgotności gleby.
Poniżej program który należy wgrać do arduino.
/* Flower Pot Soil Mosture Sensor A0 – Soil Mosture Sensor D2:D6 – LEDS 1,2,3,4,5 LED1 – Green LED2 – Green LED3 – Green LED4 – YELLOW LED5 – RED Connect the Soil Mosture Sensor to anolog input pin 0, and your 5 led to digital out 2-6 */ int led1 = 2; int led2 = 3; int led3 = 4; int led4 = 5; int led5 = 6; int mostureSensor = 0; void setup() { // Serial Begin so we can see the data from the mosture sensor in our serial input window. Serial.begin(9600); // setting the led pins to outputs pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: int sensorValue = analogRead(mostureSensor); // print out the value you read: Serial.println(sensorValue); if (sensorValue >= 820) { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); digitalWrite(led4, HIGH); digitalWrite(led5, LOW); } else if (sensorValue >= 615 && sensorValue < 820) { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); digitalWrite(led4, LOW); digitalWrite(led5, LOW); } else if (sensorValue >= 410 && sensorValue < 615) { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); } else if (sensorValue >= 250 && sensorValue < 410) { digitalWrite(led1, HIGH); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); } else if (sensorValue >= 0 && sensorValue < 250) { digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); } delay(1000); // delay 1 second between reads }