Manual
do
Maker
.
com
Sensor de umidade de solo é um negócio complicado. Esses com o cobre exposto corroem rapidamente, daí se coloca em um projeto em campo e logo o cliente reclama de mal funcionamento. Aí vai lá o desenvolvedor trocar o sensor e passa mais um tempo, o mesmo problema. Mas tem uma solução bacana! O sensor de umidade de solo anticorrosivo da CurtoCircuito!
Se está procurando por um sensor de umidade ambiente, sugiro esse artigo do DHT22 ou esse outro do HTU21D.
Esse sensor parece um plug de tomada (não conecte na tomada), mas é bem pequeno (é, acho que nem dá pra colocar na tomada). Ele é um sensor que se deve alimentar em 3V3 e tem uma saída digital e uma analógica. o gatilho pode ser ajustado através de seu potenciômetro. Quando atingir o limite, o pino vai pro nível lógico 0.
Fiz a leitura desse sensor de umidade de solo anticorrosivo com ESP32, aproveitando que ele é 3V3 e seu analógico tem 12 bits, o que dá uma amostragem de 4096 valores possíveis. Coloquei um gatilho no pino 18 para que a amostragem fosse tirada apenas no caso de atingir o limite. Na função que tira a amostragem, faço 10 leituras do AD (conectado ao pino 4), divido as amostras por 10 e uso a função map para tirar o percentual de umidade. O valor inicial é 4095 e vai caindo conforme a umidade aumenta, então fiz o mapeamento invertido.
Para exibir na serial, utilizei a função printf, que infelizmente não está disponível para Arduino, então nesse caso será necessário trocar por print e println, exceto se criar uma string para compor a mensagem seguida do valor.
O código ficou assim:
uint8_t trigger = 0;
int humidity = 0;
void setup() {
Serial.begin(9600);
pinMode(18,INPUT);
}
void humidityPercent(){
int fromSensor = 0;
for (uint8_t i=0; i<10;i++){
fromSensor += analogRead(4);
}
fromSensor /= 10;
int percent = map(fromSensor,0,4095,100,0);
Serial.printf("Umidade: %d porcento\n", percent); //12 bits
}
void loop() {
trigger = digitalRead(18);
if (trigger == 0){
Serial.printf("Gatilhos: %d\n", trigger);
humidityPercent();
}
vTaskDelay(pdMS_TO_TICKS(1000));
}
Fácil demais essa leitura, hum? Mas claro que a mensagem na serial não importa, o que quereremos na verdade é o acionamento de um relé, uma mensagem via rádio ou algo do tipo. Mais pra frente escreverei outro artigo com esse sensor, regando uma planta ou algo do tipo.
A leitura de teste feita com uma flanela umedecida ficou assim:
Esse sensor é vendido na CurtoCircuito, podendo ser adquirido através desse link. Custa mais que o outro, mas não vai se desmanchar igual uma bolacha de Maizena no leite.
Até a próxima!
Revisão: Ricardo Amaral de Andrade
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.