Revista 100% Verde

Monitorizacion de liquidos via wifi desde su smartphone

Por Soloelectronicos @soloelectronico

Utilizando la placa WiFi NodeMCU-12E v3 ESP8266 y 2 sondas ultrasónicas de tipo HC-SR04 a prueba de agua , se puede medir el volumen de agua en 2 tanques de agua y ofrecer esa información de un modo gráfico y en tiempo real.

El sonar suena por la parte superior del agua, obteniendo la distancia en cm,calculando la profundidad del agua en cm y luego extrapolando el volumen de agua a litros. Toda la información se pasa por WiFi en la WLAN al servidor local (RPi3) que ejecuta el servidor local Blynk. Finalmente la información está disponible en un teléfono usando la aplicación Blynk registrada en el servidor local.

Es importante destacar que el el mapeo de los pines es diferente en estas placa frente a lo s pines de un Arduino ( los números de pin son generalmente números de GPIO)

Es este proyecto se usaran los típicos sensores ultrasónicos HC-SR04 estándar sensores que transmiten y reciben señales ultrasónicas , que en este caso deberán o bien impermeabilizarse para ser resistentes al agua e impermeables ( el aspecto es muy similar a las mismas unidades que se usan en los vehículos para detectar colisiones al aparcar ) o bien comprarlos ya estancos espaciales para ambientes húmedos, ( como en la foto).

Monitorizacion de liquidos  via wifi desde su smartphone

Concretamente este sensor se alimenta de DC 5 V( consumo 30mA) usando e emisión de frecuencia: 40 khz con una detección máxima distancia de 4.5 m y resolución cerca de 0.5 cm

Sus conexiones son 4:

  • VCC+ 5 V (fuente de alimentación positiva)
  • Trig (lado de control) RX
  • eco (lado receptor) TX
  • GND (negativo)

El uso de la ubicación disparador del IO TRIG puerto, pone el alto nivel de la señal de al menos 10us; el módulo automáticamente envía 8 trens de 40 KHz con detección automática si hay vuelta de señal.Una señal de vuelta se marca como un alto nivel de salida a través del puerto IO de ECO. El tiempo de duración de alto nivel ultrasónica es el del lanzamiento de volver.

La formula para calcular la distancia es la siguiente:

D(m) = tiempo de alto nivel * velocidad del sonido (los 340 M/S)) /2

Como vemos este módulo utiliza el método sencillo, un puerto de control con un 10US por encima de alto nivel, esperando un alto nivel de salida en el puerto de recepción. Una salida puede conducir el temporizador, de modo que cuando este puerto se pone la señal bajo puede leer el valor del temporizador, y esta vez para la ubicación del tiempo, se puede calcular la distancia de modo que así constantemente hay un ciclo de medicino

Estos sensores HCSR04 los conectamos a una placa WiFi ESP8266 NodeMCU y yna pequeña placa para la alimenticio de 3.3v del ESP8200

El esquema es bastante sencillo como podemos ver en la siguiente imagen:

Monitorizacion de liquidos  via wifi desde su smartphone

El total de compontes en resumen son los siguintes :

Para fines de prueba se puede usar un PC para alimentar el circuito ,pero con la idea de que cuando este ya programado funcione independiente , lo mejor es utilizar un pequeño conversor DC-DC de 3 v3 y asi usar cualquier fuente de alimentación de 220v/ 12v para alimentar el circuito (usando el coneversor como adptador de tension)

Tenga en cuenta que estas placas ESP12E funcionan con 3,3 voltios pero t ienen un pin de suministro de entrada de 5v (VIN) y también funcionan con el suministro de USB cuando están conectados a su PC. No suministre más de 5 voltios al pin VIN si lo usa.

La conexiones a usar son las siguientes :

  • Sensoring a Arduino GPIO5 (D1)
  • Sensor1 echo a Arduino GPIO4 (D2)
  • Sensor2 ping a Arduino GPIO14 (D5)
  • Sensor2 echo a Arduino GPIO12 (D6)

Estos sensores funcionan también a 3.3 voltios y dan un buen nivel de salida asi que no es necesario convertidores de salida . Conecte ambos VCC a los sensores Arduino 3v3 y c onecte ambos sensores GND a Arduino GND.

Puede usar un LED pero como se encenderá solo de 50mS cada 2 segundos, no merece la pena conectar una resistencia limitadora de corriente, (pero se puede agregar una resistencia 1 / 4W 470R si lo desea.). El Ánodo del led (pata larga) ira al Arduino GPIO13 (D7) y el Cátodo a Arduino GND

Tenga en cuenta que los cables de los sensores tienen cables coaxiales de 2 m de longitud., si necesita extender estoso pues u sar un viejo cable coaxial que tenga , asegúrandose de cubrir todas las uniones soldadas con termofluente.

Instalando el Software

Este monitor de nivel de agua usa su tarjeta ESP8266 en su teléfono a través de sus servidores.

El servidor de Blynk en la nube sirve su aplicación con la información en los widgets en el teléfono. Al registrarte con Blynk, recibe 2000 puntos de energía de modo que con e stos puntos se usan para 'comprar' widgets para su programa ( 2000 puntos son suficientes para construir esta aplicación de monitor de agua).

Otra opción es usar un servidor local ejecutándose en una Raspberry Pi, lo cual permite puntos ilimitados y una mejor seguridad y n o usando el servidor Blynk en absoluto,(es completamente independiente). La instalación y configuración de un servidor local está más allá del alcance de este post sobre todo porque h ay muchas instrucciones y tutoriales en la red para hacer esto comenzando con el sitio web de Blynk.

La versión final utiliza OTA para recibir actualizacion en el aire desde el wifi sin necesidad de sacar todo para actualizar el software ( veremos los cambios y métodos del software OTA más adelante).

Lo primero que necesitará es el Arduino IDE si aún no lo tiene.

Descargue la biblioteca Blynk aquí Biblioteca Obtenga tambien la aplicación del teléfono aquí Blynk , la descarga se encuentra en la parte inferior de la página. Siga las instrucciones en esa página para instalar la biblioteca. Blynk App . Se puede crear una cuenta para Blynk si desea usar la aplicación. Recuerde la dirección de correo electrónico de inicio de sesión que utiliza, la necesitará más adelante. Probablemente sea mejor usar su cuenta de correo electrónico todos los días.

También necesitará esta biblioteca: NewPing Esta es una excelente biblioteca para usar sus dispositivos. No hay necesidad de perder el tiempo con milisegundos, etc.

