Julien ESCOLANO Article de projet Electrocardiogramme projet Tuteuré Université de Picardie Jules Verne IUT Cuffies .pdf



Nom original: Julien ESCOLANO - Article de projet Electrocardiogramme - projet Tuteuré Université de Picardie Jules Verne - IUT Cuffies.pdfTitre: Rapport de Projet Tuteuré - ECG AD8232 arduino nano V1 IUT GEII Soissons

Ce document au format PDF 1.5 a été généré par LaTeX with hyperref / pdfTeX-1.40.20, et a été envoyé sur fichier-pdf.fr le 16/06/2021 à 19:41, depuis l'adresse IP 176.179.x.x. La présente page de téléchargement du fichier a été vue 12 fois.
Taille du document: 4.4 Mo (28 pages).
Confidentialité: fichier public


Aperçu du document


Rapport de projet
Tuteuré

Electro Cardiogramme
(Électro-fréquencemètre)





Escolano Julien



DUT 1
Tuteur : Mr. Sivert

Julien ESCOLANO

Rapport de projet

GEII 1

Remerciements :

Nous souhaiterions remercier plusieurs personnes qui nous ont permis de mener à bien ce
projet :
Tout d’abord notre tuteur, personne de confiance et bienveillante qui a su mettre à
profit son temps libre et son savoir pour nous aider à réaliser notre projet.
Également toute l’équipe pédagogique qui à su nous faire confiance.
Nous remercions enfin le personnel de l’UPJV et en particulier le chef du département GEII : Mr Lamart.
Une mention particulière à Hugues GARNIER professeur agrégé à l’Université Polytech de Nancy qui nous a mis à disposition ses éléments de cours sur la conception de filtres
numériques. Ses démonstrations ont été pour nous le point de départ de notre réflexion.

Année 2020 - 2021

-2/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

GEII 1

Sommaire
I

Introduction
A
B
C

II

5

Présentation du cahier des charges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Contenu du rapport & contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Gantt du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Description du travail proposé
A
B
C

Réception des composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Test des capteurs ECG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Approfondissement des tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

III

Forum Arduino
A
B

10

Recherche et Datasheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Recherche sur le Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

IV

Des interrogations
A
B

V

7

11

Des questions de démarrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Des problèmes de captage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Utilisation de filtres
A
B
C
D

Année 2020 - 2021

12

Filtres internes au PCB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Étude approfondie du PCB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Filtres coupe bande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Filtres d’Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

-3/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

VI

Programmation
A
B

VII

GEII 1

20

1er programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Communication bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

Conclusion
A
B
C

26

Diagramme de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Conclusion du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Note : Dans cet ouvrage certains passages peuvent s’avérer trompeur pour le lecteur ; ces passages seront signalés en
marge par le symbole

Année 2020 - 2021

.

-4/28-

Institut Universitaire de Cuffies

Julien ESCOLANO

I
A

Rapport de projet

GEII 1

Introduction

Présentation du cahier des charges

Dans cet article nous allons nous intéresser à la réalisation d’un projet Arduino consistant à concevoir un électrocardiogramme à l’aide de capteurs corporels situés sur le buste.L’objectif de ce projet sera de pouvoir afficher un spectre
cardiaque fiable semblable à celui que l’on retrouve en milieu Hospitalier
Afin de pouvoir identifier clairement notre but, nous avons élaboré un cahier des charges nous permettant de concevoir
un produit correspondant aux attendus du sujet proposé.
Élaborons un cahier des charges :
♣ Concevoir un électro-cardiogramme :








B

Dispositif peu coûteux
Objectif de projet réalisable
Avoir un dispositif sur pile portatif
Simplicité d’utilisation
Affichage convivial
Fiabilité des résultats
Identifier les différents types de signaux

Contenu du rapport & contexte

Dans ce rapport vous trouverez l’évolution de notre projet depuis l’idée en septembre jusqu’à la réalisation finale pour la
première semaine du mois de juin.
Fruit de travail d’une année d’étude d’un étudiant de Génie Électrique et Informatique Industrielle.
Contexte : Ce projet s’est déroulé pendant la période de crise sanitaire COVID-19.
Nota : Ce projet s’est déroulé en accord avec le respect des gestes barrières.

Année 2020 - 2021

-5/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

C

GEII 1

Gantt du projet


Gantt Afin de pouvoir nous situer dans la période de réalisation et ne pas prendre du retard nous écrivons un diagramme
de Gantt nous pouvons gérer le temps consacré à notre projet en estiment la durée nécessaire de chaque tâche.
Liste des semaines du projet (no de semaine) :
3

4

5

6

7

8

9 10 11 12 13 14 15 16 17 18 19 20 21 22

Rédaction du rapport
1 - Étude
Répartition des taches
Étude du projet
Fin d’étude de projet
2 - Simulation
Acquisition du signal
Calcul des valeurs des filtres
Mise en place des filtres
Gestion du terminal
Test de la simulation
Fin de simulation
3 - Réalisation
Montage
Tests
Résolutions des problèmes
Fin de montage
4 - Soutenance
Fin de Projet

Année 2020 - 2021

-6/28-

Institut Universitaire de Cuffies

Julien ESCOLANO

II

Rapport de projet

GEII 1

Description du travail proposé



Concevoir un produit utilisateur capable de mesurer la fréquence cardiaque à moindre coût



Notre objectif est de pouvoir réaliser un Électrocardiogramme "portatif". Nous avons choisi d’utiliser un Arduino
comme micro-ordinateur (permettant de calculer les signaux des capteurs), des capteurs ECG 1 commandés par une carte
électronique qui fait l’acquision des signaux, un écran à cristaux liquides pour pouvoir afficher sur un terminal les résultats des capteurs. Pour rendre le système portatif nous ajouterons en fin de projet des batteries lithium ion permettant
l’alimentation continue sans discontinuité sans etre dépendant prises électrique 230V transformé 5V.
Notre choix s’est porté sur ces composants car ils sont peu onéreux, faciles d’utilisation 2 et d’une acquision grand
publique. L’Arduino est programmable/reprogrammable à l’infini (contrairement à d’autres cartes qui ne le sont qu’une
fois ou d’autres qui nécessitent un processus complexe d’effacement des donnée entre chaque modification du programme).

A

Réception des composants

Après que notre projet ait été validé par notre tuteur et le chef d’étude nous avons commandé et reçu les composants.
Lors de la réception nous nous sommes rendu compte qu’aucune documentation technique n’était pas fournie 3 . Nous
avons cherché sur internet si la référence du capteur ECG était utilisé par d’autres personnes et nous avons trouvé un
blog présentant la carte électronique et ses caractéristiques. Voici un exemple de lien :
https://www.instructables.com/ECG-Monitoring-System-by-Using-Arduino-or-AD8232/
Sur ce blog, l’utilisateur utilise la carte pour un projet similaire au nôtre et présente un premier programme .ino.
Nous décidons de le télécharger pour pouvoir regarder comment il était constitué. Voici le programme en question :

1
2
3

void setup ( ) {
pinMode ( 1 0 ,INPUT) ;
pinMode ( 1 1 ,INPUT) ;

4
5

}

6
7
8
9
10
11
12
13
14
15
16
17
18

void loop ( ) {
S e r i a l . begin (9600) ;
i f ( ( d i g i t a l R e a d ( 1 0 ) ==1) | | ( d i g i t a l R e a d ( 1 1 ) ==1) ) {
S e r i a l . p r i n t l n ( " Gagal " ) ;
}
else{
S e r i a l . p r i n t l n ( analogRead (A1) ) ;
}
delay (100) ;
S e r i a l . end ( ) ;
delay (100) ;
}

Le problème c’est que plusieurs choses nous semblaient ne pas correspondre et le programme ne fonctionnait pas
correctement.
Nous décidons alors de tester les capteurs directement avec un osciloscope à l’aide d’une platine de montage et de câbles
BNC.
1. ECG - Electro cardiogramme.
2. Nous verrons dans ce compte rendu que la programmation ne sera pas aussi facile.
3. Il s’agit de documents fournis par le constructeur présentant les caractéristiques technique du composant.

Année 2020 - 2021

-7/28-

Institut Universitaire de Cuffies

Julien ESCOLANO

B

Rapport de projet

GEII 1

Test des capteurs ECG

Nous branchons les capteurs sur un cobaye et la carte électronique à un osciloscope pour afficher les résultats. Voici une
photo du montage que nous avons réalisé :

Figure 1 – Photo du test du capteur à l’aide d’un cobaye
Sur le cobaye trois capteurs sont positionnés de manière stratégique :
† Capteur rouge RA - IN −
† Capteur vert LA - IN +
† Capteur jaune RL
En y regardant de plus près ; nous constatons que sur le PCB de l’ampli, il y a les 3 entrées. Il est alors possible de
vérifier à l’ohmmètre quelles sont les électrodes RA, LA, RL et témoigner de leur bon fonctionnement.
Après plusieurs réglages sur l’osciloscope nous pouvons voir le rythme cardiaque transmis par les capteurs ECG. Voici une
capture d’écran de l’osciloscope donnant ces résultats :

Figure 2 – Captures d’écran de l’osciloscope

Année 2020 - 2021

-8/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

GEII 1

Comme nous disposons de matériels récents nous avons pu exporter les courbes de l’oscilloscope sous forme de tableau
à virgule fichier .csv puis traiter les données à l’aide d’un tableur. Nous avons pu créer le graphique suivant :

Graphique traité de l'osciloscope
3
2,5
2
1,5
1
0,5
0
0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

-0,5

Figure 3 – Graphique de la courbe traité par Excel

C

Approfondissement des tests

Après avoir constaté le bon fonctionnement du matériel nous avons poussé nos tests avec le capteur ECG.
Nous avons refait une batterie de tests de captage du pouls. Voici les courbes de l’oscioscope :

Figure 4 – 1er courbe des nouveaux tests

Figure 5 – Courbe du batement du coeur

Sur la Figure 5, nous distinguons clairement la courbe du battement du coeur avec son allure très reconnaissable.
Montage réalisé : Branchement direct du capteur sur l’osciloscope, alimenté en 3.3V à l’aide d’un générateur électrique
de laboratoire.

Année 2020 - 2021

-9/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

III
A

GEII 1

Forum arduino

Recherche et Datasheet

Nous décidons de nous documenter sur le forum Arduino et découvrons qu’il existe des shields 4 qui permettent de
faire des électro-cardiogrammes dit portatif de différentes manières :
? Par laser comme pour les montres
? Par amplificateur du bio potentiel comme l’AD8232 5
Sur le Forum arduino de nombreuses pages parlent de notre capteur. Nous y trouvons également la datasheet 6 nous
permettant de comprendre en détail le fonctionnement du PCB :
https://www.analog.com/media/en/technical-documentation/data-sheets/ad8232.pdf
Nous y trouvons le schéma fonctionnel de l’ampli :

FUNCTIONAL BLOCK DIAGRAM

1

18

19

20

HPSENSE

IAOUT

REFIN

S1 10kΩ

A3

17

16

+VS

GND

HPDRIVE
FR

15

AC/DC

14

SDN

13

+IN
2

IA

–IN
3

AD8232

150kΩ
4

LOD+
C1
12

RLDFB
LEADS-OFF
DETECTION

A2

5

RLD

LOD–
11
C2

S2
10kΩ
OPAMP+
6

REFOUT
7

OPAMP–
8

9

OUT

10

10866-001

A1

SW

Figure 1.

Figure 6 – schéma tiré de la Datasheet
Lorsque que nous connectons les capteurs ; une led s’allume en fonction des impulsions sur le signal de sortie et permet
de savoir visuellement si la réception des battements du cœur est bien reçue.

4. cartes d’extension, module complémentaire au circuit généralement conçu pour Arduino
5. L’AD8232 est la référence du module ECG que nous utilisons pour capter le rythme cardiaque
6. Il s’agit de documents fournis par le constructeur présentant les caractéristiques techniques du composant.

Année 2020 - 2021

-10/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

B

GEII 1

Recherche sur le Web

Ne sachant pas vraiment comment fonctionne cette carte nous cherchons de l’aide sur internet. Seuls quelques blogs
de l’autre coté de l’atlantique traitent du sujet en restant assez vague sur leurs programmes. Parmi ces sites voici les plus
pertinents que nous souhaitons mettre en avant :
? Ce blog permet d’avoir juste un moniteur grâce à la liaison série :
https://www.instructables.com/ECG-Monitoring-System-by-Using-Arduino-or-AD8232/
? De meme pour ici, qui explique un peu mieux :
https://learn.sparkfun.com/tutorials/ad8232-heart-rate-monitor-hookup-guide?_ga=2.54916523.1050236860.
1613662700-154441868.1613662700
https://github.com/sparkfun/AD8232_Heart_Rate_Monitor/blob/master/Software/Heart_Rate_Display_Arduino/
Heart_Rate_Display_Arduino.ino
? Un article « Prototype Low-cost Portable Electrocardiogram (ECG) Based on Arduino-Uno with Bluetooth
Feature »
https://aip.scitation.org/doi/pdf/10.1063/1.5139392
https://www.researchgate.net/publication/336988184_Towards_IoT_and_ML_Driven_Cardiac_Status_Prediction_
System
? Mesure BPM :
https://www.xtronical.com/basics/heart-beat-sensor-ecg-display/
? un ECG IOT avec un ESP32
https://how2electronics.com/iot-ecg-monitoring-ad8232-sensor-esp32/

IV
A

Des interrogations

Des questions de démarrages

Après cette étude des questions se posent :





Quelle est la sensibilité du capteur AD832 ? Donc quelle est le signal récupéré ?
Quelle fréquence d’échantillon doit-on utiliser ?
Est-ce que ce signal est fort perturbé par la CEM ? Peut-on mesurer les temps QST ?
Peut-on utiliser la fonction pulseInpulseIn(Signal_GBF, LOW); 7 pour avoir le BPM ?

7. Il s’agit d’une fonction arduino permettant de calculer le battement par minute d’un signal entré donné

Année 2020 - 2021

-11/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

B

GEII 1

Des problèmes de captage

Sur le forum, il y aurait quelques soucis d’utilisation de ce capteur « Problem with AD8232 ECG WaveForm ». Il ne
faut pas trop bouger car toute activité musculaire provoque des bio potentiels supérieurs à celle du cœur et vont saturer
le capteur.
https://forum.arduino.cc/?topic=706502#msg4749936
https://forum.arduino.cc/index.php?topic=405315.0
En utilisant le capteur, nous remarquons que le PCB effectue déja un premier écrémage du signal. Il le lisse un
minimum pour éviter de transmettre trop de parasites ce qui nécessite un temps d’initialisation au début de la pose de
quelques minutes ; (Note : à chaque fois que les capteurs ne détectent plus de signal que ce soit dû à un bug ou à un
décollement d’un patch, le pcb devra à nouveau effectuer une nouvelle initialisation pour pouvoir transmettre les données).

V

Utilisation de filtres

En analysant nos résultats précédents et en lisant la documentation technique, nous nous rendons compte de plusieurs
choses...

A

Filtres internes au PCB
Principe initial :

Le signal du battement du cœur est généralement compris entre 60 BPM et 120 à 150 BPM. La plage de signal qui nous
intéressera dans notre étude sera comprise entre 1 et 2 voir 3 Hz.
En lisant la documentation technique, nous constatons que le PCB est doté d’un filtre passe bande permettant de ne
transmettre que les fréquences comprises entre ≈ a0, 5 et ≈ 40Hz. Voici la courbe du filtre 8 réalisé :
70
60

MAGNITUDE (dB)

50
40
30
20

0
0.01

0.1

1

10

FREQUENCY (Hz)

100

1k

10866-061

10

Figure 7 – Frequency Response of Cardiac Monitor Circuit
Avec 30 point par seconde signal le plus rapide, il faudra un taux d’échantillons (sampler) de 100Hz. Est-ce que ce
sera suffisant ?
8. Cette courbe est disponible dans la doc technique en page 28

Année 2020 - 2021

-12/28-

Institut Universitaire de Cuffies



Rapport de projet

Julien ESCOLANO

B

GEII 1

Etude approfondie du PCB

Dans la bibliographie, l’ampli donne une tension moyenne autour de 1.5V car celui-ci est alimenté en 3.3V.
On peut observer sur l’oscilloscope suivant, le signal correct avec un bruit faible de 0.2V de la tension secteur 50Hz.

Figure 8 – Oscilloscope avec les pics et le bruit du 50Hz
Voici ce que cela donne sur l’IDE Arduino :

Nous remarquons que le placement des électrodes est très important. En les plaçant de manière l’égerment différemment on constate un tout autre signal, regardons à l’osciloscope ce qu’il nous dessine :

Année 2020 - 2021

-13/28-

Institut Universitaire de Cuffies

Julien ESCOLANO

Rapport de projet

GEII 1

Figure 9 – Oscilloscope avec un nouveau placement des électrodes
D’ailleurs, nous remarquons sur ces graphiques que la fréquence est supérieure à 5Hz ce qui n’est normalement
pas possible !
Lorsqu’on bouge, le potentiel du corps change et provoque une perte des bio potentiels avec le signal qui passe à 0 ou à
3.3V.
Les sorties Lo+ et Lo− permettent de savoir si les bio potentiels sont détectés. Mais on peut observer qu’ils peuvent
être à 0 alors que le signal n’est pas encore lu et qu’il est fortement bruité comme vous pouvez le voir sur l’afficheur des
deux courbes suivantes :

Figure 10 – IDE des courbes avec du bruit

Année 2020 - 2021

-14/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

C

GEII 1

Filtre coupe bande

Lors de nos tests un premier problème est apparu car sans compter le fait que les capteurs ne captent pas systématiquement le battement cardiaque, le module ECG fait antenne et capte beaucoup de fréquences parasites.
Le parasite le plus important reste le 50 Hz 9 qui vient parasiter le signal.
Sur le graphique précédent (Figure 10) vous pouvez voir que l’allure de la courbe est parasitée par le bruit du 50Hz.

En se documentant sur le Web nous sous rendons compte que le problème est connu.
Une thèse « Traitement des signaux à échantillonnage irrégulier Application au suivi temporel de paramètres
cardiaques » présente le problème et montre la difficulté de faire le traitement du signal d’un ECG.
http://docnum.univ-lorraine.fr/public/INPL_T_1999_FONTAINE_L.pdf

Après avoir identifié ce problème nous optons pour la réalisation d’un filtre coupe bande. Comme son nom l’indique, ce
filtre permet de cibler une fréquence et l’atténuer au maximum permettant ainsi de lisser le signal.

1 − 2 cos(Ω0 ) · z −1 + z −2
f (z, a) =
1 − 2a · cos(Ω0 ) · z −1 + a · z −2

Avec une fréquence de coupure de 2 × f0 , les coefficients z −1 s’en vont et demandent peu de calcul. On peut observer
que le coefficient a permit d’avoir plus ou moins d’atténuations, mais provoque un gain statique diffèrent de 1. Il faut au
moins 4 échantillons pour que le filtre fonctionne, donc il faut au moins une fréquence d’échantillonnage de fe = 200 Hz
avec une routine d’interruption de 5ms :

1 − 2 cos(Ω0 ) · z −1 + z −2
1 − 2a · cos(Ω0 ) · z −1 + a · z −2
f0
Ω0 =
fe
50
=
200

f (z; a) =

=0

z }| {
1 − 2 cos(Ω0 ) ·z −1 + z −2
f (z, a) =
1 − 2a · cos(Ω0 ) ·z −1 + a · z −2
|
{z
}
=0

On prendra a = 0, 8

En prenant plusieurs valeurs nous obtenons les résultats suivants :
f (1; 0, 7)
= 1, 342
---

f (1; 0, 9)
= 1, 105
---

f (1; 1)
=1
—–

9. Le 50Hz est la fréquence du courant alternatif distribué par EDF, pour l’alimentation du matériel de laboratoire, les lampes et autres
instruments branchés sur le 230V

Année 2020 - 2021

-15/28-

Institut Universitaire de Cuffies

Julien ESCOLANO

Rapport de projet

GEII 1

On obtient les courbes suivantes :

Figure 11 – Courbe filtre passe bande
Appliquons à présent le filtre à nos valeurs relevées à l’aide de l’oscilloscope :
pour cela nous récupérons les points de de la courbe dans un fichier .CSV. Nous traitons ensuite le signal dans Excel.
Voici la formule qui est appliquée aux cellules contenant les différents points de la courbe.


=B4+B2-($F$3)∧2∗C2

Figure 12 – Capture d’écran Excel
En bleu la courbe initiale (qui s’apparente même plus à une bande qu’a une courbe) et en orange la courbe après traitement
par le filtre.
La courbe en gris correspond à la valeur absolue de la dérivée d’euler |E | traité dans la partie suivante.
Appliquons à présent ce filtre dans notre code Arduino.

Année 2020 - 2021

-16/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

1
2
3
4
5

GEII 1

#i n c l u d e <Wire . h>
#i n c l u d e <L i q u i d C r y s t a l . h>
#i n c l u d e <S o f t w a r e S e r i a l . h>
#i n c l u d e <TimerOne . h>
//#i n c l u d e <math . h>

6
7
8
9

S o f t w a r e S e r i a l hc06 ( 1 0 , 1 1 ) ;
// nano
#d e f i n e LED13
13
LiquidCrystal lcd (9 , 8 , 4 , 5 , 6 , 7) ;

// L i q u i d C r y s t a l l c d ( r s , en , d4 , d5 , d6 , d7 ) ;

10
11
12
13
14
15

#d e f i n e PI 3 . 1 4 1 5 9 2
unsigned
int
temps =0;
unsigned
int
e n t r e e =0;
unsigned
int
e n t r e e n 1 =0;
unsigned
int
e n t r e e n 2 =0;

16
17
18
19

float
float
float

filtre ;
filtren1 ;
filtren2 ;

20
21
22

int derivation ;

23
24
25
26
27

unsigned i n t
unsigned i n t
byte t f l a g ;
b o o l f l a g =0;

centi ;
periode ;

28
29
30

unsigned
unsigned

int
int

s e n s i b i l i t e =0;
BPM=0;

31
32
33
34
35

b o o l LOm;
b o o l LOp ;
f l o a t I n a v e r a g e =337;
f l o a t Inaverage1 ;

36
37
38
39
40
41

void setup ( ) {
pinMode ( LED13 , OUTPUT) ;
pinMode ( 2 , INPUT) ; // Setup f o r l e a d s o f f d e t e c t i o n LO +
pinMode ( 3 , INPUT) ; // Setup f o r l e a d s o f f d e t e c t i o n LO −

42
43
44
45
46

Timer1 . i n i t i a l i z e ( 5 0 0 0 ) ;
Timer1 . a t t a c h I n t e r r u p t ( c a l l b a c k ) ;
lcd . begin (20 , 4) ;

//
pour 0 . 0 0 1 s 1000
0 . 0 0 2 s 2000
0 . 0 1 s 10000
// a t t a c h e s c a l l b a c k ( ) a s a t i m e r o v e r f l o w i n t e r r u p t
// m o d i f i e r pour un a f f i c h e u r 20 x4

47
48
49
50

S e r i a l . begin (57600) ;
//
b r o c h e RX, TX 0 e t 1 m o n i t e u r s e r i e
hc06 . b e g i n ( 5 7 6 0 0 ) ;
//AT+UART=57600 ,0 ,0
b r o c h e 10 e t 11
r o u t i n e dure 5ms
// hc06 . b e g i n ( 1 1 5 2 0 0 ) ;
// r o u t i n e dure 3ms

51
52
53
54
55
56
57

lcd
lcd
lcd
lcd
}

.
.
.
.

setCursor (0 ,0) ;
p r i n t ( "ECG IUT s o i s s o n s " ) ;
setCursor (0 ,1) ;
p r i n t ( "BPM" ) ;

58
59
60
61
62
63
64

// I n t e r r u p t i o n s
t o u s l e s 0 . 0 0 5 s f a i t par l e t i m e r 1
void c a l l b a c k ( ) {
c e n t i ++;
temps++;

f e =200Hz ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗

65
66
67
68
69
70

// i f ( d i g i t a l R e a d ( 1 3 )== 1 ) { d i g i t a l W r i t e ( 1 3 ,LOW) ; }
e l s e { d i g i t a l W r i t e ( 1 3 ,HIGH) ; }
d i g i t a l W r i t e ( 1 3 ,HIGH) ;
e n t r e e n 2=e n t r e e n 1 ;
e n t r e e n 1=e n t r e e ;
e n t r e e=analogRead (A0) ;
// c o n v e r t i s s e u r 10 b i t s s o u s 5V

71
72
73

f i l t r e n 2=f i l t r e n 1 ;
f i l t r e n 1= f i l t r e ;

Année 2020 - 2021

-17/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

74

f i l t r e =e n t r e e+e n t r e e n 2 −0.49∗ f i l t r e n 2 ;

GEII 1

// 0 . 7 ^ 2 = 0 . 4 9

75
76

d e r i v a t i o n =4∗abs ( f i l t r e − f i l t r e n 1 ) ;

// 6 c o e f i c i e n t d ’ a m p l i f i c a t i o n

77
78
79
80
81

t f l a g ++;
i f ( d e r i v a t i o n >300) { p e r i o d e=c e n t i ;
i f ( p e r i o d e <400 && p e r i o d e >60)
i f ( f l a g ==1 && t f l a g >=5) { f l a g =0;}

c e n t i =0; f l a g =1; t f l a g =0;
{BPM=12000/ p e r i o d e ;
}}
// d e l a y de 0 . 0 5

// 60∗200/ p e r i o d e

<2s && >0.3 s

82
83
84
85

86

87
88
89

// t r a c e u r s e r i e
Serial . print ( entree ) ; Serial . print ( " , " ) ; Serial . print ( f i l t r e ,0) ; Serial . print ( " , " ) ; Serial . print (
d e r i v a t i o n ) ; S e r i a l . p r i n t ( " , " ) ; S e r i a l . p r i n t l n (BPM) ;
// f i c h i e r b l u e t o o t h e l e c t r o n i c
h t t p : / /www. keuwl . com/ apps / b l u e t o o t h e l e c t r o n i c s / u s e r g u i d e / remote_code
. html
/∗
i f ( hc06 . a v a i l a b l e ( ) ) {
S e r i a l . w r i t e ( hc06 . r e a d ( ) ) ;
}

90
91
92

93

94
95

// hc06 . p r i n t ( " ∗G" ) ; hc06 . p r i n t ( S t r i n g ( e n t r e e ) +" ,"+ S t r i n g ( d e t e c t i o n ) ) ; hc06 . p r i n t l n ( " ∗ " ) ;
bauds mais 300 us à 115200 bauds
// hc06 . p r i n t ( " ∗ b " ) ; hc06 . p r i n t ( S t r i n g (BPM) ) ; hc06 . p r i n t l n ( " ∗ " ) ;
bauds , l a r o u t i n e d ’ i n t e r r u p t i o n dure 5ms
// hc06 . p r i n t ( " ∗ p " ) ; hc06 . p r i n t ( S t r i n g ( p e r i o d e ) ) ; hc06 . p r i n t l n ( " ∗ " ) ;
∗/

//15ms à 9600
// a v e c 57600

96
97
98
99

// r a f r a i c h i s s e m e n t t o u s l e s 5 s
i f ( temps >=500)
{ temps =0; }
d i g i t a l W r i t e ( 1 3 ,LOW) ;

100
101

} // f i n r o u t i n e

102
103

void loop ( ) {

104
105

} // f i n l o o p

On obtient sur le terminal la courbe suivante :

Figure 13 – Spectre du terminal Arduino
On voit en bleu la courbe initiale altérée par le 50Hz (image du signal d’entrée) et en rouge le signal de sortie après
traitement numérique par l’Arduino. Les données sont maintenant exploitables, ce qui nous amène à la réalisation d’un
nouveau filtre permettant d’extraire les pics du spectre.

Année 2020 - 2021

-18/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

D

GEII 1

Filtre d’Euler

En enregistrant les données dans un fichier .CSV pouvant être lu par Excel, on peut s’apercevoir que les points R, S, T
sont très rapides et avec une fréquence d’échantillonnage de 0.01s . Un seul échantillon est mesuré.
y2 − y1
Ce que dit Euleur pour une pente entre deux points :
x2 − x1
Équation signal : 1024 · sin(2π · 5)
Équation dérivée : 1024 · 2π · 5 cos(2π5)
En faisant la dérivée d’Euler :

Sn − Sn−1
∆T
signal n − 1 et ∆T temps d’échantillon, on peut détecter très facilement RST.
E =

Avec Sn signal n, Sn−1

Pour lire le battement cardiaque, la valeur absolue d’Euler (abrégé en |E |) donne encore une meilleure précision comme
on peut l’observer sur la figure suivante réalisée avec les données sur Excel :

Figure 14 – Capture d’écran, courbe avec le signal, E 0 et |E |

Comme énoncé précédemment, suite à différents essais, le signal peut être très variable en fonction du placement des
électrodes et du type de personne.
Grâce à E 0 , il est facile de détecter le BPM.
Mais, si la valeur moyenne n’est pas aux alentours de 1.65V (337 dec), le BPM ne sera pas correcte... La valeur moyenne
peut être mesurée sur 3 secondes avec l’équation suivante :

P
V
Vmoy =
∆temps
Il est possible de mesurer la sensibilité du signal toutes les 3 secondes pour valider le BPM.
Avec ce nouveau filtre le calcul du battement par minute est tres simple car il ne résulte du filtre que le plus grand
pic. On obtient un signal clair avec un pic régulier à chaque battement du coeur.

Année 2020 - 2021

-19/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

VI

GEII 1

Programmation

Avec ces différents filtres appliqués sur des exemples d’application ; réalisons à présent un programme embarquant les
différents filtres et affichant les courbes sur le terminal série .

A

1er programme

Apres cette étude voici notre premier programme qui donne le monitoring sur le traceur série ou dans un fichier CSV, du
battement cardiaque.
1
2
3
4
5

i n c l u d e <Wire . h>
#i n c l u d e <L i q u i d C r y s t a l . h>
#i n c l u d e <S o f t w a r e S e r i a l . h>
#i n c l u d e <TimerOne . h>
//#i n c l u d e <math . h>

6
7
8
9

#d e f i n e LED13
13
LiquidCrystal lcd (9 , 8 , 4 , 5 , 6 , 7) ;

// L i q u i d C r y s t a l l c d ( r s , en , d4 , d5 , d6 , d7 ) ;

10
11
12
13
14
15
16
17
18
19
20
21

#d e f i n e PI 3 . 1 4 1 5 9 2
unsigned
int
temps =0;
unsigned
int
e n t r e e =0;
unsigned
int
e n t r e e n 1 =0;
unsigned
int
entreeMax =0;
unsigned
int
e n t r e e m i n i =0;
int derivation ;
f l o a t derivationmoy ;
int detection ;
int detection1 ;
int deriveImpulse ;

22
23
24
25
26

unsigned i n t
unsigned i n t
byte t f l a g ;
b o o l f l a g =0;

centi ;
periode ;

27
28
29

unsigned
unsigned

int
int

s e n s i b i l i t e =0;
BPM=0;

30
31
32
33
34

b o o l LOm;
b o o l LOp ;
f l o a t I n a v e r a g e =337;
f l o a t Inaverage1 ;

35
36
37
38
39
40

void setup ( ) {
pinMode ( LED13 , OUTPUT) ;
pinMode ( 2 , INPUT) ; // Setup f o r l e a d s o f f d e t e c t i o n LO +
pinMode ( 3 , INPUT) ; // Setup f o r l e a d s o f f d e t e c t i o n LO −

41
42

Timer1 . i n i t i a l i z e ( 1 0 0 0 0 ) ;
Timer1 . a t t a c h I n t e r r u p t ( c a l l b a c k ) ;
lcd . begin (20 , 4) ;

43
44
45

//
pour 0 . 0 0 1 s 1000
0 . 0 0 2 s 2000
// a t t a c h e s c a l l b a c k ( ) a s a t i m e r o v e r f l o w i n t e r r u p t
// m o d i f i e r pour un a f f i c h e u r 20 x4

46

S e r i a l . begin (9600) ;

47
48
49

//

TCCR2B = (TCCR2B & 0 b11111000 ) | 0 x01 ;
TimerPWMCheatsheet

// p i n 3

32 khz

h t t p : / / p l a y g r o u n d . a r d u i n o . c c /Main/

50
51
52
53

lcd . setCursor (0 ,0) ;
l c d . p r i n t ( "ECG IUT s o i s s o n s " ) ;
lcd . setCursor (0 ,1) ;

Année 2020 - 2021

-20/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

54

GEII 1

l c d . p r i n t ( "BPM" ) ;

55
56

}

57
58
59
60
61

// I n t e r r u p t i o n s
t o u s l e s 0 . 0 1 s f a i t par l e t i m e r 1
void c a l l b a c k ( ) {

f e =100Hz ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗

62
63
64

c e n t i ++;
temps++;

65
66
67

68
69

i f ( d i g i t a l R e a d ( 1 3 )== 1 ) { d i g i t a l W r i t e ( 1 3 ,LOW) ; }
e l s e { d i g i t a l W r i t e ( 1 3 ,HIGH) ; }
// d i g i t a l W r i t e ( LED13 , HIGH) ;
// permet de me su rer à l ’ o s c i l l o , l e temps du c a l c u l du f i l t r e e t l e
temps de l a r o u t i n e d ’ i n t e r r u p t i o n
e n t r e e n 1=e n t r e e ;
e n t r e e=analogRead (A0) ;
// c o n v e r t i s s e u r 10 b i t s s o u s 5V

70
71

d e r i v a t i o n=abs ( e n t r e e −e n t r e e n 1 ) ;

72
73
74
75

d e r i v a t i o n m o y=d e r i v a t i o n m o y+d e r i v a t i o n ;
d e r i v a t i o n m o y=d e r i v a t i o n m o y / temps ;
d e t e c t i o n=d e r i v a t i o n −d e r i v a t i o n m o y ;

// l a d e r i v a t i o n moyenne e s t s o u v e n t du au s i g n a l 50Hz
//
// r e t i r e l a p e r t u r b a t i o n du 50Hz

76
77
78
79
80

t f l a g ++;
i f ( d e t e c t i o n >170) { p e r i o d e=c e n t i ;
i f ( p e r i o d e <200 && p e r i o d e >30)
i f ( f l a g ==1 && t f l a g >=5) { f l a g =0;}

c e n t i =0; f l a g =1; t f l a g =0;
{BPM=6000/ p e r i o d e ;
}}
// d e l a y de 0 . 0 5

// 60∗100/ p e r i o d e

81
82
83
84

LOm=d i g i t a l R e a d ( 2 ) ;
LOp=d i g i t a l R e a d ( 3 ) ;

85
86
87
88

// t r a c e u r s e r i e
S e r i a l . p r i n t ( e n t r e e ) ; S e r i a l . p r i n t ( " , " ) ; S e r i a l . p r i n t ( d e t e c t i o n ) ; S e r i a l . p r i n t ( " , " ) ; S e r i a l . p r i n t l n (BPM) ;

89
90
91

// r a f r a i c h i s s e m e n t t o u s l e s 3 s
i f ( temps >=300)
{ temps =0; I n a v e r a g e =337; s e n s i b i l i t e =entreeMax−e n t r e e m i n i ; entreeMax =0; e n t r e e m i n i =800;}

92
93

// d i g i t a l W r i t e ( LED13 ,LOW) ;

94
95

} // f i n r o u t i n e

96
97
98
99
100
101
102
103
104

// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / B o u c l e c o r r e s p o n d a n t à l a f o n c t i o n main
void loop ( ) {
/∗
lcd . setCursor (4 ,1) ;
l c d . p r i n t (BPM) ;
∗/

105
106

} // f i n l o o p

Nous regardons sur le terminal série de l’ordinateur et constatons le bon fonctionnement du système.

Année 2020 - 2021

-21/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

GEII 1

Voci une capture d’écran du résultat que nous voyons sur le terminal série :

Figure 15 – Résultat avec le premier programme


——
——

Légende




Signal BPM
Filtre du signal ne laissant passer que le BPM

Nous remarquons que la courbe filtre suit parfaitement la courbe du battement cardiaque. Elle reste nulle pendant
une période, au moment d’une pulsation cardiaque, on y voit un pic.

Remarque
D’après le filtre que nous avons réalisé, la courbe est censée s’apparenter à une impulsion de dirac
avec un pic à chaque pulsation. On voit ici qu’elle est légèrement perturbée par le 50Hz mais on
distingue parfaitement le BPM qui reste exploitable dans le programme.

L’ojectif étant d’avoir un materiel portatif (usage de batterie et de petit module), essayons d’aller plus loin en ajoutant
un petit module Bluetooth a notre projet permettant de transmettre les données sur un téléphone.
L’usage le plus simple serait de pouvoir analyser sur son téléphone à l’aide de notre ECG une séance de fintess ou
de footing.

Année 2020 - 2021

-22/28-

Institut Universitaire de Cuffies

Julien ESCOLANO

B

Rapport de projet

GEII 1

Communication blueotooth

Apres ces premiers résultats nous avons voulu améliorer
notre projet en le rendant portatif. de ce fait l’utilisateur
pourra emporter le module et pratiquer une activité physique. Il aura en suite la possibilté d’analyser son évolution
cardiaque sur son samrtphone.
Pour procéder à cette amélioration il faut d’abord configurer le HC06 a avec la commande AT+UART=57600,0,0.
En effet le Bluetooth à 9600 baud prend plus de temps que
la période d’échantillonnage 0.01s que l’on a choisi imposé
par la routine d’interruption.
De plus à la place des broches RX 0 et TX 1 pour la
communication avec le Bluetooth, l’utilisation des broches
10 et 11 est plus pertinente avec la ligne SoftwareSerial
hc06(10, 11) ; Ce qui permet de ne pas avoir de conflit de
communication lorsqu’une nouvelle version de programme
est transférée. . .

Figure 16 – Montage avec le module bluotooth (HC06)

a. Il s’agit du module bluotooth utilisé pour la transmition des données vers le smartphone

Année 2020 - 2021

-23/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

GEII 1

Voici le résultat que nous obtenons
sur le smartphone.
L’utilisateur peut visualiser son
électrocardiogramme
(en
bleu)
et peut connaître la valeur de
son rythme cardiaque donné en
Battement par minute.

Figure 17 – Capture d’écran du Smartphone
Voici le programmme correspondant :
1
2
3
4
5

#i n c l u d e <Wire . h>
#i n c l u d e <L i q u i d C r y s t a l . h>
#i n c l u d e <S o f t w a r e S e r i a l . h>
#i n c l u d e <TimerOne . h>
//#i n c l u d e <math . h>

6
7
8
9

S o f t w a r e S e r i a l hc06 ( 1 0 , 1 1 ) ;
// nano
#d e f i n e LED13
13
LiquidCrystal lcd (9 , 8 , 4 , 5 , 6 , 7) ;

// L i q u i d C r y s t a l l c d ( r s , en , d4 , d5 , d6 , d7 ) ;

10
11
12
13
14
15
16
17
18
19
20
21

#d e f i n e PI 3 . 1 4 1 5 9 2
unsigned
int
temps =0;
unsigned
int
e n t r e e =0;
unsigned
int
e n t r e e n 1 =0;
unsigned
int
entreeMax =0;
unsigned
int
e n t r e e m i n i =0;
int derivation ;
f l o a t derivationmoy ;
int detection ;
int detection1 ;
int deriveImpulse ;

22
23
24
25
26

unsigned i n t
unsigned i n t
byte t f l a g ;
b o o l f l a g =0;

centi ;
periode ;

27
28
29

unsigned
unsigned

int
int

s e n s i b i l i t e =0;
BPM=0;

30
31
32
33
34

b o o l LOm;
b o o l LOp ;
f l o a t I n a v e r a g e =337;
f l o a t Inaverage1 ;

35
36
37
38
39
40

void setup ( ) {
pinMode ( LED13 , OUTPUT) ;
pinMode ( 2 , INPUT) ; // Setup f o r l e a d s o f f d e t e c t i o n LO +
pinMode ( 3 , INPUT) ; // Setup f o r l e a d s o f f d e t e c t i o n LO −

41
42
43
44
45

Timer1 . i n i t i a l i z e ( 1 0 0 0 0 ) ;
Timer1 . a t t a c h I n t e r r u p t ( c a l l b a c k ) ;
lcd . begin (20 , 4) ;

//
pour 0 . 0 0 1 s 1000
0 . 0 0 2 s 2000
0 . 0 1 s 10000
// a t t a c h e s c a l l b a c k ( ) a s a t i m e r o v e r f l o w i n t e r r u p t
// m o d i f i e r pour un a f f i c h e u r 20 x4

46
47
48

S e r i a l . begin (57600) ;
hc06 . b e g i n ( 5 7 6 0 0 ) ;

//
b r o c h e RX, TX 0 e t 1 m o n i t e u r s e r i e
//AT+UART=57600 ,0 ,0
b r o c h e 10 e t 11

49
50
51
52

lcd . setCursor (0 ,0) ;
l c d . p r i n t ( "ECG IUT s o i s s o n s " ) ;

Année 2020 - 2021

-24/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

53
54

GEII 1

lcd . setCursor (0 ,1) ;
l c d . p r i n t ( "BPM" ) ;

55
56

}

57
58
59
60
61
62
63

// I n t e r r u p t i o n s
t o u s l e s 0 . 0 1 s f a i t par l e t i m e r 1
void c a l l b a c k ( ) {
c e n t i ++;
temps++;

f e =100Hz ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗

64
65

i f ( d i g i t a l R e a d ( 1 3 )== 1 ) { d i g i t a l W r i t e ( 1 3 ,LOW) ; }

e l s e { d i g i t a l W r i t e ( 1 3 ,HIGH) ; }

66
67
68

e n t r e e n 1=e n t r e e ;
e n t r e e=analogRead (A0) ;

// c o n v e r t i s s e u r 10 b i t s s o u s 5V

69
70

d e r i v a t i o n=abs ( e n t r e e −e n t r e e n 1 ) ;

71
72
73
74

d e r i v a t i o n m o y=d e r i v a t i o n m o y+d e r i v a t i o n ;
d e r i v a t i o n m o y=d e r i v a t i o n m o y / temps ;
d e t e c t i o n=d e r i v a t i o n −d e r i v a t i o n m o y ;

// l a d e r i v a t i o n moyenne e s t s o u v e n t du au s i g n a l 50Hz
//
// r e t i r e l a p e r t u r b a t i o n du 50Hz

75
76
77
78
79

t f l a g ++;
i f ( d e t e c t i o n >170) { p e r i o d e=c e n t i ;
i f ( p e r i o d e <200 && p e r i o d e >30)
i f ( f l a g ==1 && t f l a g >=5) { f l a g =0;}

c e n t i =0; f l a g =1; t f l a g =0;
{BPM=6000/ p e r i o d e ;
}}
// d e l a y de 0 . 0 5

// 60∗100/ p e r i o d e

80
81
82

//LOm=d i g i t a l R e a d ( 2 ) ;
//LOp=d i g i t a l R e a d ( 3 ) ;

83
84
85

86

87
88
89

// t r a c e u r s e r i e
// S e r i a l . p r i n t ( e n t r e e ) ; S e r i a l . p r i n t ( " , " ) ; S e r i a l . p r i n t l n ( d e t e c t i o n ) ;
// S e r i a l . p r i n t ( " , " ) ; S e r i a l .
p r i n t l n (BPM) ;
// f i c h i e r b l u e t o o t h e l e c t r o n i c
h t t p s : / /www. keuwl . com/ apps / b l u e t o o t h e l e c t r o n i c s /
h t t p : / /www.
keuwl . com/ apps / b l u e t o o t h e l e c t r o n i c s / u s e r g u i d e / remote_code . html
i f ( hc06 . a v a i l a b l e ( ) ) {
S e r i a l . w r i t e ( hc06 . r e a d ( ) ) ;
}

90
91
92

93
94

hc06 . p r i n t ( " ∗G" ) ; hc06 . p r i n t ( S t r i n g ( e n t r e e )+" , "+S t r i n g ( d e t e c t i o n ) ) ; hc06 . p r i n t l n ( " ∗ " ) ;
bauds mais 300 us à 115200 bauds
hc06 . p r i n t ( " ∗b " ) ; hc06 . p r i n t ( S t r i n g (BPM) ) ; hc06 . p r i n t l n ( " ∗ " ) ;
hc06 . p r i n t ( " ∗p " ) ; hc06 . p r i n t ( S t r i n g ( p e r i o d e ) ) ; hc06 . p r i n t l n ( " ∗ " ) ;

// 15ms à 9600

95
96
97
98

// r a f r a i c h i s s e m e n t t o u s l e s 5 s
i f ( temps >=500)
{ temps =0; }

99
100
101
102

} // f i n r o u t i n e

103
104
105
106
107

void loop ( ) {

108
109

} // f i n l o o p

Année 2020 - 2021

-25/28-

Institut Universitaire de Cuffies

Rapport de projet

Julien ESCOLANO

VII

GEII 1

Conclusion

Maintenant que notre projet est terminé nous pouvons à notre tour analyser l’évolution depuis la première séance.
Tout d’abord réalisons un nouveau diagramme de Gantt.

A

Diagramme de Gantt de fin de projet
Liste des semaines du projet (no de semaine) :
3

4

5

6

7

8

9 10 11 12 13 14 15 16 17 18 19 20 21 22

Rédaction du rapport (Partie 1)
Rédaction du rapport (Partie 2)
1 - Étude
Répartitions des taches
Étude du projet
Fin d’étude de projet
2 - Simulation
Calcul des valeurs des filtres
Mise en place des filtres / et problème lié au 50Hz
Fin de simulation
3 - Réalisation
Montage
Résolutions des problèmes
Fin de montage
4 - Soutenance
Fin de Projet

Année 2020 - 2021

-26/28-

Institut Universitaire de Cuffies

Julien ESCOLANO

Rapport de projet

GEII 1

En regardant ce diagramme, nous constatons que la plus longue période a été la mise en place des filtres. L’étude du
signal à été le point central de ce projet car difficile à concevoir (mathématiquement parlant) et difficile à coder par la suite.
Par chance nous n’avons pas rencontré de problème particulier concernant la programmation (Il n’est pas rare d’avoir
des problèmes de compatibilité des bibliothèque lorsqu’on programme des modules Arduino).

B

Conclusion du projet

Il s’agit d’un travail ambitieux qui nous a permis d’acquérir et de comprendre le fonctionnement de filtres en particulier la mise en place de filtres dérivateur et passe bande. C’est une bonne entrée en matière pour l’apprentissage du langage
Arduino et des équations récursives. Le programme étant assez complexe avec différents timers et l’envoie de données via
la carte additionnelle Bluetooth.
Ce que nous regrettons en revanche c’est l’absence de programme donné par les constructeurs des différents modules. La base de notre programme s’est porté sur beaucoup de recherches sur internet afin de pouvoir commander les
différents modules.

C

Bibliographie

Pour mener à bien ce projet, nous nous sommes aidés des références constructeurs et liens utiles, sources d’inspiration :
Il y a de nombreux blogs qui expliquent ce circuit intégré, mais sans aller loin dans le programme...
? Ce blog permet d’avoir juste un moniteur grace à la liaion serie :
https://www.instructables.com/ECG-Monitoring-System-by-Using-Arduino-or-AD8232/
? De meme pour ici, qui explique un peu mieux :
https://learn.sparkfun.com/tutorials/ad8232-heart-rate-monitor-hookup-guide?_ga=2.54916523.1050236860.
1613662700-154441868.1613662700
https://github.com/sparkfun/AD8232_Heart_Rate_Monitor/blob/master/Software/Heart_Rate_Display_Arduino/
Heart_Rate_Display_Arduino.ino
? Un article « Prototype Low-cost Portable Electrocardiogram (ECG) Based on Arduino-Uno with Bluetooth
Feature »
https://aip.scitation.org/doi/pdf/10.1063/1.5139392
https://www.researchgate.net/publication/336988184_Towards_IoT_and_ML_Driven_Cardiac_Status_Prediction_
System
? Mesure BPM :
https://www.xtronical.com/basics/heart-beat-sensor-ecg-display/
? un ECG IOT avec un ESP32
https://how2electronics.com/iot-ecg-monitoring-ad8232-sensor-esp32/

Année 2020 - 2021

-27/28-

Institut Universitaire de Cuffies

Document réalisé avec LATEXet
le style LATEXpour la réalisation d’articles scientifiques.
La collection de paquets Listings pour l’insertion des programmes - https ://www.ctan.org/pkg/listings


Aperçu du document Julien ESCOLANO - Article de projet  Electrocardiogramme - projet Tuteuré Université de Picardie Jules Verne - IUT Cuffies.pdf - page 1/28

 
Julien ESCOLANO - Article de projet  Electrocardiogramme - projet Tuteuré Université de Picardie Jules Verne - IUT Cuffies.pdf - page 3/28
Julien ESCOLANO - Article de projet  Electrocardiogramme - projet Tuteuré Université de Picardie Jules Verne - IUT Cuffies.pdf - page 4/28
Julien ESCOLANO - Article de projet  Electrocardiogramme - projet Tuteuré Université de Picardie Jules Verne - IUT Cuffies.pdf - page 5/28
Julien ESCOLANO - Article de projet  Electrocardiogramme - projet Tuteuré Université de Picardie Jules Verne - IUT Cuffies.pdf - page 6/28
 







Documents similaires


julien escolano   article de projet  electrocardiogramme   proje
cafetiere arduino horloge
compteur trafic vehicule arduino vl53
arduino  led eclairage velo v2
revue 3ei  battery v6
tuto trip analysor cycle analyst excel

Sur le même sujet..




🚀  Page générée en 0.012s