Dashboard temps réel pour bus CAN avec ESP32, MCP2515, Raspberry Pi, WebSocket et interface web
Interface web · Code ESP32 · Serveur WebSocket · Serveur HTTP
Ce dépôt contient un projet de dashboard CAN temps réel permettant de lire des données issues d’un bus CAN et de les afficher dans une interface web moderne.
Le système repose sur :
- un ESP32 connecté à un MCP2515 pour la lecture et l’émission sur le bus CAN
- un Raspberry Pi exécutant un serveur Node.js
- un serveur WebSocket pour transmettre les données en temps réel
- une interface web affichant les jauges, le rapport engagé et l’état moteur
- une commande Start / Stop envoyée sur le bus CAN
Le projet permet notamment de :
- lire la trame 0x3E1
- extraire le régime moteur
- extraire la vitesse
- afficher le rapport engagé
- envoyer une commande moteur sur l’ID 0x101
- piloter l’ensemble via une interface web fluide
- réception des trames via MCP2515
- filtrage de la trame 0x3E1
- extraction des données utiles depuis le message CAN
- lecture en continu sur bus 250 kbps
- affichage du régime moteur
- affichage de la vitesse
- affichage du rapport engagé
- affichage du type de boîte détecté
- dashboard responsive
- jauge RPM de 0 à 8000 tr/min
- jauge vitesse de 0 à 220 km/h
- zones colorées sur les compteurs
- état de connexion WebSocket
- bouton Start / Stop visuel et interactif
- envoi de la commande CAN sur 0x101
- support du START
- support du STOP
- répétition de la commande pour fiabiliser l’action
- serveur HTTP pour servir l’interface
- serveur WebSocket pour diffuser les données
- diffusion en temps réel vers tous les clients connectés
Le projet est découpé en 3 blocs principaux :
Le fichier src/esp32.cpp gère :
- la connexion Wi-Fi
- la connexion WebSocket vers le Raspberry Pi
- l’initialisation du contrôleur CAN MCP2515
- la réception de la trame 0x3E1
- l’extraction des valeurs de télémétrie
- l’envoi périodique des données au dashboard web
- la réception des ordres Start / Stop
- l’émission de la trame CAN 0x101
Le Raspberry Pi héberge deux serveurs :
- serveur WebSocket “maison”
- sans dépendance externe
- gestion manuelle du handshake WebSocket
- broadcast des messages à tous les clients connectés
- serveur HTTP simple
- sert les fichiers du dashboard web
- expose l’interface sur le port 4500
Le fichier WEB/public/index.html affiche :
- un compte-tours
- un compteur de vitesse
- le rapport engagé
- un bouton Start / Stop
- le statut de connexion WebSocket
L’interface communique en direct avec le serveur WebSocket sur le port 8015.
- ESP32 DevKit V1
- Arduino framework
- MCP2515
- SPI
- CAN bus
- Node.js
- module
http - module
crypto - WebSocket custom
- HTML
- CSS
- JavaScript vanilla
- Canvas 2D
- Wi-Fi
- HTTP
- WebSocket
PROJET-CAN-main/
├── WEB/
│ ├── public/
│ │ └── index.html
│ └── server_https.js
├── WS/
│ └── server.js
├── src/
│ └── esp32.cpp
├── include/
├── lib/
├── test/
├── platformio.ini
└── README.md