Kit ECG AD8232 : Moniteur Cardiaque DIY avec Arduino

0

🫀 Kit ECG AD8232 : Moniteur Cardiaque DIY — Visualiser les Ondes de Votre Cœur

Visualisez l’activité électrique de votre cœur en temps réel avec le module ECG AD8232 et Arduino ! Ce tutoriel de didactico.tn vous apprend à lire un électrocardiogramme sur le Serial Plotter, à comprendre les ondes P, QRS et T, et à interpréter les bases du signal ECG. Un projet fascinant pour l’apprentissage de l’électronique biomédicale en Tunisie.

⚠️ AVERTISSEMENT MÉDICAL IMPORTANT

Ce projet est STRICTEMENT ÉDUCATIF. Le module AD8232 et ce tutoriel ne sont PAS des dispositifs médicaux certifiés.

  • NE PAS utiliser ce montage pour diagnostiquer des maladies cardiaques
  • NE PAS prendre de décisions médicales basées sur ces résultats
  • NE PAS utiliser si vous portez un pacemaker ou un défibrillateur
  • NE PAS connecter à une alimentation secteur (risque d’électrocution)
  • Utiliser UNIQUEMENT avec une alimentation USB (batterie ou ordinateur)
  • Pour tout problème cardiaque, consultez un médecin

🧰 Matériel Nécessaire

Module Capteur ECG AD8232

Amplificateur de signal ECG mono-dérivation avec filtrage intégré

Voir sur didactico.tn →

Électrodes ECG (lot)

Électrodes autocollantes Ag/AgCl jetables avec gel conducteur

Voir sur didactico.tn →

Autres composants

  • Carte Arduino Uno R3
  • Câbles avec connecteur jack 3.5mm (inclus avec AD8232)
  • Câble USB type B
  • Câbles Dupont mâle-femelle (5 fils)

🔬 Comprendre l’Électrocardiogramme (ECG)

Un ECG mesure l’activité électrique du cœur. À chaque battement, une impulsion électrique parcourt le cœur, provoquant sa contraction. Cette impulsion génère un signal caractéristique composé d’ondes identifiables.

📊 FORME D’ONDE ECG — COMPLEXE PQRST
  Signal
  (mV)
   1.0 ┤              R
       │             ╱╲
   0.8 ┤            ╱  ╲
       │           ╱    ╲
   0.6 ┤          ╱      ╲
       │         ╱        ╲
   0.4 ┤        ╱          ╲
       │   P   ╱            ╲         T
   0.2 ┤  ╱╲  ╱    Complexe  ╲       ╱╲
       │ ╱  ╲╱     QRS        ╲     ╱  ╲
   0.0 ┤╱    Q                  ╲   ╱    ╲──────
       │                         ╲ ╱
  -0.2 ┤                          S
       └─────────────────────────────────────→ Temps
        │← P-R →│← QRS →│←── S-T ──→│

  Onde P   : Contraction des oreillettes (dépolarisation auriculaire)
  Complexe QRS : Contraction des ventricules (dépolarisation ventriculaire)
  - Q : petite onde descendante avant R
  - R : grand pic positif (le plus visible)
  - S : petite onde descendante après R
  Onde T   : Relaxation des ventricules (repolarisation ventriculaire)

  Intervalle P-R : 0.12 à 0.20 secondes (normal)
  Complexe QRS   : 0.06 à 0.10 secondes (normal)

  ⚠️ Rappel : ce module est pour l'ÉDUCATION uniquement !

🔌 Schéma de Câblage

📐 CÂBLAGE AD8232 → ARDUINO UNO
      Module ECG AD8232                  Arduino Uno R3
     ┌────────────────┐               ┌─────────────────┐
     │  GND           │──────────────→│ GND             │
     │  3.3V          │──────────────→│ 3.3V            │
     │  OUTPUT        │──────────────→│ A0 (Analog In)  │
     │  LO-           │──────────────→│ D11             │
     │  LO+           │──────────────→│ D10             │
     │                │               │                 │
     │  ┌──────────┐  │               │                 │
     │  │ Jack 3.5 │  │               │                 │
     │  │ Électrodes│  │               │                 │
     │  └──────────┘  │               └─────────────────┘
     └────────────────┘

  Connexion des électrodes (3 fils jack) :
  ┌─────────────────────────────────────────┐
  │                                         │
  │    RA (bras droit)    LA (bras gauche)   │
  │         ◉ Rouge           ◉ Jaune       │
  │         │                 │             │
  │         │    ┌───────┐    │             │
  │         └──→ │ AD8232│ ←──┘             │
  │              └───┬───┘                  │
  │                  │                      │
  │         RL (jambe droite)               │
  │              ◉ Vert                     │
  │              (référence/masse)          │
  │                                         │
  │  Position alternative (poignets) :      │
  │  Rouge → intérieur poignet droit        │
  │  Jaune → intérieur poignet gauche       │
  │  Vert  → cheville droite ou hanche      │
  └─────────────────────────────────────────┘

