Environmental Measures for Industries — un gilet connecté qui suit la santé et l'environnement des ouvriers en centrale à charbon, plus une plateforme web PHP OOP pour lire les données live, gérer les ouvriers et animer le forum communautaire.
Emi — Environmental Measures for Industries. Prototype de gilet multifonction conçu pour les ouvriers des centrales à charbon françaises rouvertes pendant la crise énergétique européenne de 2022. Le gilet mesure la qualité de l’air, le bruit ambiant, la température corporelle et le rythme cardiaque, tout en restant basse consommation et discret. Les données circulent en Bluetooth vers une passerelle, puis vers une plateforme web où les managers supervisent les ouvriers et où un forum fait remonter les alertes santé.
Conçu de bout en bout pendant mon projet APP électronique + logiciel à l’ISEP, avec l’équipe G10D (Hadouin LEROY, Romeo CORREC, Djamil ILA ADO, Gervais NGUEMA, Régis NGAN).
Centrale d'acquisition (gilet) ── Bluetooth ──▶ Passerelle + serveur ── HTTP ──▶ Plateforme web
Le MiCS-VZ-89TE sort un PWM 30 Hz où les impulsions alternées de 33,3 ms encodent les tVOC (5–45 % rapport cyclique) et le CO₂ (55–95 %). Le microcontrôleur lit la largeur d’impulsion, calcule (timeHIGH / pulseLength) * 100, puis démultiplexe les deux canaux.
Chaîne analogique en trois étages sur le signal du micro : filtre passe-bas, étage de gain à amp-op, filtre passe-haut. Les valeurs des composants ont été dimensionnées sous TINA, simulées (réponse de Bode), puis validées au banc avant attaque de l’ADC.
LED + phototransistor pincés sur le doigt. Les pulsations sanguines modifient l’opacité du doigt → le courant du phototransistor varie. Le MCU détecte les pics au-dessus d’un seuil de tension/durée et convertit le temps inter-battements en BPM via 60000 / Δt_ms. Tests au repos : ~60–70 BPM, après effort : ~100–108 BPM.
Protocole single-bus DHT11 : trame 40 bits (humidité int/déc, température int/déc, checksum). Une pull-up 4,7 kΩ garde la ligne open-collector propre à 3,3 V ; la checksum filtre la donnée.
Le SSD1306 affiche le logo Emi et les messages d’état (transmission, mesure, erreur). Confirme que la carte est en vie sans console série.
Les trames ASCII transportent l’ID groupe, le type de capteur, l’index capteur et la valeur. Exemple pour 25,8 °C : 1G10D13010258FFFFXX. Types de trames : Courante (données capteur), Synchronisation, Rapide.
hadouin/emi-website-oop — MVC strict en PHP vanilla, sans framework, pour internaliser les patterns OOP de bout en bout.
entities/ — classes domaine (User, Device, Reading…).env pour les credentialsFonctionnalités : landing, login, signup, dashboard live device, liste des appareils, liste des ouvriers, forum communautaire.
J’ai retravaillé le produit comme un exercice de design system : 7 écrans clés redessinés autour d’un seul jeu de tokens (l’expérimentation Nitro DS), avec des jauges live pour le dashboard, un registre des ouvriers épuré, et une mise en page de forum plus calme. L’objectif était de voir jusqu’où le produit original de 2022 pouvait être poussé visuellement sans toucher à l’architecture PHP.