Repository navigation
Home
Projet Home Trainer : Arduino UNO R4 WiFi, MQTT et Node-RED
Ce projet consiste à développer un prototype de surveillance de la fréquence cardiaque à partir d'un capteur ECG. Une carte Arduino traite le signal et transmet les mesures à une interface Node-RED grâce au protocole MQTT.

Figure 1 : Vue générale du projet.
Le système permet de suivre la fréquence cardiaque et de signaler certaines situations selon des seuils définis dans le programme.
Les principales fonctionnalités sont :
- affichage de la fréquence cardiaque en BPM sur un graphique ;
- activation et désactivation du système depuis Node-RED ou avec un bouton physique ;
- clignotement d'une LED en fonction de la fréquence cardiaque ;
- déclenchement d'un buzzer lorsque la fréquence cardiaque est inférieure à 50 BPM ou supérieure à 120 BPM, si le système est activé.
Ce projet est un prototype pédagogique. Il ne constitue pas un dispositif médical.
Le système repose sur trois éléments principaux :
- Arduino UNO R4 WiFi : lit le signal ECG, estime la fréquence cardiaque et commande les composants électroniques.
- Broker MQTT : assure l'échange des mesures et des commandes entre Arduino et Node-RED.
- Node-RED : affiche les données, mémorise l'état du système et gère la logique de l'alarme.
En résumé, Arduino mesure et exécute, tandis que Node-RED supervise et décide du déclenchement de l'alarme et la led.
flowchart LR
ECG["Capteur ECG"] --> A["Arduino UNO R4 WiFi"]
BTN["Bouton physique"] --> A
A -->|"BPM, bouton, état"| M(("Broker MQTT"))
M --> N["Node-RED"]
N -->|"Commandes LED et alarme"| M
M --> A
A --> LED["LED"]
A --> BZ["Buzzer"]
Figure 2 : Architecture générale du système.
| Fonction | Réalisation |
|---|---|
| Acquisition ECG | Le capteur fournit un signal analogique à Arduino. |
| Calcul du BPM | Arduino détecte les battements à partir du signal mesuré. |
| Visualisation | Node-RED affiche les mesures sous forme de graphique. |
| Commande du système | Le bouton physique ou le dashboard permet de changer l'état du système. |
| Signalisation lumineuse | Arduino fait clignoter la LED selon la cadence reçue. |
| Alarme sonore | Node-RED détermine si l'alarme doit être activée ; Arduino commande le buzzer. |
Logique d'alarme :
| Condition | Système activé | Système désactivé |
|---|---|---|
| BPM < 50 | Alarme | Aucune alarme |
| 50 ≤ BPM ≤ 120 | Normal | Normal |
| BPM > 120 | Alarme | Aucune alarme |
Ces seuils correspondent aux paramètres du prototype et ne sont pas des seuils médicaux universels.
Le prototype utilise une carte Arduino UNO R4 WiFi, un capteur ECG, une LED avec sa résistance, un buzzer, un bouton-poussoir, des fils de connexion et une breadboard.
Les outils logiciels sont :
- [PlatformIO](https://platformio.org/) pour programmer la carte ;
- [Node-RED](https://nodered.org/docs/) pour créer le flow et le dashboard ;
- [PubSubClient](https://github.com/knolleary/pubsubclient) pour la communication MQTT ;
- [Broker public EMQX](https://www.emqx.com/en/mqtt/public-mqtt5-broker) pour échanger les messages.
La fiabilité du calcul du BPM dépend de la qualité du signal ECG, du positionnement des électrodes et des seuils utilisés dans le programme. La communication dépend également de la disponibilité du réseau Wi-Fi et du broker MQTT.
Projet pédagogique : cycle ingénieur ISIS.