Wokwi y ESP32: Crea un monitor de producción solar DIY con protocolo Modbus
El auge de la energía solar fotovoltaica ha democratizado la generación eléctrica, pero monitorizar la producción en tiempo real sigue siendo un reto para muchos instaladores y aficionados. Con un ESP32 y el protocolo Modbus, es posible construir un sistema de monitorización asequible, personalizable y sin depender de plataformas cerradas. En esta guía completa, te enseñaremos a diseñar y simular tu propio monitor solar utilizando Wokwi, el popular simulador de IoT, y luego te daremos las claves para llevarlo al hardware real. Desde los fundamentos de Modbus hasta la visualización de datos en un dashboard local, cubriremos cada paso con detalle técnico.
Fundamentos de Modbus y ESP32 para monitorización solar
El protocolo Modbus, desarrollado en 1979 por Modicon, se ha convertido en el estándar de facto para la comunicación en entornos industriales y de automatización. En el contexto de la energía solar, la mayoría de los inversores y medidores de energía incluyen una interfaz Modbus RTU (RS-485) o Modbus TCP (Ethernet/Wi-Fi) que permite leer registros con datos como tensión, corriente, potencia y energía acumulada. El ESP32, con su doble núcleo, conectividad Wi-Fi y Bluetooth, y su bajo coste, es la plataforma ideal para actuar como puente entre el inversor y una red local o Internet.
Para implementar un monitor solar, necesitamos entender dos conceptos clave: los registros Modbus y el direccionamiento. Cada parámetro del inversor (por ejemplo, potencia actual) se almacena en uno o más registros de 16 bits. El ESP32, actuando como maestro Modbus, envía una solicitud de lectura al inversor (esclavo) y recibe los valores. Estos datos se procesan y se envían a un servidor MQTT, una base de datos local o directamente a una pantalla. La ventaja de usar Modbus es su universalidad: cualquier inversor que soporte el protocolo puede ser integrado sin importar la marca.
Hardware necesario para el monitor solar DIY
Para construir el monitor físico necesitarás los siguientes componentes:
- ESP32 (cualquier placa): El cerebro del sistema. Recomendamos un modelo con al menos 4 MB de flash y soporte para Wi-Fi.
- Módulo RS-485 (MAX485 o similar): Convierte las señales UART del ESP32 a RS-485, necesario para la comunicación Modbus RTU.
- Fuente de alimentación 5V: Para alimentar el ESP32 y el módulo RS-485.
- Cables y conectores RJ45 (opcional): Para conectar el bus RS-485 al inversor.
Simulación del monitor solar con Wokwi
Wokwi es una plataforma de simulación online que permite emular microcontroladores como el ESP32 junto con periféricos virtuales. Aunque no puede simular directamente un inversor real, podemos crear un dispositivo Modbus esclavo virtual que responda a las peticiones del ESP32. Esto es ideal para desarrollar y probar el código sin necesidad de hardware físico. A continuación, te mostramos cómo configurar la simulación paso a paso.
Configuración del proyecto en Wokwi
Primero, crea un nuevo proyecto en Wokwi seleccionando la placa ESP32. Luego, añade un dispositivo Modbus esclavo virtual. Wokwi no tiene un componente Modbus nativo, pero podemos simularlo usando un segundo ESP32 o un script Python externo. Para simplificar, usaremos un ESP32 adicional como esclavo. En el archivo diagram.json, define dos ESP32 conectados por un bus serial (UART). El maestro leerá registros del esclavo cada 5 segundos.
El código del esclavo debe implementar un servidor Modbus RTU simple. Usaremos la librería ModbusRTU para Arduino. Define registros de retención (holding registers) que simulen los parámetros de un inversor: tensión (0x0000), corriente (0x0001), potencia (0x0002) y energía (0x0003-0x0004). Puedes hacer que los valores varíen aleatoriamente para simular la producción solar real.
| Registro | Dirección | Tipo | Descripción |
|---|---|---|---|
| 0x0000 | 40001 | UINT16 | Tensión (V) |
| 0x0001 | 40002 | UINT16 | Corriente (A) |
| 0x0002 | 40003 | UINT16 | Potencia (W) |
| 0x0003-0x0004 | 40004-40005 | UINT32 | Energía acumulada (Wh) |
Código del maestro ESP32 en Wokwi
El código del maestro debe inicializar la comunicación Modbus, conectarse al Wi-Fi (simulado) y enviar los datos a un servidor MQTT. En Wokwi, puedes usar un broker MQTT público como test.mosquitto.org. A continuación, un fragmento del código principal:
#include <ModbusRTU.h>
#include <WiFi.h>
#include <PubSubClient.h>
ModbusRTU mb;
WiFiClient espClient;
PubSubClient client(espClient);
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* mqtt_server = "test.mosquitto.org";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setServer(mqtt_server, 1883);
mb.begin(&Serial2); // RS-485 en UART2
mb.setTimeout(1000);
}
void loop() {
if (!client.connected()) reconnect();
client.loop();
uint16_t voltage = mb.readHreg(1, 0); // esclavo ID 1, registro 0
uint16_t current = mb.readHreg(1, 1);
uint16_t power = mb.readHreg(1, 2);
char payload[50];
snprintf(payload, 50, "{\"V\":%d,\"A\":%d,\"W\":%d}", voltage, current, power);
client.publish("solar/monitor", payload);
delay(5000);
}ModbusRTU de Arduino, que es fácil de usar y compatible con ESP32. Asegúrate de configurar correctamente los pines de UART2 (GPIO16 para TX, GPIO17 para RX) y el pin de control DE/RE del MAX485.Visualización de datos en tiempo real
Una vez que los datos llegan al broker MQTT, podemos visualizarlos en un dashboard local. Existen múltiples opciones: Node-RED, Grafana, o incluso una página web simple con JavaScript. La más sencilla para un proyecto DIY es Node-RED, que se ejecuta en una Raspberry Pi o en el mismo ESP32 si tiene suficiente memoria. Node-RED permite crear flujos visuales para procesar y mostrar los datos en paneles personalizados.
Para una solución más ligera, puedes programar el ESP32 para que sirva una página web con gráficos en tiempo real usando la librería ESPAsyncWebServer y Chart.js. El ESP32 actuará como servidor web y actualizará los datos mediante WebSockets. Esto elimina la necesidad de un ordenador externo y hace que el sistema sea completamente autónomo.
Errores comunes y solución de problemas
Al implementar un monitor Modbus con ESP32, es frecuente encontrarse con problemas de comunicación. Los más comunes son:
- Error de cableado RS-485: Verifica que los cables A y B estén correctamente conectados y que la terminación de 120 ohmios esté presente en ambos extremos del bus.
- Dirección de esclavo incorrecta: Cada inversor tiene una dirección Modbus predeterminada (normalmente 1). Consulte el manual del inversor y ajústela en el código.
- Velocidad de baudios incompatible: Asegúrate de que la velocidad de baudios del ESP32 coincida con la del inversor (9600, 19200, etc.).
Comparativa de alternativas de monitorización solar
| Solución | Coste | Personalización | Requiere Internet | Facilidad |
|---|---|---|---|---|
| ESP32 + Modbus DIY | Bajo | Total | Opcional | Media |
| Monitor comercial (Ej: SolarEdge) | Alto | Limitada | Sí | Alta |
| Raspberry Pi + Node-RED | Medio | Alta | Opcional | Media |
La solución DIY con ESP32 ofrece el mejor equilibrio entre coste y personalización. Es ideal para quienes tienen conocimientos básicos de programación y electrónica, y desean un sistema que se adapte exactamente a sus necesidades sin depender de servicios externos.
Preguntas frecuentes sobre monitor solar Modbus con ESP32
¿Qué inversores solares son compatibles con Modbus?
¿Puedo usar WiFi en lugar de RS-485?
¿Es necesario usar Wokwi para este proyecto?
¿Qué hago si el ESP32 no se conecta al inversor?
Conclusiones y plan de acción recomendado
Construir un monitor de producción solar con ESP32 y Modbus es un proyecto accesible que te permitirá tomar el control de tus datos energéticos. Hemos recorrido desde los fundamentos del protocolo hasta la simulación en Wokwi y la visualización en tiempo real. La flexibilidad del ESP32 te permite adaptar el sistema a tus necesidades: desde un simple dashboard local hasta la integración con Home Assistant o plataformas en la nube.
Este análisis técnico es independiente. No recibimos pagos de fabricantes para alterar valoraciones. Si realizas una compra a través de enlaces en este sitio, podríamos percibir una comisión de afiliación que ayuda a mantener el servidor activo, sin coste extra para ti.