Medidor PZEM-004 + ESP8266 & Plataforma IoT Node-RED & Modbus TCP/IP

En esta oportunidad integraremos nuestro medidor de potencia activa o consumo electrico, Pzem-004 de Peacefair con la plataforma integradora IoT Node-RED utilizada en tutoriales anteriores, utilizaremos un modulo ESP8266 configurado como Modbus TCP/IP esclavo, posteriormente visualizaremos las mediciones en Node-RED Dashboard para visualizar las 4 variables disponibles tales como potencia activa, consumo electrico acumulado, voltaje y corriente.

PZEM-004 + ESP8266 12E NodeMCU



Tutoriales Anteriores Recomendados

Instalacion de Plataforma Node-Red

En el siguiente tutorial se indicara como instalar Node-RED para linux y en caso de otros SO recomendamos Virtualbox.

Instalacion de Plataforma Node-Red

Actualizacion ESP8266 Industrial Modbus TCP IP V2.0

Hace mucho tiempo realice algunas pruebas de ESP8266 como esclavo Modbus TCP/IP, el siguiente tutorial se  puede tomar como antecedentes de las pruebas actuales.

Actualizacion ESP8266 Industrial Modbus TCP IP V2.0

Medidor de consumo electrico Peacefair PZEM 004 + ESP8266 & Arduino Nano

Si quieren conocer mas sobre El medidor de consumo electrico  Pzem-004 de Peacefair recomiendo el siguiente tutorial:

Características, conexiones Arduino yESP8266.

Medidor de consumo electrico Peacefair PZEM 004 + ESP8266 & Arduino Nano



Pruebas Realizadas

Realizaremos la medición de consumo eléctrico de una resistencia para calentar agua, consume aproximadamente 920 Watts y visualizaremos las mediciones en un dashboard creado en Node-RED Dashboard y la comunicación implementado Modbus TCP/IP.

Materiales y donde comprarlos muy baratos!!

Otros Equipos Recomendados



Simple Test Meter PZEM-004 & ESP8266 Platform IoT Node-RED Dashboard Modbus TCP/IP

 

Conexiones

Nota: El medidor PZEM-004  requiere una adaptación para la comunicación a 3.3v, mayor información referencias abajo.

Codigo Arduino IDE

La rutina creada en Arduino IDE, el esp8266 realiza la lectura del  medidor PZEM-004  a través del puerto serial, de pruebas anteriores con Modbus TCP/IP se creo una rutina recortada para envió y recepción de Holding Registers.

Se han definido 4 variables en 5 Holding Registers:

  1. Vacio                     = Holding Register[0].
  2. Voltaje instantaneo   = Holding Register[1].
  3. corriente instantanea = Holding Register[2].
  4. potencia instantanea = Holding Register[3].
  5. potencia acumulada  = Holding Register[4].

Solucion rapida a envio de Float en Int

Los valores del medidor son tipo flotantes, los Holding Registers son Enteros de 16 bits, en este caso por practicidad simplemente multiplicando por 10 realizamos el envio del valor, en proximas pruebas realizaremos el envio en 2 enteros de 16bits.

 

Nota: Enlaces de descarga y/o github mas  abajo.



Node-RED

Se han descargarlos e instalado nodos utilizados en esta prueba, simplemente se deben buscar en la paleta de Node-RED “Manage palette”.

En este caso se recibe un Arreglo de 5 posiciones [0,1,2,3,4] la primera posicion en 0 y el resto contiene los valores de voltaje, Corriente, Potencia, Consumo Acumulado.

Utilizando algunos nodos Script se separan los valores y se realiza haciendo lo inverso de Arduino IDE se divide en 10 los valores  recibidos para convertirlos de Int a Float en los casos requeridos, técnicamente todo esto de realiza para la correcta visualizacion.

Nota: Enlaces de descarga y/o github mas  abajo.

Node-RED Dashboard

Paquete de visualización en tiempo real.

  • Vista desde PC

  • Vista desde Android

La resistencia consume aproximadamente 922 Vatios.





Conclusiones & Consideraciones

Bueno en esta oportunidad probé una alternativa a el conocido protocolo MQTT, esta versión Modbus TCP/IP funciono muy bien, claro tener en cuenta que esta aplicación solo funciona a nivel de nuestra RED local.

Estas aun son pruebas iniciales, dado que no he conectado multiples esclavos, supongo funcionara bien dado que Node-RED es el maestro, dependeria mas de la Maquina sobre la cual corra Node-RED ya sea un PC u otra plataforma como Raspberry pi o Beaglebone Black etc.

En esta implementacion no se debe utilizar el Puerto serial del ESP8266 dado que se utiliza para comunicar con el Medidor de Consumo electrico PZEM-004.

En proximas mejoras pendientes:

  • Actualizacion ESP8266 OTA
  • WifiManager
  • Servidor Web

Github/Descargas

Referencias



Leave a Reply