Analyseur ECG de précision avec Edge Impulse et Arduino Nano 33 BLE Sense
Contexte médical : urgence cardiaque
Les morts subites par crise cardiaque augmentent, surtout dans les zones rurales des pays en développement (manque de matériel, personnel, connectivité). Un dispositif portable, autonome, capable de diagnostiquer sans Cloud ni smartphone est un enjeu de santé publique majeur.
Solution : TinyML sur Arduino Nano 33 BLE Sense
Cet analyseur ECG embarque un modèle TinyML (Edge Impulse) de 15 Ko qui classe en temps réel le signal ECG en 3 catégories :
- Normal (rythme sinusal)
- Fibrillation auriculaire (AFib) : irrégularité R-R, absence d'ondes P
- Bloc auriculo-ventriculaire du 1er degré (AV1) : intervalle PR > 200 ms
Avantages : latence minimale (inférence locale), aucune connexion Internet requise, fonctionne sur tout microcontrôleur supportant TinyML, consommation faible (batterie LiPo).
Matériel
- 1 × Arduino Nano 33 BLE Sense (nRF52840, IMU, BLE, micro intégré)
- 1 × Module ECG AD8232 (SparkFun, sortie analogique + détection électrodes décollées)
- 1 × Écran OLED 0,96" 128×64 (I2C, SSD1306)
- 3 × Électrodes ECG jetables (type Ag/AgCl, snap)
- Fils de liaison 5 cm, fer à souder, fil à souder
Architecture logicielle
- Acquisition ECG : AD8232 → A0 (échantillonnage 202 Hz via Edge Impulse daemon)
- Prétraitement : filtrage passe-bande (0,5-40 Hz), détection pics R (algorithme Pan-Tompkins simplifié)
- Extraction features innovante : au lieu de donner le signal brut au classifieur (précision < 23% sur fenêtre 3s), calcul de deux signaux dérivés :
- Intervalle R-R : temps entre deux pics R successifs (variabilité = marqueur AFib)
- Intervalle PR : temps onde P → pic R (allongement = marqueur AV1)
- Codage binaire : R-R normal = 100, déviation → -100 (1 cycle) ; PR normal = 50, >200ms → -50 (1 cycle). Cette représentation « médecin-like » porte la précision à > 90%.
- Entraînement Edge Impulse : fenêtre 3000 ms, augmentation 2999 ms, features spectrales (pas de filtre), classifieur NN (40 epochs, lr=0,005) + détection anomalie (RMS R-R, RMS PR). Précision test : 97%.
- Déploiement : bibliothèque Arduino Edge Impulse + bibliothèque custom
ECG_Analyzer(algorithme détection pics/intervalles) → sketch finalECGAnalyzer.ino.
Configuration Edge Impulse
- Fréquence échantillonnage :
edge-impulse-daemon --frequency 202 - 3 classes : « Normal », « Atrial_Fibrillation », « First_Degree_Block »
- Collecte données : simulation MATLAB (Signal Builder) pour AFib/AV1 + acquisition réelle pour Normal
- Simulation MATLAB : import ECG réel → édition manuelle ondes P/R (zoom 5s, drag-and-drop) → export → script
Excel2Arrayconverter.m→ tableaux C pour firmware
Câblage (Fritzing fourni)
- AD8232 : VCC→3,3V, GND→GND, OUTPUT→A0, LO+→D2, LO-→D3
- OLED : SDA→A4, SCL→A5, VCC→3,3V, GND→GND
- Électrodes : RA (bras droit), LA (bras gauche), LL (jambe gauche) → connecteur jack AD8232
Assemblage final
Le tout tient dans un petit boîtier (boîte à piles, boîtier imprimé 3D). L'OLED affiche : classe détectée, confiance, forme d'onde temps réel, intervalles R-R/PR. Alimentation : batterie LiPo sur connecteur JST du Nano 33 BLE Sense.
Code et ressources
Dépôt GitHub complet : Manivannan-maker/ECGAnalyzer
ECGAnalyzer.ino: sketch principal (simulation=0 pour réel)ECG_Analyzer.c/.h: bibliothèque custom (détection pics, calcul intervalles, features)EI_Deployed_Library: bibliothèque Edge Impulse générée- Scripts MATLAB :
Excel2Arrayconverter.m,signalbuilder.slx
Perspectives
- Ajout classes : tachycardie, bradycardie, extrasystoles, ischémie (onde ST)
- Transmission BLE vers application smartphone pour historique/alertes
- Validation clinique comparative (Holter 24h)
- Certification dispositif médical (IEC 60601, MDR UE) → version industrielle
Références médicales
Lecture ECG : geekymedics.com
Processus de fabrication
- L'art et l'artisanat des tiares : histoire, matériaux et design moderne
- Le fil barbelé expliqué : histoire, construction et usages modernes
- Moniteur d'hygiène des toilettes alimenté par Walabot
- Machine Learning Pratique avec le reTerminal : Guide de Démo Edge Impulse et ARM NN
- Transformer un camion jouet cassé en véhicule RC piloté par Raspberry Pi
- Kit MOSMusic : MOSFET, Arduino et plus pour éclairage musical
- 6 types d'organisations pilotant la révolution Edge Computing
- Machine à treillis hexagonal premium pour agriculture et volaille
- Maîtriser la découpe fil : guide complet de l'électroérosion fil