Este projeto é o candidato vencedor para ser construído durante o Meetup do dia 25/06/2016. Basicamente a ideia é ter duas hastes medindo o valor de resistividade si, quanto menos umidade, menor o valor da saída do sensor. Seguindo as idéias deste link e deste link resolvemos separar os níveis de umidade em 3:
- Sensor no solo seco - Quando o sensor capta valores analógicos de 0 a 300, ou de 0 a 33%
- Sensor no solo úmido - Quando o sensor capta valores analógicos de 300 a 700, ou entre 33% e 66%
- Sensor em água - Quando o sensor capta valores analógicos de 700 a 950 ou 66% até 100%
Neste esquema, estamos utilizando a entrada analógica do Arduíno A0. O cabo preto recebe o valor de GND e o vermelho o valor de 5v. A haste não possui polaridade, então não há risco. O código para ler a entrada analógica também é bastante simples:
int leitura;
int humidadeSolo = 0;
void setup()
{
Serial.begin(9600);
pinMode(A0,INPUT);
}
void loop()
{
leitura = analogRead(A0);
humidadeSolo = (leitura);
if(humidadeSolo < 300)
Serial.println(" Solo bem umido");
if((humidadeSolo >= 300) && (humidadeSolo < 700))
Serial.println(" Relativamente umido");
if((humidadeSolo >= 700) && (humidadeSolo < 1024))
Serial.println(" Solo seco");
}
No ato de criação do projeto, aproveite para enviar para o seu email o valor da autenticação, você vai precisar dele mais tarde. Basta clicar no botão "email"
Logo após, adicione um componente Push ao seu projeto.
E depois adicione um Display LCD. Irá lhe custar 400 créditos no programa, caso não tenha você irá precisar mostrar o resultado de outra forma.
A única configuração que eu recomendo realizar no push, é colocá-lo com alta prioridade.
No display, eu recomendo colocar o PIN como V1 e marcar como Advanced.
Ok, agora basta você baixar a Library do Blynk no Github , adicionar o arquivo zip na sua IDE e inserir o código abaixo.
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>
#include <SimpleTimer.h>
int leitura;
int humidadeSolo = 0;
SimpleTimer timer;
WidgetLCD lcd(V1);
char auth[] = "suaChaveDeAuthAqui";
void setup()
{
Serial.begin(9600);
pinMode(A0,INPUT);
Blynk.begin(auth);
timer.setInterval(2000L, myTimerEvent);
}
void myTimerEvent()
{
lcd.clear();
leitura = analogRead(A0);
humidadeSolo = (leitura);
if(humidadeSolo < 300)
Serial.println(" Solo bem umido");
if((humidadeSolo >= 300) && (humidadeSolo < 700))
Serial.println(" Relativamente umido");
if((humidadeSolo >= 700) && (humidadeSolo < 1024))
Serial.println(" Solo seco");
}
void loop()
{
Blynk.run();
timer.run();
}
Link do sensor funcionando na prática.