Estas instrucciones son para el software ESP8266:

  • Comenzando con 1.6.4, Arduino permite la instalación de paquetes de plataforma de terceros usando Boards Manager. Tenemos paquetes disponibles para Windows, Mac OS y Linux (32 y 64 bits).
  • Inicie Arduino y abra la ventana Archivo> Preferencias.
  • Ingrese " `http: // arduino.esp8266.com / stable / package_esp8266com_index.json"` en el campo * Additional Board Manager URLs *. Puede agregar varias URL, separándolas con comas.
  • Abra el Administrador de tableros desde Herramientas> Menú de la placa e instale la plataforma * esp8266 * (y no olvide seleccionar su placa 'NodeMCU 1.0 (Módulo ESP-12E)' desde Herramientas> Menú de la placa después de la instalación).
  • En el menú, seleccione Boceto> Incluir biblioteca> Administrar bibliotecas. Permitir que termine la descarga. Debería ver las bibliotecas de Blynk instaladas.
  • Para que su PC se comunique con el software USB to Serial de las placas Arduino debe instalar el controlador USB-UART CH341SER_win. Esto es necesario para todas las comunicaciones Arduino a través de USB. Obtengalo aqui

Código de prueba para la placa ESP8266

Comenzaremos con dos sensores que informan la información al monitor serie integrado en el IDE de Arduino. Aún no se informa al servidor Blynk, OTA o WiFi.

Haga doble clic en el archivoConecte su placa al cable USB, desde el menú 'water_code_1.in' a continuación, después de que Arduino IDE comience vaya a Archivo> 'guardar como' y guárdelo en su carpeta de bocetos. Se creará una carpeta con el archivo dentro. Confirme que tiene la placa correcta seleccionada, haga clic en el botón 'verificar' (botón muy a la izquierda en el IDE). Debe compilar sin error. IDE Herramientas> Puerto> COM n.

El puerto de comunicación correcto se puede encontrar simplemente desenchufando la placa y viendo qué puerto desaparece. Haga clic en el botón 'En el IDE seleccione Subir' en IDE Arduino y permita que termine de compilar y cargar. Herramientas> Monitor en serie

El LED d ebe parpadear cada 2 segundos y el monitor debe informar la distancia, la profundidad y los litros de agua de cada tanque durante 2 segundos, de forma similar a la imagen mostrada.

Monitorizacion de liquidos  via wifi desde su smartphone
e Estos sensores tienen un rango d aproximadamente 3 mtrs. de modo que están configurados a 3 mtrs en el software de todos modos.

Pruebe cada sensor moviéndolo dentro y fuera de un objeto sólido como la pared, debería ver las figuras cambiar en la ventana del monitor. A medida que la distancia aumenta, simula un nivel de agua más bajo.

Este es el codigo final :

//** CHANGE TO SUIT TANK DIMENSIONS
const int MAX_DISTANCE = 300; //max distance to measure
const int Diameter1 = 276; //internal Diameter of tank 1 cm
const int Diameter2 = 276; //internal Diameter of tank 2 cm
const int Depth1 = 265; //total depth of tank 1 cm , from sensor to base inside
const int Depth2 = 265; //total depth of tank 2 cm, from sensor to base inside

const unsigned int Period = 2000; //period between pings, in milliseconds. i.e 1 munute = 60,000. max 65535. Want longer? use unsigned long //** SENSOR PINS

const int PingPin1 = 5; // GPIO5, D1
const int EchoPin1 = 4; // GPIO4, D2
const int PingPin2 = 14; // GPIO14, D5
const int EchoPin2 = 12; // GPIO12, D6

BlynkTimer timer; //config timer

NewPing sonar[SONAR_NUM] = { // Sensor object array.
NewPing(PingPin1, EchoPin1, MAX_DISTANCE), // Each sensor's trigger pin, echo pin, and max distance to ping.
NewPing(PingPin2, EchoPin2, MAX_DISTANCE)
};

void sendSensorReadings()
{
//***********Readings Tank 1
Distance1 = sonar[0].ping_cm(); //get distance to the top of the water tank 1
if (Distance1 >= Depth1 || Distance1 == 0 ) Distance1 = Depth1; //check it does not go negative
WaterDepth1 = Depth1 - Distance1; //calculate the depth of the water
Litres1 = (Area1 * WaterDepth1) / 1000; //calculate the volume of the water as litres
delay(50);

//************Readings Tank 2
Distance2 = sonar[1].ping_cm(); //get distance to the top of the water tank 2
if (Distance2 >= Depth2 || Distance2 == 0) Distance2 = Depth2; //check it does not go negative
WaterDepth2 = Depth2 - Distance2; //calculate the depth of the water
Litres2 = (Area2 * WaterDepth2) / 1000; //calculate the volume of the water as liters

digitalWrite(13, HIGH); //flash the LED on D7, just to let us know it's running
delay(50);
digitalWrite(13, LOW);

//************************* can be commented out, test use only
Serial.println();
Serial.println();
Serial.println("Tank 1 water distance: " + String(Distance1)); //print depth
Serial.println("Tank 1 water depth: " + String(WaterDepth1)); //print depth
Serial.println("Tank 1 Litres: " + String(Litres1)); //print litres

Serial.println();
Serial.println("Tank 2 water distance: " + String(Distance2)); //print depth
Serial.println("Tank 2 water depth: " + String(WaterDepth2)); //print depth
Serial.println("Tank 2 Litres: " + String(Litres2)); //print litres
//***********************************************

} void setup() { pinMode(13, OUTPUT); //LED GPIO13 D7

//** can be commented out, test only
Serial.begin(115200); // Open serial console.
Serial.println();
//*******************************

void loop() { }

Código Final con WiFi y Blynk

Ahora vamos a conectarnos al servidor de Blynk. D escargue y abre el water_code_2.ino

En el IDE de Arduino, seleccione A rchivo> "guardar como " en su carpeta de bocetos.

Abra la aplicación Blynk, inicie sesión. Cree un nuevo proyecto, dispositivo = ESP8266, tipo de conexión = WiFi, configure el tema que prefiera. presione el Se enviará un token de autoridad a su cuenta de correo electrónico designada.P resione vaya a su correo electrónico , copie el token de autoridad, péguelo en su programa arduino donde dice botón Crear. OK y 'char auth [] = "YourAuthToken "

También ingrese su SSID y su contraseña. Ahora cárgalo en su ESP.

Ahora terminaremos el proyecto Blynk viendo como configurar la aplicación.

Configuración del programa de aplicación Blynk

Monitorizacion de liquidos  via wifi desde su smartphone

Entre en su app movil Blync e introduzca sus credenciales de acceso. Siga los siguientes pasos para configurar la aplicación para la medición de los niveles de dos tanques

  • Presione + en la parte superior de la pantalla en la aplicación, desplázese hacia abajo y presiona Value Display. Haga esto 4 veces
  • Presione + en la parte superior de la pantalla en la aplicación, desplázese hacia abajo y presiona NivelV. Haga esto dos veces
  • Presione + en la parte superior de la pantalla en la aplicación, desplázesee hacia abajo y presiona SuperChart.
  • Diseñe los widgets como en la imagen. Una pulsación larga en el widget le da identificadores para redimensionarlos.
  • Colócalos como mejor le parezca.
  • Presione la primera Pantalla de valor (arriba a la izquierda), asígnele el nombre Profundidad 1, seleccione V1, 0 a 300 y PULSE
  • Presione la segunda pantalla de valores, nombre Profundidad 2, seleccione V4, 0 a 300 y PUSH
  • Presione la tercera pantalla de valores (2 abajo a la izquierda), nombre Liters 1, seleccione V2, 0 a 9999 y PUSH
  • Presione la cuarta pantalla de valores, nombre Liters 2, seleccione V5, 0 a 9999 y PUSH
  • Presione el nivel vertical izquierdo, nómbrelo Nivel 1, seleccione V3, 0 a 1600, APAGADO y EMPUJE
  • Presione el nivel Vertical derecho, nómbrelo Nivel 2, seleccione V6, 0 a 1600, APAGADO y PULSE
  • Presione SuperChart, Litros 1 y Litros 2.
  • Presione el ícono (flujo de datos) al lado de Nombre, PIN = V3, interruptor deslizante = VALORES, minn = 0, máximo = 1600
  • Presione el ícono (secuencia de datos) al lado del segundo nombre, PIN = V6, interruptor deslizante = VALORES, min = 0, máximo = 1600

Puede jugar con las otras configuraciones para adaptarlas a sus preferencias. Para eliminar un widget, arrástrelo a la derecha de la pantalla.

Si todo se ve bien, presione la esquina superior derecha de la pantalla. Si su Arduino se está ejecutando, debería ver los mismos números (excepto la distancia) que en el monitor de serie.

Como se puede ver en la imagen anterior de la app movil de Blync debe tener en cuenta que debe ajustar el valor real de Profundidad1 y Profundidad2 en la app , pero también deberá reflejar los valores correspondientes en el codigo de Arduino para calcular el volumen par lo cual es importante no olvidar este detalle.

En el ejemplo los depósitos son circulares de modo que hay especificar tanto el diámetro como la profundidad:

Monitorizacion de liquidos  via wifi desde su smartphone

También debe señalar que estos sensores tienen un rango mínimo de 20 cm, lo cual se debe a que el transmisor y el receptor comparten la misma distancia.

Configurar la actualización por OTA

Monitorizacion de liquidos  via wifi desde su smartphone

OTA o ' Over The Air ' es una característica realmente útil, especialmente en este caso donde ESP está dentro de una caja y afuera.

Este es un proceso bastante simple:

  1. El cargador de arranque OTA se carga primero en la placa.
  2. La placa se reinicia presionando el botón de reinicio en la placa.
  3. Su nuevo código para el proyecto de tanque de agua que contiene las adiciones de OTA a su placa por USB.

Las cargas futuras se logran seleccionando el puerto WiFi en Herramientas> Puerto.

Vaya a Archivo> Ejemplos> ArduinoOTA> BasicOTA

El programa se cargará, ingrese su nombre de red y contraseña en el código. Suba esto a su placa. Ahora presione el botón de reinicio en el tablero.

Regrese a su programa de tanque de agua y vea los 3 lugares que se muestran en las imágenes, estos son necesarios para la carga de OTA.

Suba esto a su placa , usando USB serial.

Si mira en Herramientas> Puerto en IDE Arduino, verá un nuevo puert o. Tendrá 'esp8266', la ID de la placa y la dirección IP de la placa.

Para una carga futura, use este puerto, sin necesidad de una conexión serial USB.

La placa ahora puede ser cargada por otros medios , es decir por wifi sin tener que llevar el pc y conectarlo por USB.

Montaje final

Monitorizacion de liquidos  via wifi desde su smartphone

Puede montar el ESP8266, tanto las placas ultrasónicas como el convertidor DC-DC en la caja con clasificación IP66, ya que estará expuesto a los elementos. Si usa conectores de cable hembra-hembra, mucho mejor. Es interesante m ontar el convertidor CC- CC en una posición donde el conector de alimentación pueda enchufarse desde el exterior.

También se deben tome todas las conexiones de alimentación y tierra a esta placa para evitar los bucles de tierra usando se 3.3 voltios para todo.

Es interesante hacer un agujero para el LED, e intentar ajustarlo para que no se necesite adhesivo.

Conecte todo y asegúrese de que todo sea resistente a la intemperie

Verifique todo, especialmente el cableado de alimentación. Enchufe la alimentación y conéctelo a la caja, conecte los sensores y enciéndalo. No verá nada en el monitor de serie, pero consulte la aplicación de su teléfono mediante la aplicación Blynk

Mueva los sensores alrededor, las figuras deberían cambiar en la aplicación. Recuerde que una transmisión de ping e información solo se realiza cada 2 segundos.

Si sus tanques están a una distancia mayor, deberá usar un extensor WiFi.

Fuente Instructables.com


Volver a la Portada de Logo Paperblog