Come abilitare i servizi di piattaforma cloud per un BMS senza modulo WiFi
Quale problema stiamo risolvendo?
Molti sistemi di gestione batteria (BMS) hanno solo interfacce di comunicazione cablate come RS485 o CAN, senza WiFi integrato. Ciò significa che puoi visualizzare i dati solo stando vicino alla batteria e collegando un cavo – nessun monitoraggio remoto.
L'obiettivo di questo tutorial è utilizzare un modulo ESP32 a basso costo per trasferire i dati del BMS su una piattaforma cloud, in modo da poter controllare lo stato della batteria da qualsiasi luogo con accesso a Internet e persino ricevere allarmi di guasto.
Dopo aver completato questo tutorial, padroneggerai:
-
Selezione dell'hardware e cablaggio
-
Accesso diretto alla rete locale (semplice ma limitato)
-
Costruzione di un server cloud per un vero monitoraggio remoto
1. Conoscenze di base (Terminologia)
-
BMS – Sistema di Gestione Batteria; monitora tensione, corrente e temperatura e protegge la batteria.
-
RS485 – Una robusta interfaccia di comunicazione cablata industriale, solitamente con linee A e B.
-
Protocollo Modbus – Il "linguaggio" utilizzato da molti BMS; ad esempio, la tensione può essere ottenuta leggendo uno specifico "indirizzo di registro". Forniremo i comandi di lettura dettagliati in seguito.
-
ESP32 – Un microcontrollore a basso costo con WiFi e Bluetooth. Funge da "traduttore", convertendo i dati RS485 del BMS in segnali WiFi.
-
MQTT – Un protocollo di messaggistica leggero, ideale per i dispositivi IoT per inviare dati a un server.
2. Preparazione dell'hardware: Tutto ciò che serve
2.1 Elenco hardware principale
| Hardware | Requisito chiave | Motivo |
|---|---|---|
| Modulo ESP32 | Scegliere un modello con connettore per antenna esterna, come ESP32‑S3 (N16R8) | L'armadio di accumulo energetico è un involucro metallico che blocca i segnali dell'antenna interna. Serve un'antenna esterna per far uscire il segnale WiFi. |
| Modulo TTL-RS485 | Con controllo automatico del flusso; si raccomanda di tipo industriale con isolamento | Il controllo automatico del flusso commuta automaticamente tra trasmissione/ricezione, evitando conflitti di comunicazione. L'isolamento protegge contro le interferenze di modo comune che possono bruciare i chip. |
| Modulo di alimentazione isolato | es. B0505S‑1W | Può esserci una differenza di tensione tra la massa del BMS e la massa dell'ESP32. Senza isolamento, i dati possono essere corrotti, o peggio, l'ESP32 può essere bruciato, o il campionamento del BMS può essere disturbato. |
| Modulo step-down DC‑DC | Ampio intervallo di tensione di ingresso, come LM2596 o MP1584EN | L'alimentazione ausiliaria della batteria è solitamente 12V–60V e deve essere ridotta a 5V per alimentare l'ESP32. |
Se "controllo automatico del flusso" suona confuso, è sufficiente dire al venditore che hai bisogno di un "modulo TTL-RS485 con controllo automatico del ricetrasmettitore".
Modulo TTL-RS485:

Perché raccomandare in particolare l'ESP32‑S3 (N16R8)?
-
Fino a 45 GPIO, in grado di gestire due interfacce UART simultaneamente (una per il BMS e una per un inverter).
-
Core LX7 a 240 MHz, che fornisce maggiore potenza di calcolo – utile se in seguito desideri eseguire previsioni sulla durata della batteria o analisi armoniche FFT.
-
Il connettore per antenna esterna garantisce un segnale WiFi affidabile anche all'interno di un armadio metallico.
Modulo ESP32‑S3:

2.2 Logica di cablaggio (seguire esattamente)
-
Cablaggio di comunicazione:
Linee BMS RS485 A e B → morsetti A e B del modulo TTL-RS485 → TX del modulo a ESP32 GPIO16 (RX2), RX del modulo a ESP32 GPIO17 (TX2).
Tutti i dispositivi devono condividere una massa comune (GND). VCC del modulo a 5V o 3,3V (secondo le sue specifiche). -
Cablaggio di alimentazione:
Batteria P+ e P− → ingresso del modulo step-down ad ampio ingresso → uscita 5V → ingresso del modulo di alimentazione isolato (B0505S) → uscita 5V isolata → pin 5V e GND dell'ESP32.
Nota: Scollegare sempre l'alimentazione prima del cablaggio, ricontrollare la polarità e non omettere mai l'isolamento dell'alimentazione.
3. Soluzione Uno: Connessione LAN diretta (veloce da testare, ma non una soluzione a lungo termine)
Questo approccio trasforma l'ESP32 in un piccolo server web. Puoi visualizzare i dati della batteria aprendo un browser su un telefono connesso alla stessa rete WiFi.
Passaggio 1: Connessione hardware
Completa il cablaggio come descritto in "Preparazione dell'hardware".
Passaggio 2: Scrivere il codice MicroPython
(Forniremo il documento del protocollo Modbus BMS) Il codice fa tre cose:
-
Si connette al tuo WiFi.
-
Legge periodicamente i registri del BMS (ad esempio, la tensione è memorizzata all'indirizzo 0x1300).
-
Incorpora una semplice pagina HTML per visualizzare i valori letti.
Userai l'IDE Thonny per flashare il codice sull'ESP32. (Thonny è spiegato in dettaglio più avanti.)
Passaggio 3: Visualizzare sul telefono
Nel monitor seriale di Thonny, vedrai l'indirizzo IP assegnato all'ESP32 dopo la connessione al WiFi, ad es. 192.168.1.50. Connetti il telefono allo stesso WiFi, apri un browser e inserisci quell'indirizzo IP per vedere la pagina dei dati della batteria.
Gravi carenze di questo approccio (Perché dobbiamo passare al cloud)
-
Visualizzabile solo a casa: Nessun accesso una volta usciti, a meno che non si configuri il port forwarding sul router (molto insicuro).
-
Nessun dato storico: L'ESP32 ha una memoria estremamente limitata; non può memorizzare anni di dati, non è possibile generare report mensili e non è possibile scoprire cosa ha causato uno scatto notturno poiché non esiste un registro guasti.
-
Blocchi con più utenti: Se due o tre persone aprono la pagina contemporaneamente, l'ESP32 potrebbe esaurire la memoria e riavviarsi.
-
Nessun allarme proattivo: Se la temperatura della batteria è troppo alta o la differenza di tensione delle celle supera i limiti, non può inviarti una notifica push. Se non controlli attivamente la pagina, non saprai che qualcosa non va.
Pertanto, abbiamo bisogno di una vera soluzione server.
4. Soluzione Due: Architettura server cloud (La soluzione definitiva)
Panoramica dell'architettura:
BMS —[RS485]—> ESP32 —[WiFi/MQTT]—> Server Cloud (EMQX Message Broker) —> Script Python —> Database MySQL —> Visualizzazione Web/App
L'ESP32 raccoglie e carica solo i dati; l'archiviazione dei dati e la visualizzazione web sono gestite da un server professionale.
Passaggio 1: Acquistare un server cloud
-
Sistema operativo: Ubuntu 20.04 o 22.04 LTS (migliore compatibilità Python e più stabile per BT Panel).
-
Importante: Subito dopo l'acquisto, aprire le seguenti porte nel firewall (gruppo di sicurezza) del proprio fornitore cloud:
-
1883 (porta MQTT predefinita)
-
18083 (dashboard EMQX)
-
8888 (accesso BT Panel)
-
3306 (MySQL, se è necessaria la gestione remota)
-
80 e 443 (servizi Web)
-
Passaggio 2: Ambiente di sviluppo locale – IDE Thonny
Thonny è uno strumento eccellente per lo sviluppo MicroPython; è usato per flashare il firmware, caricare il codice e visualizzare i log in tempo reale dell'ESP32.
-
Scaricare e installare Thonny.
-
Aprire Thonny, fare clic sul selettore interprete in basso a destra e scegliere "MicroPython (ESP32)".
-
Se l'ESP32‑S3 non viene riconosciuto, andare su "Run → Select Interpreter", fare clic su "Install or update MicroPython" e selezionare il firmware S3 corrispondente da flashare.
Passaggio 3: Installare il software richiesto sul server
Usiamo BT Panel (Baota Panel) per semplificare la gestione del server.
3.1 Installare BT Panel
In base al sistema del server (Ubuntu), ottenere il comando di installazione dal sito ufficiale BT ed eseguirlo via SSH sul server.
3.2 Installare i plugin necessari in BT Panel
Accedere al backend di BT Panel, andare nell'"App Store" e installare:
-
Docker Manager – per distribuire rapidamente EMQX (broker di messaggi MQTT).
-
Python Project Manager – trasforma lo script di elaborazione dati Python in un servizio di sistema che si riavvia automaticamente in caso di crash.
-
MySQL 5.7+ – per memorizzare i dati storici della batteria.
-
Nginx – usato come proxy inverso per le pagine web e per ospitare i file firmware OTA.
Passaggio 4: Distribuire EMQX (Broker MQTT) con Docker
In BT Panel, aprire Docker Manager, cercare emqx, usare l'immagine ufficiale per creare un container e mappare le porte 1883 e 18083.
Accedere a //ip-del-tuo-server:18083 per entrare nella dashboard di EMQX e creare un nome utente e una password che l'ESP32 userà per connettersi.
Passaggio 5: Scrivere lo script di elaborazione dati cloud
Sul tuo PC o direttamente sul server, scrivi uno script Python che:
-
Usi la libreria
paho-mqttper ascoltare i dati della batteria ricevuti da EMQX. -
Analizzi i dati e li memorizzi nel database MySQL.
-
Posso essere esteso con
FastAPIper fornire endpoint API per pagine web o future app mobili.
Installare le librerie Python richieste (nel terminale del server o in Python Project Manager):
pip install paho-mqtt pymysql fastapi uvicorn
Passaggio 6: Codice ESP32 (MicroPython)
Ti forniremo il documento del protocollo Modbus del BMS. Basandoti su di esso, scrivi il codice ESP32 per:
-
Connettersi al WiFi.
-
Connettersi al server MQTT (usando l'IP pubblico del server, la porta, il nome utente e la password).
-
Leggere periodicamente i dati RS485 (tensione, corrente, temperatura, ecc.).
-
Impacchettarli in JSON e pubblicarli su un topic MQTT specificato.
Salva il codice come main.py e caricalo sull'ESP32 usando Thonny (questo lo fa eseguire automaticamente all'accensione).
Passaggio 7: Visualizzazione front-end
Puoi usare Nginx per ospitare una pagina HTML che chiami l'interfaccia FastAPI con JavaScript per realizzare dashboard di monitoraggio in tempo reale e grafici storici. Questa parte può essere sviluppata su misura secondo le tue esigenze o costruita con strumenti dashboard già pronti.
5. Effetti del sistema e riepilogo dei vantaggi
Dopo aver completato la distribuzione sopra descritta, avrai:
-
Accesso da qualsiasi luogo: Controlla lo stato del tuo sistema di accumulo energetico ovunque tu abbia Internet.
-
Database storico: Ogni registrazione di tensione, corrente e guasto è memorizzata in MySQL, consentendo report giornalieri/mensili e tracciamento dei guasti.
-
Alta concorrenza e stabilità: I servizi MQTT e web di livello server possono gestire più utenti simultanei senza problemi.
-
Allarmi proattivi: Scrivi regole nello script cloud per notificarti attivamente via email, SMS o notifica push dell'app quando i dati sono anomali.
-
Stabilità di grado industriale: Il design anti-interferenza dell'ESP32‑S3, l'antenna esterna e l'isolamento dell'alimentazione garantiscono un funzionamento affidabile a lungo termine all'interno di un armadio metallico.
-
Manutenzione facile: Thonny + BT Panel riducono notevolmente la difficoltà degli aggiornamenti del firmware e della gestione del server, facilitando l'iterazione delle funzionalità future.
-
Archivio completo del ciclo di vita: Viene creato un registro sanitario cloud per ogni pacco batteria, fornendo dati a prova di manomissione per la valutazione degli asset e le politiche di garanzia.
Partendo da zero, segui semplicemente questo tutorial passo dopo passo e potrai trasformare un BMS tradizionale senza WiFi in un moderno dispositivo di accumulo energetico IoT. Questa non è solo una pratica tecnica, ma un passo fondamentale verso la gestione intelligente dell'energia. Quali sono i vantaggi? Scopri il Smart BMS con WiFi.
Se durante il processo incontri elementi o termini sconosciuti, non esitare a contattare il team di ingegneri Seplos.
Freddo vs. Calore: Qual è il peggiore per la tua batteria di accumulo di energia?
Da hardware ad asset intelligente: perché il vostro sistema di accumulo energetico deve avere un BMS WiFi Seplos
For more questions, please
contact us