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