Construisez votre propre système de surveillance de batterie (BMS) pour véhicule électrique ou vélo électrique avec ESP32. Monitorage en temps réel, alertes SMS et dashboard web.

🔋 Moniteur DIY de Batterie Li-Ion pour VE : Projet ESP32 Complet

BMS DIY ESP32 Battery Monitor

Vous possédez un vélo électrique, une trottinette ou vous construisez votre propre véhicule électrique ? Dans ce tutoriel, nous allons créer un système de surveillance de batterie (BMS - Battery Management System) complet avec ESP32, capable de monitorer la tension, le courant, la température et d'envoyer des alertes en temps réel.

🎯 Caractéristiques du Projet

  • ✅ Surveillance tension cellule par cellule (6S, 12S, etc.)
  • ✅ Mesure du courant et calcul de l'autonomie restante
  • ✅ Capteurs de température DS18B20
  • ✅ Dashboard web en temps réel (ESP32 Web Server)
  • ✅ Alertes SMS via GSM (module SIM800L)
  • ✅ Logging des données sur carte SD
  • ✅ Protection contre surcharge/décharge profonde

📦 Liste des Composants

Composant Quantité Prix Approx.
ESP32 DevKit V1 1 $6
Module INA219 (Courant/Tension) 1-4 $3
Capteurs DS18B20 4 $2
Module SIM800L (Optionnel) 1 $8

Schéma de Câblage

ESP32 Pin    →    INA219
3.3V         →    VCC
GND          →    GND
GPIO 21      →    SDA
GPIO 22      →    SCL

ESP32 Pin    →    DS18B20
GPIO 4       →    DATA
3.3V         →    VCC
GND          →    GND
(avec résistance 4.7kΩ entre DATA et VCC)

💻 Code Arduino Complet

#include <Wire.h>
#include <Adafruit_INA219.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <WiFi.h>
#include <WebServer.h>

// Configuration WiFi
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

WebServer server(80);

// Capteurs
Adafruit_INA219 ina219;
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

// Variables
float voltage = 0;
float current = 0;
float power = 0;
float temperature = 0;

void setup() {
  Serial.begin(115200);
  
  // Init INA219
  ina219.begin();
  
  // Init DS18B20
  sensors.begin();
  
  // WiFi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  // Routes Web
  server.on("/", handleRoot);
  server.on("/api/data", handleData);
  server.begin();
}

void loop() {
  // Lecture capteurs
  voltage = ina219.getBusVoltage_V();
  current = ina219.getCurrent_mA();
  power = ina219.getPower_mW();
  
  sensors.requestTemperatures();
  temperature = sensors.getTempCByIndex(0);
  
  // Alertes
  if (voltage < 3.0) {
    sendAlert("Batterie faible!");
  }
  if (temperature > 60) {
    sendAlert("Surchauffe détectée!");
  }
  
  server.handleClient();
  delay(2000);
}

void handleRoot() {
  String html = "<html><head><meta http-equiv='refresh' content='5'>";
  html += "<style>body{font-family:Arial; background:#1a1a2e; color:#fff;}";
  html += ".card{background:#16213e; padding:20px; margin:10px; border-radius:10px;}";
  html += ".value{font-size:32px; color:#0f3460; font-weight:bold;}</style>";
  html += "</head><body>";
  html += "<h1>🔋 BMS Monitor - ESP32</h1>";
  html += "<div class='card'><h2>Tension:</h2><div class='value'>" + String(voltage) + "V</div></div>";
  html += "<div class='card'><h2>Courant:</h2><div class='value'>" + String(current) + "mA</div></div>";
  html += "<div class='card'><h2>Température:</h2><div class='value'>" + String(temperature) + "°C</div></div>";
  html += "</body></html>";
  server.send(200, "text/html", html);
}

void handleData() {
  String json = "{";
  json += "\"voltage\":" + String(voltage) + ",";
  json += "\"current\":" + String(current) + ",";
  json += "\"temperature\":" + String(temperature);
  json += "}";
  server.send(200, "application/json", json);
}

void sendAlert(String message) {
  // Intégration avec Telegram ou SMS via SIM800L
  Serial.println("ALERT: " + message);
}

Dashboard Web

L'ESP32 héberge un serveur web accessible depuis votre smartphone. Visualisez en temps réel :

  • 📊 Tension de chaque cellule
  • ⚡ Courant de charge/décharge
  • 🌡️ Température des batteries
  • 🔋 Autonomie restante estimée

🚀 Améliorations Possibles

  • 📡 Intégration Home Assistant via MQTT
  • Logging sur carte microSD
  • 📱 Notifications Telegram
  • 🔌 Équilibrage automatique des cellules
  • Graphiques historiques avec Chart.js

⚠️ Précautions de Sécurité

⚡ ATTENTION : Travailler avec des batteries Li-Ion haute tension est DANGEREUX. Respectez ces règles :
  • Utilisez des fusibles appropriés
  • Isolez correctement tous les câbles
  • Ne dépassez jamais les limites de tension/courant
  • Testez d'abord avec une batterie basse tension (12V)

📚 Ressources Téléchargeables

🔗 Articles Liés sur TechFix Hub

Bottom Ad [Post Page]