Tabla de contenido:

Lea el medidor de gas y electricidad (belga / holandés) y cárguelo en Thingspeak: 5 pasos
Lea el medidor de gas y electricidad (belga / holandés) y cárguelo en Thingspeak: 5 pasos

Video: Lea el medidor de gas y electricidad (belga / holandés) y cárguelo en Thingspeak: 5 pasos

Video: Lea el medidor de gas y electricidad (belga / holandés) y cárguelo en Thingspeak: 5 pasos
Video: MARC MÁRQUEZ NOS SALUDA EN MOTO POR MADRID #marcmarquez #motogp #moto #rider #motos #honda #cbr 2024, Mes de julio
Anonim
Lea el medidor de electricidad y gas (belga / holandés) y cárguelo en Thingspeak
Lea el medidor de electricidad y gas (belga / holandés) y cárguelo en Thingspeak
Lea el medidor de electricidad y gas (belga / holandés) y cárguelo en Thingspeak
Lea el medidor de electricidad y gas (belga / holandés) y cárguelo en Thingspeak

Si está preocupado por su consumo de energía o simplemente es un poco nerd, probablemente quiera ver los datos de su nuevo y elegante medidor digital en su teléfono inteligente.

En este proyecto, obtendremos los datos actuales de un medidor digital de gas y electricidad belga u holandés y los cargaremos en Thingspeak. Estos datos incluyen el consumo e inyección de energía actual y diaria (si tiene paneles solares), los voltajes y corrientes, y el consumo de gas (si hay un medidor de gas digital conectado al medidor de electricidad). A través de una aplicación, estos valores se pueden leer en tiempo real en su teléfono inteligente.

Funciona para un medidor digital belga u holandés que sigue el protocolo DSMR (requisitos de medidor inteligente holandés), que deben ser todos los medidores recientes. Si vive en otro lugar, desafortunadamente, es probable que su medidor use otro protocolo. Así que me temo que este Instructable está un poco restringido regionalmente.

Usaremos el puerto P1 del medidor, que acepta un cable RJ11 / RJ12, conocido coloquialmente como cable telefónico. Asegúrese de que el instalador del medidor haya activado el puerto P1. Por ejemplo, para Fluvius en Bélgica, siga estas instrucciones.

Para procesar los datos y subirlos a Internet, utilizamos un ESP8266, que es un microchip barato con wifi incorporado. Solo cuesta algo como 2 dólares. Además, se puede programar utilizando el IDE de Arduino. Almacenamos los datos en la nube en Thingspeak, que es gratuito para un máximo de cuatro canales. Para este proyecto solo usamos un canal. Luego, los datos se pueden mostrar en su teléfono inteligente utilizando una aplicación como IoT ThingSpeak.

Partes:

  • Un ESP8266, como un nodemcu v2. Tenga en cuenta que el nodemcu v3 es demasiado ancho para una placa de pruebas estándar, por lo que prefiero el v2.
  • Un cable micro USB a USB.
  • Un cargador USB.
  • Un transistor NPN BC547b.
  • Dos resistencias de 10k y una resistencia de 1k.
  • Un conector de terminal de tornillo RJ12.
  • Una placa de pruebas.
  • Cables de puente.
  • Opcional: un condensador de 1nF.

En total, esto cuesta alrededor de 15 EUR en AliExpress o similar. La estimación tiene en cuenta que algunos componentes, como las resistencias, los transistores y los cables, vienen en cantidades mucho mayores de las que necesita para este proyecto. Entonces, si ya tiene un kit de componentes, será más barato.

Paso 1: Familiarización con el ESP8266

Elegí el NodeMCU v2, ya que no requiere soldadura y tiene una conexión micro USB que permite una fácil programación. La ventaja del NodeMCU v2 sobre el NodeMCU v3 es que es lo suficientemente pequeño como para caber en una placa de pruebas y dejar agujeros libres en el lateral para hacer las conexiones. Así que es mejor evitar NodeMCU v3. Sin embargo, si prefiere otra placa ESP8266, también está bien.

