Pulzus mérés

Ez csak véletlen szerűen jött, felfedeztem egy Arduino szenzort a neten amit nem igazán értettem, hogy mit csinál de mivel érdekelt rendeltem belőle és nekiálltam megfelelő alkalmazást keríteni hozzá. Így akadtam rá a http://www.instructables.com/id/Homebrew-Arduino-Pulse-Monitor-Visualize-Your-Hear/?ALLSTEPS   cikkre. Most ennek a magyar átdolgozott verzióját olvashatjátok.


A szenzor a KY039 típusszámú IR érzékelő ami arra hívatott, hogy a pulzusunk változásait analóg értékként továbbítsa az Arduino felé. Az érzékelő nem más mint egy IR led és egy fotodióda kombinációja, kettő közé kell behelyeznünk az ujjunkat. Az infra fény nagy részét elnyeli a ujjunk de egy kis mennyiség mindig átjut, ezt érzékeli a fotodiódánk. Ha jó helyen világítjuk át ujjunkat, akkor a szenzor érzékelni fogja a szívdobbanások által létrejött vérnyomás lökéseket.

A körmünket tegyük a fény útjába, ha elsőre nem sikerül értelmes értéket kicsikarni, akkor mozdítsuk el valamelyik irányba egy picit vagy próbálkozzunk másik ujjal.

A kész szenzor IR led-je nem igazán világítja be az alul lévő fotodiódát ezért érdemes egy
kicsit jobban elhajlítani felé a led reflektorát.

Nézzük a kapcsolást:

A szenzor három kivezetéssel rendelkezik. Ha letesszük magunk elé a kivezetésekkel felénk akkor a baloldali a GND, a jobb oldali a Signál, a középső a +5V.

ky039    Uno
Gnd      GND
+5V      5V
Sig       A0

Semmi extra!

A projekthez még szükség lesz az Arduino IDE-re valamint egy Processing2 IDE nevű vizuális fejlesztő környezetre ami segít nekünk láthatóvá tenni a mért értékeket.

A Processing2 letölthető: https://www.processing.org/download/?processing oldalról.

Az Arduino kód nem okoz szerintem senkinek problémát:

void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(analogRead(0));
delay(50);
}


Most nézzük a processing kódot:

import processing.serial.*;
Serial myPort;
int xPos = 1;
float oldHeartrateHeight = 0;

void setup () {
// beállítjuk az ablak méretét
size(1000, 400);
frameRate(30);

// lista a soros port adatairól
println(Serial.list());

//a soros port beállításai.
myPort = new Serial(this, Serial.list()[0], 9600);

// háttér beállítása(fekete)
background(0);
}

void draw () {
}

void serialEvent (Serial myPort) {
// a karakterlánc kiolvasása a soros portból
String inString = myPort.readStringUntil('\n');

if (inString != null) {
// karakterlánc vágása minden üres értéknél
inString = trim(inString);
// konvertálás int-be
println(inString);
int currentHeartrate = int(inString);

// pulzus grafikon megrajzolása
float heartrateHeight = map(currentHeartrate, 0, 1023, 0, height);
stroke(0,255,0);
line(xPos - 1, height - oldHeartrateHeight, xPos, height - heartrateHeight);
oldHeartrateHeight = heartrateHeight;
// a képernyő végére érve törli azt és előröl kezdi a rajzolást
if (xPos >= width) {
xPos = 0;
background(0);
} else {
// vízszintes helyzetben való növekedés
xPos++;
}
}
}


Ezt igazán nem tudom kommentálni mert még nekem is eléggé újdonság, a lényege talán csak annyi, hogy egy grafikus felületet biztosít projektünkhöz.


Töltsük fel a kódot az Arduinonkra, majd indítsuk el a Processing2 kódját a Run gombra kattintva, ha minden jól megy az érzékelőbe tett ujjunk hatására kirajzolódik a szívverésünk üteme a képernyőn.