Arduino: Elettrocardiogramma ECG

Ciao a tutti!

In questo articolo vedremo come misurare l’impulso elettrico generato dal nostro cuore sul nostro computer attraverso Arduino.

NOTA: Questo progetto non è destinato a diagnosticare o curare qualsiasi tipo di condizione.

Che cos’è un ECG?

L’elettrocardiogramma (ECG) è la riproduzione grafica dell’attività elettrica del cuore durante il suo funzionamento, registrata da alcuni elettrodi posti sulla superficie del nostro corpo.

ECG

Materiale necessario:

  • Arduino UNO
  • AD8232
  • 3 Elettrodi
  • Cavi per i collegamenti, Jumper o Cavo con attacco Snap

Per questo progetto utilizzeremo la scheda AD8232 prodotta dalla Sparkfun

12650-01

Questa scheda misura l’attività elettrica del cuore attraverso gli elettrodi collegati al nostro corpo, l’interazione con Arduino e Processing permette infine di visualizzare sul nostro computer l’onda corrispondente all’attività del nostro cuore.

Avremo anche bisogno di almeno 3 elettrodi da elettrocaardiogramma ECG con attacco “snap”:

61x3yx+04VL

Schema di collegamento ad Arduino:

Board Label Pin Function Arduino Connection
GND Ground GND
3.3v 3.3v Power Supply 3.3v
OUTPUT Output Signal A0
LO- Leads-off Detect – 11
LO+ Leads-off Detect + 10
SDN Shutdown Not used

Collegamento elettrodi:

Cable Color Signal
Black RA (Right Arm)
Blue LA (Left Arm)
Red RL (Right Leg)

Schema complessivo:

schema

Adesso passiamo al codice da caricare sul nostro Arduino UNO:

[code lang=”cpp”]
void setup() {
Serial.begin(9600);
pinMode(10, INPUT);
pinMode(11, INPUT);
}

void loop() {
if ((digitalRead(10) == 1) || (digitalRead(11) == 1)) {
Serial.println(‘!’);
}
else {
Serial.println(analogRead(A0));
}
delay(1);
}
[/code]

Infine il codice da far eseguire a Processing:

[code lang=”cpp”]
import processing.serial.*;

Serial myPort;
int xPos = 1;
float height_old = 0;
float height_new = 0;
float inByte = 0;

void setup () {
size(1000, 400);
println(Serial.list());
myPort = new Serial(this, Serial.list()[0], 9600);
myPort.bufferUntil(‘\n’);
background(0xff);
}

void draw () {
}

void serialEvent (Serial myPort) {
String inString = myPort.readStringUntil(‘\n’);

if (inString != null) {
inString = trim(inString);
if (inString.equals("!")) {
stroke(0, 0, 0xff);
inByte = 512;
}
else {
stroke(0xff, 0, 0);
inByte = float(inString);
}
inByte = map(inByte, 0, 1023, 0, height);
height_new = height – inByte;
line(xPos – 1, height_old, xPos, height_new);
height_old = height_new;
if (xPos >= width) {
xPos = 0;
background(0xff);
}
else {
xPos++;
}
}
}
[/code]

Conlclusioni:

Se abbiamo eseguito tutti i collegamenti in modo corretto eseguendo lo sketch di Processing possiamo vedere gli impulsi elettrici del nostro cuore sul nostro PC come in figura:

Screenshot (229)

5 commenti

Ciao Alessio, vorrei realizzare anch’io un ECG. A giorni dovrebbe arrivarmi il modulo della sparkfun. Ho iniziato a vedere lo sketch ma ho qualche domanda:
il codice da fa eseguire il processing devo inserirlo nello stesso file dove carico il codice da far eseguire ad Arduino?

Niente, ho trovato il programma adatto per inserire il codice del processing però mi da un errore:
verso la fine del codice alla riga

‘ if (xPos >= width) { ‘

mi da il seguente errore:
expecting RPAREN, found ‘;’
Come posso risolvere?
P.S: mi dice anche che la variabile gt non esiste

Ciao, scusa se ti rispondo solo adesso, ma sono stato impegnato con l’università, purtroppo uno dei problemi di Processing è che da versione a versione gli sketch spesso mi danno problemi.
Quello che ti consiglio è di usare un oscilloscopio seriale se vuoi leggere bene l’onda del cuore, altrimenti, potresti provare ad utilizzare questo codice su processing: https://gist.github.com/chrismeyersfsu/3270419

P.S: la prossima settimana vedo se riesco ad aggiornare l’articolo.

Lascia un commento