El ESP8266 se puede programar fácilmente usando el IDE de Arduino. Hay otros Instructables que explican esto en detalle, así que seré muy breve aquí.

  • Primero descargue el IDE de Arduino.
  • Segundo soporte de instalación para la placa ESP8266. En el menú Archivo - Preferencias - Configuración agregue la URL https://arduino.esp8266.com/stable/package_esp8266com_index.json a las URL adicionales de Board Manager. A continuación, en el menú Herramientas - Tablero - Administrador de tableros instale esp8266 por la comunidad esp8266.
  • En tercer lugar, seleccione la placa más cercana a su ESP8266. En mi caso elegí NodeMCU v1.0 (Módulo ESP 12-E).
  • Finalmente, seleccione en Herramientas - Tamaño de Flash, un tamaño que incluye SPIFFS, como 4M (1M SPIFFS). En este proyecto utilizamos el SPIFFS (SPI Flash File System) para almacenar valores energéticos diarios, de modo que no se pierdan si el ESP8266 pierde energía e incluso cuando se reprograma.

¡Ahora tenemos todo listo para programar el ESP8266! Discutiremos el código real en un paso posterior. Primero crearemos una cuenta de Thingspeak.

Paso 2: Cree una cuenta y un canal de Thingspeak

Vaya a https://thingspeak.com/ y cree una cuenta. Una vez que haya iniciado sesión, haga clic en el botón Nuevo canal para crear un canal. En la configuración del canal, complete el nombre y la descripción como desee. A continuación, nombramos los campos del canal y los activamos haciendo clic en las casillas de verificación a la derecha. Si usa mi código sin cambios, los campos son los siguientes:

  • Campo 1: consumo máximo hoy (kWh)
  • Campo 2: consumo fuera de horas pico hoy (kWh)
  • Campo 3: inyección máxima hoy (kWh)
  • Campo 4: inyección fuera de horas pico hoy (kWh)
  • Campo 5: consumo de corriente (W)
  • Campo 6: inyección de corriente (W)
  • Campo 7: consumo de gas hoy (m3)

Aquí, pico y no pico se refieren a la tarifa eléctrica. En los campos 1 y 2, el consumo se refiere al consumo neto de electricidad hoy: consumo de electricidad hoy en el período tarifario desde la medianoche menos la inyección de electricidad (producida por paneles solares) hoy en el período tarifario desde la medianoche con un mínimo de cero. Esto último significa que si hubo más inyección que consumo hoy el valor es cero. Asimismo, la inyección en los campos 3 y 4 se refiere a la inyección neta de electricidad. Los campos 5 y 6 indican el consumo neto y la inyección en el momento actual. Finalmente, el campo 7 es el consumo de gas desde la medianoche.

Para referencia futura, escriba el ID del canal, la clave de API de lectura y la clave de API de escritura, que se pueden encontrar en el menú de claves de API.

Paso 3: construcción del circuito electrónico

Construyendo el circuito electrónico
Construyendo el circuito electrónico
Construyendo el circuito electrónico
Construyendo el circuito electrónico

Leímos el medidor de electricidad usando el puerto P1, que toma un cable RJ11 o RJ12. La diferencia es que el cable RJ12 tiene 6 cables mientras que el RJ11 tiene solo 4. En este proyecto no alimentamos el ESP8266 desde el puerto P1, por lo que en realidad solo necesitamos 4 cables, por lo que un RJ11 sería suficiente.

Usé la ruptura RJ12 que se muestra en la imagen. Es un poco ancho y no hay mucho espacio alrededor del puerto P1 en mi medidor. Encaja, pero está apretado. Alternativamente, puede usar un cable RJ11 o RJ12 y quitar el encabezado en un extremo.

Si sostiene la ruptura como en la imagen, los pines están numerados de derecha a izquierda y tienen el siguiente significado:

  • Pin 1: Fuente de alimentación de 5 V
  • Pin 2: Solicitud de datos
  • Pin 3: Tierra de datos
  • Pin 4: no conectado
  • Pin 5: línea de datos
  • Pin 6: tierra de potencia

El pin 1 y el pin 6 podrían usarse para alimentar el ESP8266, pero no lo he probado. Tendría que conectar el Pin 1 a Vin del ESP8266, por lo que el regulador de voltaje interno de la placa se usa para reducir el voltaje de 5V a los 3.3V que acepta el ESP8266. Así que no lo conecte al pin de 3.3V, porque eso podría dañar el ESP8266. Además, la alimentación desde el puerto P1 con el tiempo agotaría la batería del medidor digital.

La configuración del pin 2 alto indica al medidor que envíe telegramas de datos cada segundo. Los datos reales se envían a través del Pin 5 con una velocidad en baudios de 115200 para un medidor digital moderno (DSMR 4 y 5). La señal se invierte (la baja es 1 y la alta es 0). Para un tipo más antiguo (DSMR 3 e inferior), la velocidad es de 9600 baudios. Para tal medidor, debe cambiar la velocidad en baudios en el código de firmware del siguiente paso: cambie la línea Serial.begin (115200); en setup ().

El papel del transistor NPN es doble:

  • Para invertir la señal para que el ESP8266 pueda entenderla.
  • Para cambiar el nivel lógico de 5V del puerto P1 a 3.3V esperado por el puerto RX del ESP8266.

Así que crea el circuito electrónico en la placa como en el diagrama. El condensador aumenta la estabilidad, pero también funciona sin él.

Deje de conectar el pin RX hasta que haya programado el ESP8266 en el siguiente paso. De hecho, el pin RX también es necesario para comunicarse a través del USB entre el ESP8266 y su computadora.

Paso 4: cargue el código

He hecho que el código esté disponible en GitHub, es solo un archivo: P1-Meter-Reader.ino. Simplemente descárguelo y ábralo en el IDE de Arduino. O puede seleccionar Archivo - Nuevo y simplemente copiar / pegar el código.

Hay cierta información que debe completar al principio del archivo: el nombre y la contraseña de la WLAN que se usará, y la ID del canal y la clave API de escritura del canal ThingSpeak.

El código hace lo siguiente:

  • Lee un telegrama de datos del contador cada UPDATE_INTERVAL (en milisegundos). El valor predeterminado es cada 10 segundos. Normalmente, hay un telegrama de datos desde el medidor cada segundo, pero configurar la frecuencia en alta sobrecargará el ESP8266 por lo que ya no podrá ejecutar el servidor web.
  • Carga los datos de electricidad al canal de Thingspeak cada SEND_INTERVAL (en milisegundos). El valor predeterminado es cada minuto. Para decidir sobre esta frecuencia, tenga en cuenta que el envío de datos lleva algún tiempo (normalmente unos segundos) y que hay un límite en la frecuencia de actualización en Thingspeak para una cuenta gratuita. Son aproximadamente 8200 mensajes por día, por lo que la frecuencia máxima sería aproximadamente una vez cada 10 segundos si no usa Thingspeak para nada más.
  • Carga los datos de gas cuando cambia. Normalmente, el medidor actualiza los datos de consumo de gas solo cada 4 minutos aproximadamente.
  • El contador realiza un seguimiento del consumo total y los valores de inyección desde el inicio. Entonces, para obtener el consumo diario y la inyección, el código guarda los valores totales a la medianoche todos los días. Luego, estos valores se restan de los valores totales actuales. Los valores a la medianoche se almacenan en el SPIFFS (SPI Flash File System), que persiste si el ESP8266 pierde energía o incluso cuando se reprograma.
  • El ESP8266 ejecuta un mini servidor web. Si abre su dirección IP en su navegador, obtendrá una descripción general de todos los valores actuales de electricidad y gas. Estos son del telegrama más reciente e incluyen información que no se carga en Thingspeak, como voltajes y corrientes por fase. La configuración predeterminada es que la dirección IP la determina dinámicamente su enrutador. Pero es más conveniente utilizar una dirección IP estática, que siempre es la misma. En este caso, debe completar staticIP, gateway, dns y subnet en el código y descomentar la línea WiFi.config (staticIP, dns, gateway, subnet); en la función connectWifi ().

