Sommaire du dossier
A / Spécification
Analyse du besoin, diagramme SysML de cas d’utilisation, diagrammes SysML de séquence.
B / Conception préliminaire
Diagramme de déploiement, diagramme Bdd, diagrammes ibd, détails des tâches professionnelles et planning.
C / Conception détaillée
Résultats techniques, explications des tâches réalisées et validation des choix.
D / Validation
Vérification du fonctionnement complet et recette des exigences définies en début de projet.
Analyse du besoin
Le besoin principal de ce projet est d’obtenir une lecture du régime moteur depuis le réseau CAN du véhicule, puis de l’afficher de manière simple, lisible et exploitable. La solution doit fonctionner à la fois en local sur un écran embarqué et à distance via une page web. Le projet mobilise donc plusieurs briques techniques : acquisition de trames CAN, traitement de données, affichage embarqué, communication réseau et visualisation web temps réel.
Technologies et matériel utilisés
Architecture globale
1. Acquisition CAN
L’ESP32 est relié à une carte MCP2515 qui lui permet de communiquer avec le bus CAN et de recevoir les trames moteur.
2. Traitement local
Le régime moteur est extrait des octets reçus, converti en tr/min puis affiché sur l’écran OLED sous forme numérique et graphique.
3. Diffusion réseau
Les valeurs sont transmises au Raspberry Pi qui héberge un serveur Web / WebSocket pour alimenter une jauge consultable depuis un navigateur.
Déroulement des tâches professionnelles
Mise en place du câblage entre l’ESP32, le module MCP2515, le transceiver, la breadboard et les connexions SPI. La carte MCP2515 agit comme interface SPI vers CAN et permet à l’ESP32 d’envoyer et de recevoir des trames.
Utilisation du logiciel Muxtrace et du boîtier Muxdiag pour simuler la trame moteur. Les octets transmis ont permis de vérifier l’extraction correcte du régime, de la vitesse et de l’état moteur via le moniteur série.
Recherche de l’identifiant I2C, ajout des bibliothèques nécessaires et validation de l’affichage sur l’écran OLED connecté à l’ESP32.
Création d’un premier affichage compact du régime moteur sur la première ligne de l’écran OLED en multiple de 1000 tr/min.
Mise en place d’un affichage visuel complémentaire sous forme de barres afin de représenter plus intuitivement la montée en régime.
Test réel sur véhicule avec l’ensemble ESP32 + MCP2515 + OLED afin de confirmer la récupération et l’affichage des données moteur.
Connexion SSH au Raspberry Pi, installation de RaspAP puis mise en service du point d’accès Wi-Fi pour rendre la solution autonome et accessible.
Déploiement d’un serveur Node.js sur Raspberry Pi, puis validation de son fonctionnement avec Postman via des tests de requêtes WebSocket.
Ajout de la bibliothèque côté ESP32 et validation de l’envoi des données vers le Raspberry Pi, qui reçoit correctement les trames.
Réalisation d’une interface HTML / CSS / JavaScript utilisant un canvas pour dessiner une jauge automobile animée. Le navigateur reçoit les valeurs via WebSocket et met à jour l’aiguille de façon fluide.
Vérification finale avec le montage complet : véhicule, bus CAN, ESP32, MCP2515, Raspberry Pi, WebSocket et navigateur web.
Le système permet d’obtenir une lecture temps réel du régime moteur en local sur OLED et à distance sur une interface web claire et moderne.
Exemple de décodage de trame
Octets 1 et 2 : régime moteur
4500 tr/min × 8 = 36000 = 0x8CA0 → 0x8C 0xA0
Octets 3 et 4 : vitesse véhicule
85,21 km/h → 8521 = 0x2149 → 0x21 0x49
Octet 5 : boîte + rapport
0x72 pour l’état de boîte et rapport engagé selon la simulation choisie.
Octet 6 : état moteur
0x01 → moteur allumé.
Conception détaillée
Affichage embarqué sur OLED
Le régime moteur est affiché sur une première ligne sous forme numérique simplifiée, puis sur une deuxième ligne sous forme de barres afin d’obtenir un retour visuel immédiat et lisible.
Communication réseau avec Raspberry Pi
Le Raspberry Pi sert de passerelle entre le monde embarqué et la supervision web. Il propose un point d’accès Wi-Fi et héberge les services Node.js nécessaires au serveur Web et WebSocket.
Jauge web temps réel
La jauge développée en HTML, CSS et JavaScript utilise un canvas pour simuler un compte-tours automobile avec zones colorées, graduations et aiguille animée. Chaque nouvelle valeur reçue est convertie en angle pour obtenir une animation fluide.
Validation et démonstration
Compétences développées
- Compréhension et exploitation d’un bus CAN automobile.
- Configuration d’un ESP32 avec module MCP2515.
- Lecture et interprétation de trames techniques.
- Affichage embarqué sur écran OLED.
- Mise en place d’un Raspberry Pi comme passerelle réseau.
- Configuration d’un point d’accès Wi-Fi avec RaspAP.
- Déploiement d’un serveur Web / WebSocket en Node.js.
- Création d’une interface web dynamique en temps réel.
Conclusion
Ce projet CAN m’a permis de relier plusieurs domaines techniques dans une seule réalisation : embarqué, communication CAN, affichage local, réseau, serveur WebSocket et interface web. Il montre ma capacité à concevoir une chaîne complète de récupération, traitement et visualisation de données dans un contexte concret et proche du terrain.