Loujayne Ben Hassine
Tiny ML · IOT · Système embarqué & cloud

ARIA

Un moniteur de signes vitaux temps réel, capable de détecter une arythmie directement sur la carte, et de transmettre chaque battement vers le cloud.

Flux 1Acquisition & intelligence embarquée
Flux 2Analytics & tableaux de bord cloud
StatutPipeline validé de bout en bout
01
Le contexte

Le cœur ne prévient pas toujours avant de décrocher.

Une arythmie peut être brève, silencieuse, et invisible lors d'une simple consultation. La détecter suppose une surveillance continue — quelque chose qu'un hôpital ne peut offrir à chaque patient, en permanence.

ARIA déplace cette surveillance vers un objet compact : il capte, filtre et interprète le signal ECG en local, puis relaie l'essentiel — la donnée et l'alerte — vers un praticien, où qu'il soit.

02
Ambition du projet

Un pipeline complet, de l'électrode au tableau de bord.

Chaque brique est pensée pour un usage médical embarqué : faible latence, validation clinique, et fiabilité éprouvée avant tout ajout de fonctionnalité.

01
Acquisition temps réel du signal ECG via un microcontrôleur STM32 et un front-end analogique dédié.
02
Filtrage numérique passe-bande et réjecteur secteur, puis détection des complexes QRS.
03
Validation clinique de la chaîne de traitement sur des jeux de données publics (MIT-BIH).
04
Alerte locale et distante — buzzer, LED, écran, puis tableau de bord cloud pour le suivi à distance.
03
Architecture globale

De l'électrode au smartphone, en cinq étapes.

AD8232 · Front-end ECG
STM32 NUCLEO-F446RE
UART
ESP32-S3 · MQTT/TLS
ThingSpeak
App Flutter
Dashboard
04
Chaîne de traitement

Faire parler un signal noyé dans le bruit.

Échantillonné à 250 Hz par interruption matérielle, le signal traverse une chaîne inspirée de Pan-Tompkins avant toute décision.

01

Passe-haut

β = 0.995 — retire la dérive de ligne de base

02

Réjecteur 50 Hz

Biquad IIR — élimine le bruit secteur

03

Passe-bas

α = 0.1 — lisse le tracé filtré

04

Dérivée + carré

Accentue la pente du complexe QRS

05

Intégration

Fenêtre glissante de 38 échantillons

06

Seuil adaptatif

Moyenne + 0.5σ sur 500 échantillons

Détection des pertes d'électrode · confirmation sur 25 échantillons
Période réfractaire · 125 échantillons
05
Intelligence embarquée

Un réseau de neurones qui tient dans 14 kilo-octets.

Un CNN 1D détecte l'arythmie directement sur le microcontrôleur — sans dépendre d'une connexion pour interpréter un battement.

%
Précision après quantification int8
0
Segments d'entraînement (MIT-BIH)
patients
Diversité des enregistrements sources
Ko RAM
Empreinte mémoire d'activation
Modèle 110 Ko · X-CUBE-AI 10.2.0
Filtre notch appliqué en amont du buffer d'inférence
06
Connectivité & sécurité

La donnée quitte la carte chiffrée, jamais en clair.

L'ESP32-S3 relaie chaque mesure vers le cloud par MQTT sur TLS, et sert en parallèle un tableau de bord local pour un accès immédiat, sans dépendre d'Internet.

→
MQTT / TLS · port 8883 — chaque trame est authentifiée avant transmission.
→
Tableau de bord local — routes /api/ecg et /api/vitals, protégées par authentification.
→
ThingSpeak — canal partagé, alimentant en parallèle le pipeline analytique du binôme.
07
Application compagnon

Le patient à distance, à portée d'écran.

Tableau de bord
Constantes en direct, rafraîchies toutes les 5 secondes
Historique
Tendances et export CSV des mesures
Dossier patient
Profil et contexte clinique
Centre d'alertes
Notifications d'événements détectés
ARIA · Tableau de bord
ARIA · Historique
08
Validation & rigueur

Chaque module validé avant d'être assemblé.

L'intégration ne commence qu'une fois chaque brique éprouvée isolément — de l'acquisition au modèle embarqué.

44 battements normaux consécutifs confirmés RMSSD dans la plage physiologique attendue Score d'arythmie : 0
09
Défis techniques

Ce que le matériel a fini par nous apprendre.

TIMER · TIM2

Une période par défaut à 0xFFFFFFFF

CubeMX ne cale pas la fréquence d'échantillonnage seul : PSC=15 et ARR=3999 ont dû être fixés manuellement pour obtenir 250 Hz à 16 MHz.

X-CUBE-AI

Erreur d'initialisation du réseau (code 19)

Le buffer d'activation doit être explicitement casté en (ai_handle) — sans quoi l'inférence échoue silencieusement sur le F446RE.

FILTRAGE

Le réjecteur 50 Hz n'est pas interchangeable

Il doit s'appliquer après le passe-haut, sur le buffer dédié au CNN — pas sur la voie de détection QRS, sous peine de dégrader les deux.

DÉTECTION

Un seuil fixe ne survit pas au bruit réel

Les enregistrements MIT-BIH bruités imposaient un seuil glissant — moyenne et écart-type recalculés en continu, plutôt qu'une constante globale.

Merci de votre attention

ARIA

Un signal capté, compris, et transmis — du corps jusqu'au cloud, sans jamais perdre un battement.

Questions & discussion
01 / 13
Ouverture
← → naviguer espace suivant F plein écran