6. Monitor de Plantas¶
El propósito de este proyecto es crear un sistema inteligente de riego que detecte la temperatura actual, humedad, intensidad de luz y humedad del suelo, y muestre estos datos en Blynk.
Tan pronto como actives el interruptor de conmutación en Blynk Cloud, la bomba comenzará a funcionar y las plantas serán hidratadas.
Componentes Necesarios
Para este proyecto, necesitamos los siguientes componentes.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ELEMENTOS EN ESTE KIT |
ENLACE |
---|---|---|
3 in 1 Starter Kit |
380+ |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN DEL COMPONENTE |
ENLACE DE COMPRA |
---|---|
- |
|
- |
|
- |
1. Construir el Circuito
Nota
El módulo ESP8266 requiere una alta corriente para proporcionar un entorno operativo estable, así que asegúrate de que la batería de 9V esté conectada.
2. Editar el Tablero de Mandos
Los flujos de datos creados en los proyectos anteriores deben guardarse y se utilizarán también en este proyecto.
Para registrar la humedad del suelo, crea otro Datastream de tipo Virtual Pin en la página de Datastream. Configura el TIPO DE DATO a
Integer
y el MIN y MAX a0
y1024
.Ahora ve a la página de Wed Dashboard, arrastra 2 widgets Label y configura sus flujos de datos a V4 y V5 respectivamente; arrastra 2 widgets Gauge y configura sus flujos de datos para mostrar V6 y V7 respectivamente; y finalmente arrastra un widget Interruptor y configura su flujo de datos a V0.
3. Ejecutar el Código
Abre el archivo 6.plant_monitoring.ino
en la ruta 3in1-kit\iot_project\6.plant_monitoring
, o copia este código en Arduino IDE.
Nota
Aquí se utiliza la
DHT sensor library
, puedes instalarla desde el Library Manager.
Sustituye el
Template ID
,Device Name
yAuth Token
por los tuyos. También necesitas ingresar elssid
y lapassword
del WiFi que estás utilizando. Para tutoriales detallados, consulta 1.4 Conectando la placa R3 a Blynk.Después de seleccionar la placa y puerto correctos, haz clic en el botón Upoad.
Abre el monitor Serial(configura la tasa de baudios a 115200) y espera un aviso como una conexión exitosa.
Nota
Si aparece el mensaje
ESP is not responding
al conectar, sigue estos pasos.Asegúrate de que la batería de 9V esté conectada.
Restablece el módulo ESP8266 conectando el pin RST a GND durante 1 segundo, luego desenchúfalo.
Presiona el botón de reset en la placa R3.
A veces, puede ser necesario repetir la operación anterior 3-5 veces, por favor ten paciencia.
De vuelta en Blynk, verás la temperatura actual, humedad, intensidad de luz y humedad del suelo. Puedes permitir que la bomba riegue las plantas si es necesario haciendo clic en el widget de Control de Botón.
Si quieres usar Blynk en dispositivos móviles, consulta ¿Cómo usar Blynk en dispositivos móviles?.
¿Cómo funciona?
Este BLYNK_WRITE
hace que el widget Switch de Blynk inicie la bomba cuando está ENCENDIDO y la apague cuando está APAGADO.
BLYNK_WRITE(V0)
{
if(param.asInt()==1){
digitalWrite(pumpA,HIGH);
}else{
digitalWrite(pumpA,LOW);
}
}
Estas tres funciones se utilizan para obtener la temperatura ambiental actual, humedad, intensidad de luz y humedad del suelo.
int readMoisture(){
return analogRead(moisturePin);
}
int readLight(){
return analogRead(lightPin);
}
bool readDHT() {
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
humidity = dht.readHumidity();
// Read temperature as Celsius (the default)
temperature = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return false;
}
return true;
}
Con el Timer
de Blynk, la temperatura ambiente, humedad, intensidad de luz y humedad del suelo se obtienen cada segundo y se envían al flujo de datos en Blynk Cloud, desde donde los widgets muestran los datos.
void myTimerEvent()
{
bool chk = readDHT();
int light = readLight();
int moisture = readMoisture();
if(chk){
Blynk.virtualWrite(V4,humidity);
Blynk.virtualWrite(V5,temperature);
}
Blynk.virtualWrite(V6,light);
Blynk.virtualWrite(V7,moisture);
}