O sensor de umidade do solo serve para medir a quantidade de água presente na terra.
Ele detecta a resistência elétrica entre as duas hastes metálicas.
Quando o solo está seco, a resistência é alta, ou seja, pouca ou nenhuma condução.
Quando o solo está úmido, a resistência é baixa, ou seja, maior condução elétrica.
Ele possui quatro pinos, sendo dois para alimentação de 5V e GND, além de um pino de leitura analógica (A0) e outro digital (D0).
O pino digital (D0) retorna 0V ou 5V dependendo do nível de umidade, que pode ser calibrado utilizando o potenciômetro existente nele.
Já o pino analógico (A0) retorna um valor entre 0 e 1023, que pode ser utilizado no Arduino da seguinte forma:
* Esses valores podem variar de sensor para sensor.
Ele pode ser utilizado para monitorar a umidade da terra em vasos de plantas ou jardins, automatizar sistemas de irrigação ligando uma bomba ou válvula quando o solo estiver seco.
Pode também ser utilizado para evitar desperdício de água em plantações, e até mesmo em projetos educacionais sobre sensores, automação e agricultura inteligente.
Neste projeto você criará um circuito que faz o uso de um sensor de umidade de solo com o Arduino.
Para a criação deste circuito serão necessários os seguintes componentes:
Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.
Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.
/**
* Código do curso Magos do Arduino para utilizar um sensor de umidade do solo com o Arduino.
*
* Imprima no monitor serial as leituras digitais e analógicas de um sensor de umidade de solo com o Arduino.
* Se o valor do sensor for maior que 600, mas menor que 1000, o solo está seco.
* Se o valor do sensor estiver entre 370 e 600, o solo está úmido.
* Se o valor do sensor for menor que 370, o sensor está na água.
*
* (c) Copyright KazaleIT
* @kazaleitoficial no YouTube
**/
#define PINO_SENSOR_DIGITAL 2
#define PINO_SENSOR_ANALOGICO A0
int valorDigital = 0;
int valorAnalogico = 0;
void setup() {
pinMode(PINO_SENSOR_DIGITAL, INPUT);
Serial.begin(9600);
}
void loop() {
// faz a leitura do valor digital do sensor
valorDigital = digitalRead(PINO_SENSOR_DIGITAL);
// imprime o valor digital obtido pelo sensor
Serial.print("Valor digital: ");
Serial.println(valorDigital);
// imprime uma mensagem com base no valor digital obtido (HIGH ou LOW)
if (valorDigital == HIGH) {
Serial.println("Nível da umidade do solo está no nível desejado.");
} else {
Serial.println("Nível da umidade do solo está abaixo do valor desejado.");
}
// faz a leitura do valor analógico do sensor
valorAnalogico = analogRead(PINO_SENSOR_ANALOGICO);
// imprime o valor analógido obtido pelo sensor
Serial.print("Valor analógico: ");
Serial.println(valorAnalogico);
// imprime o nível de umidade do solo.
Serial.print("Nível de umidade do solo: ");
if (valorAnalogico > 600) {
Serial.println("o solo está seco.");
} else if (valorAnalogico > 370) {
Serial.println("o solo está úmido.");
} else { // menor do que 370
Serial.println("o solo está com excesso de água.");
}
Serial.println("");
delay(500);
}