Broche AD8232 Broche Arduino Fonction
GND GND Masse
3.3V 3.3V Alimentation 3.3V
OUTPUT A0 Signal ECG analogique amplifié
LO- D11 Leads-Off Detection (-) : électrode déconnectée
LO+ D10 Leads-Off Detection (+) : électrode déconnectée

💻 Code Arduino — Moniteur ECG AD8232

📄 moniteur_ecg_ad8232.ino
// =============================================
// Moniteur ECG AD8232 — Arduino
// Visualisation sur Serial Plotter
// Tutoriel didactico.tn
// 
// ⚠️ USAGE ÉDUCATIF UNIQUEMENT
// PAS UN DISPOSITIF MÉDICAL
// =============================================

// --- Broches ---
const int brocheECG    = A0;   // Sortie analogique du AD8232
const int brocheLOMoins = 11;  // Leads-Off Detection -
const int brocheLOPlus  = 10;  // Leads-Off Detection +

void setup() {
  Serial.begin(9600);

  // Configurer les broches Leads-Off en entrée
  pinMode(brocheLOMoins, INPUT);
  pinMode(brocheLOPlus,  INPUT);

  Serial.println("Moniteur ECG AD8232 — didactico.tn");
  Serial.println("USAGE EDUCATIF UNIQUEMENT");
  Serial.println("Placez les 3 electrodes...");
  delay(2000);

void loop() {
  // --- Vérifier si les électrodes sont bien connectées ---
  if (digitalRead(brocheLOPlus) == 1 || digitalRead(brocheLOMoins) == 1) {
    // Une ou plusieurs électrodes sont déconnectées
    // Envoyer un signal bas pour l'indiquer sur le plotter
    Serial.println(0);
  } else {
    // --- Électrodes connectées : lire le signal ECG ---
    int valeurECG = analogRead(brocheECG);

    // Envoyer au Serial Plotter
    Serial.println(valeurECG);

  // Échantillonnage à ~200 Hz (suffisant pour un ECG basique)
  delay(5);

Version Avancée — Avec Détection de Pic R et BPM

📄 ecg_avance_bpm.ino — Version avec calcul BPM
// =============================================
// ECG AD8232 Avancé — Détection pic R + BPM
// ⚠️ ÉDUCATIF UNIQUEMENT
// =============================================

const int brocheECG     = A0;
const int brocheLOMoins = 11;
const int brocheLOPlus  = 10;
const int brocheLED     = 13;  // Clignote au rythme du cœur

// --- Détection de pic R ---
int seuil = 600;              // Seuil pour le pic R (ajuster)
bool picDetecte = false;
unsigned long dernierPic = 0;
int bpm = 0;

// --- Moyenne glissante pour BPM stable ---
int intervallesRR[8];
int indexRR = 0;
bool premierPic = true;

void setup() {
  Serial.begin(9600);
  pinMode(brocheLOMoins, INPUT);
  pinMode(brocheLOPlus,  INPUT);
  pinMode(brocheLED,     OUTPUT);

  // Initialiser les intervalles R-R
  for (int i = 0; i < 8; i++) {
    intervallesRR[i] = 800;  // 75 BPM par défaut

void loop() {
  // Vérifier les électrodes
  if (digitalRead(brocheLOPlus) == 1 || digitalRead(brocheLOMoins) == 1) {
    Serial.println("!");  // Électrode déconnectée
    delay(5);
    return;

  int ecg = analogRead(brocheECG);
  unsigned long maintenant = millis();

  // --- Détection du pic R ---
  if (ecg > seuil && !picDetecte) {
    picDetecte = true;
    digitalWrite(brocheLED, HIGH);

    if (!premierPic) {
      int rr = maintenant - dernierPic;

      // Filtrer les aberrations (25-200 BPM)
      if (rr > 300 && rr < 2400) {
        intervallesRR[indexRR] = rr;
        indexRR = (indexRR + 1) % 8;

        // Moyenne des 8 derniers R-R
        long somme = 0;
        for (int i = 0; i < 8; i++) somme += intervallesRR[i];
        bpm = 60000 / (somme / 8);

    } else {
      premierPic = false;

    dernierPic = maintenant;

  if (ecg < seuil - 30) {
    picDetecte = false;
    digitalWrite(brocheLED, LOW);

  // --- Envoi : Signal_ECG  BPM ---
  Serial.print(ecg);
  Serial.print("t");
  Serial.println(bpm);

  delay(5);

📋 Résultat sur le Serial Plotter

📈 SERIAL PLOTTER — SIGNAL ECG EN TEMPS RÉEL
  800 ┤          R              R              R
      │         ╱╲             ╱╲             ╱╲
  700 ┤        ╱  ╲           ╱  ╲           ╱  ╲
      │       ╱    ╲         ╱    ╲         ╱    ╲
  600 ┤──────╱──────╲───────╱──────╲───────╱──────── Seuil
      │  P  ╱   QRS  ╲  T ╱        ╲     ╱
  550 ┤ ╱╲ ╱          ╲╱╲╱          ╲╱╲ ╱
      │╱  Q            S              SQ
  500 ┤
      │
  450 ┤
      └──────────────────────────────────────────→ Temps
       BPM stable : ~72

  Signal propre = électrodes bien placées et peau propre
  Signal bruité = bouger moins, nettoyer la peau à l'alcool

🔧 Dépannage

Problème Cause probable Solution
Signal = 0 en continu Électrodes déconnectées (Leads-Off actif) Vérifier que les 3 électrodes sont bien collées sur la peau. Nettoyer la peau avec de l’alcool avant
Signal très bruité (50 Hz) Interférence du réseau électrique tunisien Alimenter l’Arduino par batterie USB (pas par le PC branché au secteur). Éloigner des sources 50 Hz
Pas d’ondes P-QRS-T visibles Mauvais placement des électrodes Utiliser la configuration Einthoven I : RA=poignet droit, LA=poignet gauche, RL=cheville droite. Rester immobile
Signal sature (1023 ou 0) Électrodes sèches ou mauvais contact Remplacer les électrodes (le gel sèche). Utiliser des électrodes neuves avec gel Ag/AgCl frais
BPM erratiques Seuil mal réglé ou artéfacts musculaires Ajuster le seuil en observant le signal brut. Rester parfaitement immobile et détendu pendant la mesure

🚀 Pour Aller Plus Loin

1. Station Santé Multi-Capteurs

Combinez l’ECG avec un capteur de pouls KY-039 et un capteur de température pour un monitoring complet.

Capteur KY-039 →

2. ECG WiFi avec ESP32

Envoyez le signal ECG sur un serveur web local avec l’ESP32 pour un affichage sur téléphone.

ESP32 WROOM-32 →

3. Affichage ECG sur Écran OLED

Affichez la courbe ECG en temps réel sur un écran OLED comme un vrai moniteur cardiaque portable.

Écran OLED 0.96″ →

❓ Questions Fréquentes

Où acheter un module ECG AD8232 avec électrodes en Tunisie ?

Le module ECG AD8232 et les électrodes Ag/AgCl sont disponibles sur didactico.tn avec livraison dans toute la Tunisie. Les électrodes ECG jetables sont vendues séparément.

Le module AD8232 est-il dangereux pour la santé ?

Alimenté par USB à 3.3V, le module AD8232 ne présente pas de danger pour une personne en bonne santé. Il ne fait que LIRE le signal électrique du cœur sans envoyer de courant. Cependant, il est INTERDIT de l’utiliser avec une alimentation secteur et DÉCONSEILLÉ pour les porteurs de pacemaker. C’est un outil éducatif, pas un appareil médical.

Quel projet biomédical Arduino réaliser pour un PFE en Tunisie ?

Un moniteur multi-paramètres combinant ECG (AD8232), oxymétrie (MAX30100), température (DS18B20) et affichage OLED est un excellent sujet de PFE en génie biomédical. Ajoutez une transmission WiFi avec ESP32 pour un monitoring à distance. Tous les composants sont disponibles sur didactico.tn.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *