Système Embarqué Intelligent De Maintenance Prédictive Pour Imprimante 3D
by Orange Digital Center in Circuits > Arduino
67 Views, 0 Favorites, 0 Comments
Système Embarqué Intelligent De Maintenance Prédictive Pour Imprimante 3D
Introduction Générale
Contexte général
Ce projet a été développé au sein de l’Orange Digital Center Maroc, un espace dédié à l’innovation, à la créativité et au prototypage rapide. Au FabLab, les individus et les équipes ont accès à des outils de pointe, notamment des imprimantes 3D, des découpeuses laser ainsi qu’à diverses ressources électroniques et mécaniques. Le centre offre un environnement collaboratif permettant aux innovateurs, entrepreneurs et étudiants de transformer leurs idées en produits concrets. En mettant l’accent sur des solutions durables et à fort impact, l’Orange Digital Center favorise le développement de projets innovants répondant aux besoins de la société et du marché.
Avec l’essor de l’industrie 4.0, l’intégration des technologies intelligentes dans les systèmes industriels est devenue une nécessité pour améliorer la productivité, la fiabilité et la durabilité des équipements. Parmi ces technologies, l’Internet des objets (IoT), les systèmes embarqués et l’intelligence artificielle jouent un rôle central en permettant la collecte, le traitement et l’analyse des données en temps réel.
Dans ce contexte, les imprimantes 3D occupent une place de plus en plus importante dans les domaines de la fabrication, du prototypage rapide et de l’innovation technologique. Toutefois, leur fonctionnement continu et leurs contraintes les rendent sensibles à l’usure et aux défaillances. Il devient donc essentiel de mettre en place des solutions intelligentes capables de surveiller leur état et d’anticiper les pannes.
Constat et problématique
Le constat principal est que la maintenance des imprimantes 3D est généralement réalisée de manière corrective ou préventive classique, ce qui peut entraîner des arrêts imprévus, une perte de temps et des coûts supplémentaires. De plus, l’absence de systèmes intelligents de surveillance en temps réel limite la capacité à détecter les anomalies avant qu’elles ne provoquent des défaillances critiques.
Ainsi, la problématique de ce projet peut être formulée comme suit : Comment concevoir un système embarqué intelligent capable de surveiller, analyser et prédire les pannes d’une imprimante 3D en temps réel ?
Objectifs du travail
Ce projet vise à répondre à cette problématique à travers les objectifs suivants :
- Objectif 1 : Développer un système d’acquisition de données basé sur une carte ESP32 et des capteurs afin de mesurer les paramètres critiques de l’imprimante 3D.
- Objectif 2 : Mettre en place une architecture IoT permettant la transmission, le stockage et la gestion des données via MQTT, Node.js, MongoDB et Firebase.
- Objectif 3 : Concevoir une interface web interactive pour la visualisation des données en temps réel et le suivi de l’état de la machine.
- Objectif 4 : Intégrer des techniques d’intelligence artificielle pour analyser les données et mettre en œuvre une stratégie de maintenance prédictive.
Organisation du rapport
Ce rapport est structuré en quatre chapitres :
- Présentation de l’organisme d’accueil et du cadre du projet, décrivant l’environnement de travail ainsi que le contexte dans lequel le projet a été réalisé.
- Étude théorique et technologique, présentant les notions liées aux systèmes embarqués, à l’IoT, aux protocoles de communication et à la maintenance prédictive.
- Conception et architecture du système, détaillant les choix techniques, le matériel utilisé et l’architecture logicielle mise en place.
- Réalisation, tests et validation, décrivant l’implémentation pratique du système, les résultats obtenus et leur analyse critique.
Supplies
Conception et réalisation d’un système embarqué intelligent de maintenance prédictive pour imprimante 3D basé sur ESP32 et intelligence artificielle
Inventaire des matériels
Carte microcontrôleur principale :
- ESP32 DevKit V1 – Module Wi-Fi & Bluetooth Dual-Core
- Breadboard 800 pts
- Câble USB-A
Capteurs et actionneurs :
- Module ADS1115 (convertisseur ADC 16 bits)
- Capteur de courant ACS712 (30A)
- Capteur de tension B25 (0-25V)
- Capteur de gaz MQ-2
- Capteur de vibration piézoélectrique
- Module MPU6050 (accéléromètre + gyroscope)
- Deux capteurs de température KY-028 (NTC)
Matériel de test
- Imprimante 3D Creality CR10MAX
- Ordinateur sous Windows/Linux
Logiciels utilisés
- Arduino IDE
- Visual Studio Code
- Node.js
- MQTT Explorer
- Python 3
- Firebase
- MongoDB
Électronique passive et connectique
- Résistance 100kΩ
- Résistance 10kΩ
- Résistance 1kΩ
- Câbles Dupont
- Barrette de pins
- Condensateur 100µF
- Condensateur 0.1µF
Alimentation
- Connecteur DC jack
- Adaptateur secteur 5V / 3A
Outillage et consommables
- Fer à souder
- Fil d'étain
- Multimètre
- Pince coupante
- Pince à dénuder
- Vis
- Colliers de serrage
- Ruban adhésif double-face
- Boîtier de protection (optionnel)
- Entretoises (optionnel)
Étude Et Analyse Des Besoins
Étude et Analyse des Besoins
Avant toute réalisation, il est nécessaire d'identifier les paramètres critiques de l'imprimante 3D :
- Température des composants
- Vibrations mécaniques
- Consommation électrique
- Tension d'alimentation
- Émissions de fumée ou de gaz
- Informations provenant de la carte mère via UART
Cette analyse permet de déterminer les capteurs à utiliser et les données à surveiller.
Conception De L'Architecture
Le système est organisé selon l'architecture suivante :
Capteurs → ESP32 → MQTT → Serveur Node.js → Base de données → Intelligence Artificielle → Dashboard
Le rôle de chaque bloc est :
- Les capteurs collectent les données.
- L'ESP32 effectue l'acquisition et la transmission.
- MQTT transporte les données en temps réel.
- Node.js reçoit et traite les informations.
- MongoDB et Firebase stockent les données.
- Random Forest analyse les données.
- L'interface web affiche les résultats.
Installation Des Capteurs
Installer les différents capteurs sur l'imprimante :
Surveillance électrique
- ACS712 pour mesurer le courant.
- B25 pour mesurer la tension.
Surveillance thermique
- Deux capteurs KY-028 placés à proximité des éléments chauffants.
Surveillance mécanique
- MPU6050 pour mesurer les vibrations et mouvements.
- Capteur piézoélectrique pour détecter les chocs et vibrations anormales.
Surveillance environnementale
- MQ-2 pour détecter fumées et gaz.
Les capteurs analogiques sont connectés au module ADS1115 afin d'améliorer la précision des mesures.
Développement Du Programme ESP32
Le programme ESP32 réalise :
- Lecture des capteurs.
- Conversion des données.
- Création des messages JSON.
- Connexion Wi-Fi.
- Publication des données MQTT.
- Communication UART avec la carte mère de l'imprimante.
Chaque mesure est envoyée périodiquement vers le serveur de supervision.
Code carte ESP32 :
Downloads
Mise En Place Du Serveur Node.js
Le serveur Node.js permet :
- La réception des messages MQTT.
- Le traitement des données.
- La sauvegarde dans MongoDB.
- La synchronisation avec Firebase.
- La création automatique du dataset CSV utilisé pour l'entraînement de l'IA.
Création Du Dataset
Pour entraîner l'algorithme de Machine Learning :
- Faire fonctionner l'imprimante normalement.
- Enregistrer les données des capteurs.
- Simuler plusieurs anomalies :
- Surchauffe
- Vibrations excessives
- Anomalies électriques
- Défauts d'impression
- Étiqueter les données collectées.
Le résultat est un fichier CSV contenant les données normales et anormales.
Code collector pour la collecte des données et la création de csv pour l’entrainement de l’algorithme :
Downloads
Entraînement Du Modèle D'Intelligence Artificielle
1. Chargement des données
Le programme commence par charger un fichier CSV contenant les données historiques :
Chaque ligne représente un instant de fonctionnement du système, avec des mesures issues de différents capteurs (température, vibrations, courant, tension, gaz, etc.).
Les valeurs manquantes sont ensuite supprimées :
Cela garantit que le modèle ne soit pas perturbé par des données incomplètes.
2. Sélection des variables (features)
Le modèle utilise un ensemble de variables appelées features. Elles représentent l’état physique et électronique du système :
- Variables électriques : voltage, current
- Température moteur : temp_motor_bottom, temp_motor_top
- Gaz : gas
- Vibrations : vibration_left, vibration_right
- Mouvement (IMU) : accX, accY, accZ, gyroX, gyroY, gyroZ
- État système : wifi_rssi, heap
- Paramètres imprimante / machine : nozzle_temp, bed_temp, positions posX, posY, posZ, posE
La variable à prédire est :
Elle représente l’état du système (normal, anomalie, panne).
3. Vérification des données
Avant l’entraînement, le code vérifie que toutes les colonnes nécessaires sont présentes dans le dataset. Si une colonne manque, le programme s’arrête pour éviter une erreur.
4. Préparation des données
a. Séparation X / y
- X contient les mesures des capteurs
- y contient le label (état du système)
b. Encodage des labels
Les classes textuelles (ex: "normal", "fault") sont transformées en valeurs numériques :
Cela permet au modèle de les traiter mathématiquement.
c. Normalisation
Les données des capteurs sont mises à la même échelle :
Cette étape améliore la stabilité et la performance du modèle.
5. Division entraînement / test
Le dataset est divisé en deux parties :
- 80 % pour l’entraînement
- 20 % pour les tests
La stratification garantit que chaque classe est bien représentée dans les deux ensembles.
6. Modèle Random Forest
Le modèle utilisé est un Random Forest Classifier, qui est un ensemble de plusieurs arbres de décision.
Explication des paramètres principaux :
- 300 arbres (n_estimators) pour améliorer la robustesse
- profondeur maximale de 20 pour éviter le surapprentissage
- class_weight="balanced" pour gérer les classes déséquilibrées
- n_jobs=-1 pour utiliser tous les cœurs du processeur
7. Entraînement du modèle
Le modèle apprend à partir des données d’entraînement :
Il construit progressivement des arbres de décision capables de reconnaître les différents états du système.
8. Évaluation
Après l’entraînement, le modèle est testé sur des données inconnues :
Plusieurs métriques sont calculées :
- Accuracy : taux global de bonnes prédictions
- Classification report : précision, rappel et F1-score pour chaque classe
- Matrice de confusion : erreurs de classification
9. Importance des variables
Le modèle calcule également quelles variables influencent le plus la décision :
Cela permet d’identifier les capteurs les plus critiques dans la détection des pannes (par exemple vibrations ou température moteur).
10. Sauvegarde du modèle
Enfin, trois fichiers sont sauvegardés pour une utilisation future :
- random_forest_model.pkl : le modèle entraîné
- scaler.pkl : le normaliseur des données
- label_encoder.pkl : l’encodage des classes
- Ces fichiers permettent de réutiliser le modèle sans réentraînement.
Downloads
Déploiement En Temps Réel
1. Objectif du code
Ce programme a pour rôle de :
- Recevoir des données de capteurs en temps réel via MQTT
- Transformer ces données au bon format
- Appliquer le modèle Random Forest déjà entraîné
- Prédire l’état de la machine (normal, anomalie, panne)
- Envoyer le résultat vers un autre topic MQTT
2. Chargement du modèle IA
Au démarrage, le système charge les fichiers sauvegardés lors de l’entraînement :
Ces éléments sont essentiels :
- model : le Random Forest entraîné
- scaler : normalisation des données (même transformation que l’entraînement)
- encoder : conversion des labels numériques en texte
3. Communication MQTT
Le système utilise MQTT pour recevoir et envoyer les données :
- Topic d’entrée :
- Topic de sortie :
Le broker utilisé est public :
Cela permet de recevoir des données IoT en temps réel depuis une machine ou un microcontrôleur.
4. Extraction des features
La fonction principale extract_features() transforme le JSON reçu en un vecteur de données exploitable par le modèle.
Les données sont organisées par catégories :
a. Données électriques
- voltage
- current
b. Température
- motor_bottom
- motor_top
c. Gaz
- mq2
d. Vibrations
- left_rms
- right_rms
e. Mouvement (IMU)
- accélération (x, y, z)
- gyroscope (x, y, z)
f. Système
- wifi_rssi
- heap mémoire
g. Paramètres machine (Marlin)
- température buse et plateau
- positions X, Y, Z, E
Si une donnée est manquante, une valeur par défaut (0) est utilisée pour éviter les erreurs.
5. Réception des messages MQTT
Chaque fois qu’un message arrive sur le topic, la fonction suivante est déclenchée :
Elle réalise plusieurs étapes.
6. Conversion des données
Le message MQTT est converti depuis JSON :
Puis transformé en vecteur numérique :
Ensuite, les données sont normalisées avec le même scaler que l’entraînement :
7. Prédiction du modèle
Le modèle Random Forest analyse les données et prédit la classe :
Puis la classe numérique est reconvertie en texte :
8. Calcul de la confiance
Le système calcule également un score de confiance :
Cela représente la probabilité de la prédiction la plus probable.
9. Résultat final
Le résultat envoyé contient :
Exemple :
Ce résultat est affiché dans la console.
10. Envoi vers MQTT
Le résultat est ensuite publié sur un autre topic :
Cela permet à d’autres systèmes (dashboard, application mobile, serveur) de recevoir la prédiction en temps réel.
11. Boucle en temps réel
Le client MQTT reste actif en permanence :
Le système fonctionne donc comme un service d’IA temps réel embarqué, capable de surveiller une machine en continu.
Downloads
Développement Du Dashboard
L'interface web permet :
- L'affichage des données en temps réel.
- La visualisation des graphiques.
- La consultation de l'historique.
- L'affichage des alertes.
- Le suivi de l'état global de l'imprimante.
vous pouvez trouvez le code source de l'interface web dans ce lien drive :
https://drive.google.com/drive/folders/1jQ3DTrtk6CK6nidwNPCCq0TNQANUIbw8?usp=sharing
Le hosting avec Vercel est une solution de déploiement cloud moderne qui permet de publier rapidement des applications web et des APIs sans gérer d’infrastructure serveur. Vercel automatise entièrement le processus de build, de déploiement et de mise à l’échelle : à chaque modification du code, une nouvelle version est générée et déployée en quelques secondes. La plateforme est particulièrement adaptée aux projets front-end (React, Next.js, etc.), mais peut aussi exposer des fonctions backend sous forme de serverless functions. Grâce à son CDN intégré, les contenus sont distribués globalement pour garantir des temps de réponse rapides. Vercel simplifie ainsi le passage du développement à la production en offrant une solution stable, scalable et facile à intégrer avec des projets modernes.
Code serveur local pour l’interface :
1. Objectif global du système
Ce programme sert à :
- Recevoir des données de capteurs via MQTT
- Traiter et structurer ces données
- Détecter des anomalies / pannes
- Stocker les données (CSV, MongoDB, Firebase)
- Envoyer les données en temps réel au dashboard (WebSocket)
2. Technologies utilisées
Le backend combine plusieurs technologies :
- MQTT : communication IoT en temps réel
- MongoDB : base de données NoSQL
- Firebase Realtime Database : synchronisation cloud
- Express.js : API web
- Socket.io : temps réel vers interface web
- Filesystem (CSV) : stockage local des datasets
- Node.js : runtime principal
3. Architecture des données
Deux flux principaux existent :
a. Capteurs
Topic MQTT :
→ données JSON des capteurs (température, vibration, courant…)
b. Marlin (machine state / logs firmware)
Topic MQTT :
→ logs bruts de la machine (firmware type Marlin)
4. Initialisation du serveur
Le serveur Express est lancé sur un port défini :
Il sert :
- un dashboard web (public/)
- des APIs d’export CSV
- une route de santé /health
5. Gestion des fichiers CSV
Le code crée automatiquement deux fichiers :
- dataset_labeled.csv → dataset IA
- marlin_logs.csv → logs machine
Chaque nouvelle donnée est ajoutée ligne par ligne pour constituer un dataset d’entraînement.
6. Connexions aux bases de données
a. MongoDB
Si une URI est fournie :
Les données capteurs sont stockées dans la collection capteurs.
b. Firebase Realtime Database
Si une clé service est disponible :
Les données sont envoyées en temps réel vers Firebase.
7. WebSocket (temps réel dashboard)
Socket.io permet de pousser les données instantanément vers l’interface web :
- io.emit("data", data) → capteurs
- io.emit("marlin", marlinEntry) → logs machine
Cela permet un dashboard live sans refresh.
8. Réception MQTT
Le cœur du système est ici :
Chaque message reçu est traité selon son type.
9. Traitement des données Marlin
Si le message vient du topic Marlin :
- Il est sauvegardé dans un fichier CSV
- Il est parsé (parseMarlinLine)
- Il est envoyé à Firebase
- Il est envoyé au dashboard en temps réel
👉 Cela permet de suivre l’état bas niveau de la machine.
10. Traitement des capteurs
Si le message vient des capteurs :
Étapes :
a. Parsing JSON
b. Flatten des données
👉 transforme JSON complexe en structure simple
c. Détection d’anomalies
👉 applique une logique ou un modèle pour détecter :
- normal
- anomalie
- panne
d. Fusion des données
11. Stockage des données
Chaque donnée est envoyée vers plusieurs systèmes :
a. CSV local (dataset IA)
👉 sert à entraîner le modèle ML
b. Firebase (temps réel cloud)
c. MongoDB (base historique)
12. Dashboard en temps réel
👉 met à jour instantanément l’interface web avec les nouvelles données capteurs
13. API REST
a. Health check
Retourne l’état du système :
- MongoDB connecté ou non
- Firebase actif ou non
- MQTT connecté ou non
b. Export dataset IA
Télécharge le fichier CSV utilisé pour entraîner le modèle.
c. Export logs Marlin
Télécharge les logs bruts de la machine.
14. Gestion des connexions MQTT
Le code gère aussi :
- connexion
- erreurs
- reconnexion
- souscription aux topics
15. Résumé global
Ce backend agit comme un système IoT industriel complet :
- Capteurs envoient des données via MQTT
- Le backend reçoit et traite les données
- Il détecte les anomalies
- Il stocke les données dans :
- CSV (IA training)
- MongoDB (historique)
- Firebase (cloud temps réel)
- Il envoie les données au dashboard via WebSocket
Downloads
Tests Et Validation
Effectuer plusieurs scénarios de test :
Test thermique
Augmenter artificiellement la température afin de vérifier la détection.
Test vibratoire
Créer des vibrations anormales.
Test électrique
Faire varier la tension ou le courant.
Test IA
Vérifier que le modèle classe correctement les états de fonctionnement.
Résultats Obtenus
Le système développé permet :
- Une surveillance continue de l'imprimante 3D.
- La détection précoce des anomalies.
- La génération d'alertes automatiques.
- La création d'un historique complet des données.
- La prédiction des pannes grâce à l'intelligence artificielle.
Cette solution améliore considérablement la fiabilité de l'imprimante et réduit les arrêts imprévus.
Conclusion
Ce projet démontre qu'il est possible de réaliser un système complet de maintenance prédictive à faible coût en combinant l'ESP32, les technologies IoT et l'intelligence artificielle.
Grâce à l'acquisition de données en temps réel, à l'utilisation du protocole MQTT et à l'algorithme Random Forest, le système est capable d'anticiper certaines défaillances avant qu'elles n'affectent le fonctionnement de l'imprimante 3D.
Cette architecture peut être facilement adaptée à d'autres machines industrielles telles que les moteurs électriques, les pompes, les compresseurs ou les lignes de production, ouvrant ainsi la voie à des applications industrielles plus avancées dans le domaine de la maintenance intelligente.