Después de realizar estos cambios, estará listo para cargar el firmware en el ESP8266. Conecte el ESP8266 a través del cable USB a su computadora y presione el icono con la flecha en el IDE de Arduino. Si no logra conectarse al ESP8266 intente cambiar el puerto COM en el menú Herramientas - Puerto. Si aún no funciona, es posible que tenga que instalar manualmente el controlador para el puerto COM virtual USB.

Paso 5: prueba

Después de cargar el firmware, desconecte el USB y conecte el cable RX del ESP8266. Recuerde, necesitábamos el canal RX del ESP8266 para cargar el firmware, por lo que no lo conectamos antes. Ahora conecte la salida RJ12 en el medidor digital y vuelva a conectar el ESP8266 a su computadora.

En el IDE de Arduino, abra Serial Monitor a través del menú Herramientas y asegúrese de que esté configurado en 115200 baudios. Si tiene que cambiar la velocidad en baudios, tal vez necesite cerrar y volver a abrir el Serial Monitor antes de que funcione.

Ahora debería ver la salida del código en Serial Monitor. Debe comprobar si hay algún mensaje de error. Además, debería poder ver los telegramas. Para mí se ven así:

/ FLU5 / xxxxxxxxx_x

0-0: 96.1.4 (50213) 0-0: 96.1.1 (3153414733313030313434363235) // Medidor de número de serie hexadecimal 0-0: 1.0.0 (200831181442S) // Marca de tiempo S: horario de verano (verano), W: no ahorro de luz diurna (invierno) 1-0: 1.8.1 (000016.308 * kWh) // Consumo neto pico total 1-0: 1.8.2 (000029.666 * kWh) // Consumo neto total fuera de pico 1-0: 2.8.1 (000138.634 * kWh) // Inyección neta pico total 1-0: 2.8.2 (000042.415 * kWh) // Inyección neta total fuera de pico 0-0: 96.14.0 (0001) // Tarifa 1: pico, 2: fuera de pico 1-0: 1.7.0 (00.000 * kW) // Consumo de corriente 1-0: 2.7.0 (00.553 * kW) // Inyección de corriente 1-0: 32.7.0 (235.8 * V) // Fase 1 voltaje 1-0: 52.7.0 (237.0 * V) // Fase 2 voltaje 1-0: 72.7.0 (237.8 * V) // Fase 3 voltaje 1-0: 31.7.0 (001 * A) // Corriente fase 1 1-0: 51.7.0 (000 * A) // Corriente fase 2 1-0: 71.7.0 (004 * A) // Corriente fase 3 0-0: 96.3.10 (1) 0-0: 17.0.0 (999.9 * kW) // Potencia máxima 1-0: 31.4.0 (999 * A) // Corriente máxima 0-0: 96.13.0 () // Mensaje 0-1: 24.1.0 (003) // otros dispositivos en M-bus 0-1: 96.1.1 (37464C4F32313230313037393338) // Número de serie gas mete r hexadecimal 0-1: 24.4.0 (1) 0-1: 24.2.3 (200831181002S) (00005.615 * m3) // Consumo total de marca de tiempo de gas! E461 // suma de comprobación CRC16

Si hay algún problema, puede verificar si tiene las mismas etiquetas y posiblemente tenga que cambiar el código analizando los telegramas en la función readTelegram.

Si todo funciona, ahora puede alimentar el esp8266 desde el cargador USB.

Instale la aplicación IoT ThingSpeak Monitor en su teléfono inteligente, complete la ID del canal y lea la clave API y listo.

Recomendado: