Vediamo insieme come misurare la frequenza cardiaca con Arduino utilizzando un sensore di battito cardiaco.
Per il tutorial ufficiale, fatto dagli sviluppatori del sensore e della libreria vi rimando al sito www.pulsesensor.com, qua non affronterò l’argomento in maniera dettagliata ma solamente i passaggi necessari per le prime letture.
Come prima cosa è necessario scaricare la libreria PulseSensor Playground, vi rimando alla guida su come aggiungere una libreria su Arduino IDE.
I collegamenti da fare
L’immagine di Fritzing è presa dal tutorial ufficiale.
– (simbolo meno) – GND
+(simbolo più) – 5v
S – pin analogico A0
Lo sketch
Vediamo insieme l’esempio GettingStartedProject presente nella libreria PulseSensor Playground. Commenterò solamente i passaggi meno chiari.
/* PulseSensor™ Starter Project and Signal Tester * The Best Way to Get Started With, or See the Raw Signal of, your PulseSensor™ & Arduino. * * Here is a link to the tutorial * https://pulsesensor.com/pages/code-and-guide * * WATCH ME (Tutorial Video): * https://www.youtube.com/watch?v=82T_zBZQkOE * * ------------------------------------------------------------- 1) This shows a live human Heartbeat Pulse. 2) Live visualization in Arduino's Cool "Serial Plotter". 3) Blink an LED on each Heartbeat. 4) This is the direct Pulse Sensor's Signal. 5) A great first-step in troubleshooting your circuit and connections. 6) "Human-readable" code that is newbie friendly." */ // Variables int PulseSensorPurplePin = 0; // Pulse Sensor PURPLE WIRE connected to ANALOG PIN 0 int LED13 = 13; // The on-board Arduion LED int Signal; // holds the incoming raw data. Signal value can range from 0-1024 int Threshold = 550; // Determine which Signal to "count as a beat", and which to ingore. // The SetUp Function: void setup() { pinMode(LED13,OUTPUT); // pin that will blink to your heartbeat! Serial.begin(9600); // Set's up Serial Communication at certain speed. } // The Main Loop Function void loop() { Signal = analogRead(PulseSensorPurplePin); // Read the PulseSensor's value. // Assign this value to the "Signal" variable. Serial.println(Signal); // Send the Signal value to Serial Plotter. if(Signal > Threshold){ // If the signal is above "550", then "turn-on" Arduino's on-Board LED. digitalWrite(LED13,HIGH); } else { digitalWrite(LED13,LOW); // Else, the sigal must be below "550", so "turn-off" this LED. } delay(10); }
28 Variabile dove verrà salvato il valore analogico del sensore
29 Valore di soglia sopra il quale dovrebbe riconoscere la presenza di un battito cardiaco. Va calibrato, nel qual caso rilevi sempre un battito bisognerà alzare il valore, diversamente dovrà essere abbassato.
Nota bene: a volte le entrate analogiche ‘impazziscono’, nel senso che le letture dei valori possono essere molto variabili e instabili. Si può provare a cambiare porta, ma di solito è un problema che si risolve da solo nel giro di poco tempo.
42 Lettura sulla porta analogica 0 e salvataggio del valore nella variabile intera di nome Signal precedentemente dichiarata.
48 Se il valore analogico è superiore alla nostra soglia accende il led integrato
50 Altrimenti spegne il led integrato
Guardiamo il nostro battito
Una volta caricato lo sketch, questo è quello che dovreste vedere selezionando Tools>Serial Plotter
Chiaramente sulle x (asse orizzontale) abbiamo il tempo mentre sulle y (asse verticale) abbiamo il valore letto dal sensore.
I picchi alti sono i battiti del nostro cuore. Figo eh?
Spero che anche questo tutorial possa esservi d’aiuto, rimango a disposizione per eventuali bisogni.
Grazie,
Alessandro
Salve,
io ho comprato un sensore di battito cardiaco e sto provando a farlo funzionare, ho svolto anche questo esempio. Non capisco perchè non mi restituisce il valore effettivo del mio battito cardiaco, anche nell’esempio non capisco che cosa rappresentano quei valori sulle ascisse e le ordinate. Mi saprebbe rispondere? La ringrazio.
Ciao Sara, il sensore è identico a quello usato nel tutorial?
Sulle ascisse abbiamo il tempo mentre sulle ordinate c’è il valore letto dal sensore.
Ognuno dei picchi rappresenta un battito cardiaco. Se vuoi sapere quanti battiti il tuo cuore compie in un secondo è possibile farlo aggiungendo un contatore che aumenti ad ogni battito e che stampi il valore dopo un minuto. Se hai bisogno di aiuto dimmelo, intanto cerchiamo di far andare il sensore! Alessandro
Ciao Alessandro ho letto la tua risposta ma il mio sensore continua a non andare !! aiuto!!! non c’è un modo per contattarti in privato? in modo da potermi spiegare meglio se sei disponibile ? Grazie
Ciao Sara, se hai Telegram puoi contattarmi lì, io sono @chiocciolab altrimenti scrivimi pure qui nei commenti e cerco di risponderti al più presto.
Ma il sensore è identico a quello che ho usato io?
io ho comprato su ebay: Modulo con sensore frequenza cardiaca battito cardiaco cuore per arduino ID163
https://www.ebay.it/itm/Modulo-con-sensore-frequenza-cardiaca-battito-cardiaco-cuore-per-arduino-ID163/262770966836?hash=item3d2e5ec134:g:TKwAAOSwEzxYWWq9
che sembra esattamente il tuo ma non riesco a rilevare il battito anche se vedo un grafico ininterpretabile.
Sai aiutarmi?
Fabio