Cómo habilitar servicios de plataforma en la nube para un BMS sin módulo WiFi
¿Qué problema estamos resolviendo?
Muchos sistemas de gestión de baterías (BMS) solo tienen interfaces de comunicación por cable como RS485 o CAN, sin WiFi integrado. Esto significa que solo puede ver los datos junto a la batería conectando un cable, sin monitoreo remoto.
El objetivo de este tutorial es usar un módulo ESP32 de bajo costo para mover los datos del BMS a una plataforma en la nube, para que pueda verificar el estado de la batería desde cualquier lugar con acceso a Internet, e incluso recibir alarmas de fallos.
Después de completar este tutorial, dominará:
-
Selección de hardware y cableado
-
Acceso directo a la red local (simple pero limitado)
-
Construcción de un servidor en la nube para un verdadero monitoreo remoto
1. Conocimientos básicos (Terminología)
-
BMS – Sistema de Gestión de Baterías; monitorea voltaje, corriente y temperatura, y protege la batería.
-
RS485 – Una interfaz de comunicación por cable industrial robusta, generalmente con líneas A y B.
-
Protocolo Modbus – El "lenguaje" que usan muchos BMS; por ejemplo, el voltaje se puede obtener leyendo una "dirección de registro" específica. Proporcionaremos los comandos de lectura detallados más adelante.
-
ESP32 – Un microcontrolador de bajo costo con WiFi y Bluetooth. Actúa como "traductor", convirtiendo los datos RS485 del BMS en señales WiFi.
-
MQTT – Un protocolo de mensajería ligero, ideal para que los dispositivos IoT envíen datos a un servidor.
2. Preparación del hardware: Todo lo que necesita
2.1 Lista de hardware principal
| Hardware | Requisito clave | Razón |
|---|---|---|
| Módulo ESP32 | Elegir un modelo con conector de antena externa, como ESP32‑S3 (N16R8) | El gabinete de almacenamiento de energía es una caja metálica que bloquea las señales de antena interna. Se necesita una antena externa para sacar la señal WiFi. |
| Módulo TTL a RS485 | Con control de flujo automático; se recomienda de grado industrial con aislamiento | El control de flujo automático conmuta automáticamente entre transmisión/recepción, evitando conflictos de comunicación. El aislamiento protege contra interferencias de modo común que pueden quemar los chips. |
| Módulo de alimentación aislada | p. ej. B0505S‑1W | Puede haber una diferencia de voltaje entre la tierra del BMS y la tierra del ESP32. Sin aislamiento, los datos pueden corromperse, o peor, el ESP32 puede quemarse, o el muestreo del BMS puede verse afectado. |
| Módulo reductor DC‑DC | Amplio rango de voltaje de entrada, como LM2596 o MP1584EN | La alimentación auxiliar de la batería suele ser de 12V–60V y debe reducirse a 5V para alimentar el ESP32. |
Si "control de flujo automático" suena confuso, simplemente dígale al vendedor que necesita un "módulo TTL a RS485 con control automático de transmisión/recepción".
Módulo TTL a RS485:

¿Por qué recomendar especialmente el ESP32‑S3 (N16R8)?
-
Hasta 45 GPIO, capaz de manejar dos interfaces UART simultáneamente (una para el BMS y otra para un inversor).
-
Núcleo LX7 a 240 MHz, proporcionando más potencia de cálculo – útil si luego desea ejecutar predicciones de vida útil de la batería o análisis de armónicos FFT.
-
El conector de antena externa asegura una señal WiFi fiable incluso dentro de un gabinete metálico.
Módulo ESP32‑S3:

2.2 Lógica de cableado (seguir exactamente)
-
Cableado de comunicación:
Líneas A y B del BMS RS485 → bornes A y B del módulo TTL a RS485 → TX del módulo a ESP32 GPIO16 (RX2), RX del módulo a ESP32 GPIO17 (TX2).
Todos los dispositivos deben compartir una tierra común (GND). VCC del módulo a 5V o 3.3V (según su especificación). -
Cableado de alimentación:
Batería P+ y P− → entrada del módulo reductor de amplio rango → salida 5V → entrada del módulo de alimentación aislada (B0505S) → salida aislada 5V → pines 5V y GND del ESP32.
Nota: Siempre desconecte la alimentación antes de cablear, verifique dos veces la polaridad y nunca omita el aislamiento de la alimentación.
3. Solución Uno: Conexión LAN directa (rápida para probar, pero no una solución a largo plazo)
Este enfoque convierte el ESP32 en un pequeño servidor web. Puede ver los datos de la batería abriendo un navegador en un teléfono conectado a la misma red WiFi.
Paso 1: Conexión del hardware
Complete el cableado como se describe en "Preparación del hardware".
Paso 2: Escribir el código MicroPython
(Proporcionaremos el documento del protocolo Modbus del BMS). El código hace tres cosas:
-
Se conecta a su WiFi.
-
Lee periódicamente los registros del BMS (por ejemplo, el voltaje se almacena en la dirección 0x1300).
-
Inserta una página HTML simple para mostrar los valores leídos.
Usará el IDE Thonny para flashear el código en el ESP32. (Thonny se explica en detalle más adelante).
Paso 3: Ver en su teléfono
En el monitor serie de Thonny, verá la dirección IP asignada al ESP32 después de conectarse al WiFi, por ejemplo, 192.168.1.50. Conecte su teléfono al mismo WiFi, abra un navegador e ingrese esa dirección IP para ver la página de datos de la batería.
Graves deficiencias de este enfoque (Por qué necesitamos pasar a la nube)
-
Solo visible en casa: Sin acceso una vez que sale, a menos que configure el reenvío de puertos en su enrutador (muy inseguro).
-
Sin datos históricos: El ESP32 tiene un almacenamiento extremadamente limitado; no puede almacenar años de datos, no se pueden generar informes mensuales y no puede averiguar qué causó un disparo nocturno ya que no hay registro de fallos.
-
Fallas con múltiples usuarios: Si dos o tres personas abren la página al mismo tiempo, el ESP32 puede quedarse sin memoria y reiniciarse.
-
Sin alertas proactivas: Si la temperatura de la batería es demasiado alta o la diferencia de voltaje de las celdas excede los límites, no puede enviarle una notificación push. Si no revisa activamente la página, no sabrá que algo anda mal.
Por lo tanto, necesitamos una verdadera solución de servidor.
4. Solución Dos: Arquitectura de servidor en la nube (La solución definitiva)
Resumen de la arquitectura:
BMS —[RS485]—> ESP32 —[WiFi/MQTT]—> Servidor en la nube (EMQX Message Broker) —> Script Python —> Base de datos MySQL —> Visualización Web/App
El ESP32 solo recopila y sube datos; el almacenamiento de datos y la visualización web son manejados por un servidor profesional.
Paso 1: Comprar un servidor en la nube
-
Sistema operativo: Ubuntu 20.04 o 22.04 LTS (mejor compatibilidad con Python y más estable para BT Panel).
-
Importante: Inmediatamente después de la compra, abra los siguientes puertos en el firewall (grupo de seguridad) de su proveedor de nube:
-
1883 (puerto MQTT predeterminado)
-
18083 (panel de EMQX)
-
8888 (acceso a BT Panel)
-
3306 (MySQL, si se necesita gestión remota)
-
80 y 443 (servicios Web)
-
Paso 2: Entorno de desarrollo local – IDE Thonny
Thonny es una excelente herramienta para el desarrollo de MicroPython; se usa para flashear firmware, subir código y ver registros en tiempo real del ESP32.
-
Descargar e instalar Thonny.
-
Abrir Thonny, hacer clic en el selector de intérprete en la parte inferior derecha y elegir "MicroPython (ESP32)".
-
Si el ESP32‑S3 no es reconocido, vaya a "Run → Select Interpreter", haga clic en "Install or update MicroPython" y seleccione el firmware S3 correspondiente para flashear.
Paso 3: Instalar el software requerido en el servidor
Usamos BT Panel (Baota Panel) para simplificar la administración del servidor.
3.1 Instalar BT Panel
Según su sistema de servidor (Ubuntu), obtenga el comando de instalación del sitio web oficial de BT y ejecútelo a través de SSH en su servidor.
3.2 Instalar los plugins necesarios en BT Panel
Inicie sesión en el panel de BT, vaya a la "Tienda de aplicaciones" e instale:
-
Docker Manager – para desplegar rápidamente EMQX (bróker de mensajes MQTT).
-
Python Project Manager – convierte su script de procesamiento de datos Python en un servicio del sistema que se reinicia automáticamente si falla.
-
MySQL 5.7+ – para almacenar los datos históricos de la batería.
-
Nginx – usado como proxy inverso para páginas web y para alojar archivos de firmware OTA.
Paso 4: Desplegar EMQX (Bróker MQTT) con Docker
En BT Panel, abra Docker Manager, busque emqx, use la imagen oficial para crear un contenedor y asigne los puertos 1883 y 18083.
Acceda a //su-ip-del-servidor:18083 para entrar en el panel de EMQX y cree un nombre de usuario y contraseña que el ESP32 usará al conectarse.
Paso 5: Escribir el script de procesamiento de datos en la nube
En su PC o directamente en el servidor, escriba un script Python que:
-
Use la librería
paho-mqttpara escuchar los datos de la batería recibidos por EMQX. -
Analice los datos y los almacene en la base de datos MySQL.
-
Pueda extenderse con
FastAPIpara proporcionar endpoints de API para páginas web o futuras aplicaciones móviles.
Instale las librerías Python requeridas (en la terminal del servidor o en Python Project Manager):
pip install paho-mqtt pymysql fastapi uvicorn
Paso 6: Código ESP32 (MicroPython)
Le proporcionaremos el documento del protocolo Modbus del BMS. Basado en él, escriba el código del ESP32 para:
-
Conectarse al WiFi.
-
Conectarse al servidor MQTT (usando la IP pública de su servidor, puerto, nombre de usuario y contraseña).
-
Leer periódicamente los datos RS485 (voltaje, corriente, temperatura, etc.).
-
Empaquetarlos en JSON y publicarlos en un tópico MQTT especificado.
Guarde el código como main.py y súbalo al ESP32 usando Thonny (esto hace que se ejecute automáticamente al encender).
Paso 7: Visualización frontal
Puede usar Nginx para alojar una página HTML que llame a la interfaz FastAPI con JavaScript para lograr paneles de monitoreo en tiempo real y gráficos históricos. Esta parte puede desarrollarse a medida según sus necesidades o construirse con herramientas de panel listas para usar.
5. Efectos del sistema y resumen de beneficios
Después de completar el despliegue anterior, tendrá:
-
Acceso desde cualquier lugar: Verifique el estado de su sistema de almacenamiento de energía dondequiera que tenga Internet.
-
Base de datos histórica: Cada registro de voltaje, corriente y falla se almacena en MySQL, permitiendo informes diarios/mensuales y rastreo de fallas.
-
Alta concurrencia y estabilidad: Los servicios MQTT y web de grado servidor pueden manejar múltiples usuarios simultáneos sin problemas.
-
Alertas proactivas: Escriba reglas en el script de la nube para notificarle activamente por correo electrónico, SMS o notificación push de la aplicación cuando los datos sean anormales.
-
Estabilidad de grado industrial: El diseño antiinterferencias del ESP32‑S3, la antena externa y el aislamiento de potencia aseguran un funcionamiento fiable a largo plazo dentro de un gabinete metálico.
-
Mantenimiento fácil: Thonny + BT Panel reducen en gran medida la dificultad de las actualizaciones de firmware y la gestión del servidor, facilitando la iteración de futuras funciones.
-
Archivo completo del ciclo de vida: Se crea un registro de salud en la nube para cada paquete de baterías, proporcionando datos a prueba de manipulaciones para la evaluación de activos y políticas de garantía.
Comenzando desde cero, simplemente siga este tutorial paso a paso, y podrá actualizar un BMS tradicional sin WiFi a un moderno dispositivo de almacenamiento de energía IoT. Esto no es solo una práctica técnica, sino un paso clave hacia la gestión inteligente de la energía. ¿Cuáles son los beneficios? Conozca el Smart BMS con WiFi.
Si encuentra algún elemento o término desconocido durante el proceso, no dude en contactar al equipo de ingeniería de Seplos.
Frío vs. Calor: ¿Qué es peor para su batería de almacenamiento de energía?
De hardware a activo inteligente: por qué su sistema de almacenamiento de energía debe tener un BMS WiFi Seplos
For more questions, please
contact us