Anda di halaman 1dari 22

Monitoring Detak Jantung Menggunakan Pulse Sensor

Heart Beat Berbasis Arduino

Disusun Oleh :

Devrian Tandrianto 13.12.230


Noval Bayu Perdana Putra 13.12.232
Johan Guszali 13.12.233

PROGRAM STUDI TEKNIK ELEKTRO S-1


FAKULTAS TEKNOLOGI INDUSTRI
INSTITUT TEKNOLOGI NASIONAL MALANG
2016
DAFTAR ISI

DAFTAR ISI...................................................................................................................... i
DAFTAR GAMBAR ........................................................................................................ ii
BAB I ................................................................................................................................ 1
PENDAHULUAN ............................................................................................................ 1
1.1 Latar Belakang ............................................................................................... 1
1.2 Tujuan ............................................................................................................ 2
1.3 Manfaat .......................................................................................................... 2
BAB II............................................................................................................................... 3
PEMBAHASAN ............................................................................................................... 3
2.1 Peralatan Yang Digunakan ............................................................................ 3
2.2 Teori Penunjang ............................................................................................. 3
BAB III ............................................................................................................................. 7
PELAKSANAAN PERCOBAAN .................................................................................... 7
3.1 Perakitan Hardware ........................................................................................ 7
3.2 Pemrograman Arduino ................................................................................... 7
Untuk memrogram arduino diperlukan software arduino yang diinstall pada
computer dan kabel USB yang sudah terpasang pada port USB computer dan
modul arduino. ...................................................................................................... 7
BAB IV ........................................................................................................................... 18
PENUTUP ...................................................................................................................... 18
BAB V ............................................................................................................................ 19
DAFTAR PUSTAKA ..................................................................................................... 19

i
DAFTAR GAMBAR

Gambar 1-1. Arduino Board…………………………………………………….3


Gambar 1-2. Pulse Sensor Board………………………………………………...6
Gambar 1-3. Rangkaian percobaan Pulse Sensor………………………………..7
Gambar 1-4. Menu Pilihan modul arduino………………………………………8
Gambar 1-5. Setelah program arduino di upload………………………………11
Gambar 1-6. Setelah program Processing di upload sebelum kulit menyentuh
Pulse sensor…………………………………………………………………….16
Gambar 1-7. Setelah program Processing di upload setelah kulit menyentuh
Pulse sensor…………………………………………………………………….17

ii
BAB I
PENDAHULUAN

1.1 Latar Belakang


Dengan berkembangnya teknologi dalam kehidupan sehari-hari
sudah sangat dirasakan oleh setiap orang. Perkembangan dalam bidang
elektronika terjadi setiap waktu, mulai dari hal yang sangat bersifat
sederhana. Bahkan perkembangan teknologi elektronika sudah dapat
dikembangkan dalam bidang medis terutama dalam melakukan
pengukuran. Antara lain bisa sebagai alat kontrol kesehatan, alat bantu
penyembuhan dan lain-lain.
Untuk tahap awal pemeriksaan medis, biasanya dilakukan medical
check up sebelum penyakit seseorang didiagnosa. Dari hasil medical check
upakan diketahui apakah seseorang dalam kondisi sehat atau tidak. Pada
umumnya medical check up yang dilakukan di rumah sakit pertama kali
adalah detak jantung.Hal itu dilakukan karena jantung pada tubuh manusia
merupakan organ utama, dimana fungsi kerja jantung mempengaruhi
organ-organ penting manusia lainnya.
Berdasarkan pada kondisi tersebut kesehatan jantung manusia
harus benar-benar diperhatikan. Hal yang dapat dilakukan secara dini
adalah dengan melakukan pengecekan detak jantung secara rutin. Namun
dalam melakukannya bisa dibilang gampanggampang susah. Jika kita
menggunakan cara manual maka kita memerlukan perhitungan secara teliti
dan sebelumnya telah mengerti prinsip dasar dalam melakukan
pengukuran detak jantung.
Untuk melengkapi tugas matakuliah Instrumentasi Medika yang
membahas tentang Monotoring detak jantung maka kami merancangan
dan membuat suatu alat yang dapat digunakan dengan mudah untuk
membantu mengukur atau memantau detak jantung dengan bantuan
sensor. Hasil dari pengukuran pulsesensorakan ditampilkan melalui sebuah
software yaitu Processing, kemudian akan ditampilkan gambar grafik
detak jantung permenitnya di PC. Diharapkan alat ini dapat membantu

1
mengetahui kondisi kesehatan dengan parameter diatas setidaknya untuk
tahap awal pendeteksian

1.2 Tujuan
1. Mengetahui cara kerja Pulse Sensor
2. Mampu memonitoring detak jantung menggunakan mikrokontroller
(modul Arduino) dan Software Processing

1.3 Manfaat
Dapat membantu mengetahui kondisi kesehatan dengan cara
memonitoring detak jantung untuk tahap awal pendeteksian.

2
BAB II
PEMBAHASAN

2.1 Peralatan Yang Digunakan


1. Modul Pulse sensor
2. Komputer PC
3. Modul Arduino
4. Software Processing
5. Kabel Jamper

2.2 Teori Penunjang


2.2.1. Arduino

Arduino (Artanto, 2007) merupakan sebuah mikrokontroller


dengan platform komputasi fisik (Physicial Computing) open
source sederhana. Yang dimaksud dengan platform komputasi fisik
adalah sistem fisik yang interaktif dengan penggunaan software
dan hardware yang dapat mendeteksi dan merespon situasi dan
kondisi yang ada di dunia nyata. Dalam situs resminya. Arduino
didefinisikan sebagai sebuah platform elektronik yang open source,
berbasis pada software dan hardware yang fleksibel dan mudah
digunakan, yang ditujukan untuk pengguna dan setiap orang yang
tertarik dalam membuat objek atau lingkungan interaktif. Gambar
1-1 memperlihatkan bentuk fisik arduino board.(lebih jelasnya ada
pada situs https://www.arduino.cc)

Gambar 1-1. Arduino Board

3
2.2.2. Instruksi Arduino IDE

Ada tiga bagian utama dalam bahasa pemrograman Arduino


( Artanto, 2007), yaitu struktur, Variabel, Fungsi. Bagian struktur
Arduino ini meliputi kerangka program, sintaks program, control
aliran program, dan operator.
Kerangka Program Arduno sangat sederhana, yaitu terdiri
dari dua blok. Blok pertama adalah void setup(), dan blok kedua
adalah void loop().
Sintaks program baik blok void setup(), void loop()
maupun blok function harus diberi tanda kurung kurawal buka “{“
sebagai tanda awal program di blok itu dan kurung kurawal tutup
“}” sebagai tanda di akhir program.
Tanda kurung kurawal buka dan kurung kurawal tutup
tersebut juga digunakan pada blok control program, seperti if, is-
else, for-loop, while-loop dan do-while-loop.
Untuk menandai akhor sebuah baris kode program
digunakan tanda titik koma “;”
Kontrol aliran program meliputo instruksi – instruksi yang
digunakan untuk membuat percabangan dan perulangan. Instruksi
percabngan diantaranya adalah if. If-else, switch case,
break,continue, return da goto. Sedangkan instruksi perulangan
diantaranya adalah for-loop, while-loop, do-while-loop

2.2.3. Processing

Processing merupakan bahasa pemrograman open source


untuk memprogram gambar, animasi, dan interaksi. Processing
digunakan untuk mengajarkan dasar-dasar pemrograman computer
konteks rupa dan berfungsi sebagai software sketsa. (lebih jelasnya
ada pada situs https://processing.org)

4
2.2.4. Pulse Sensor

Pulse Sensor (Gitman, 2013) adalah sensor denyut jantung


yang dirancang untuk Arduino. Sensor ini dapat digunakan untuk
memepermudah penggabungan antara pengukuran detak jantung
dengan aplikasi data ke dalam pengembangannya. Pulse sensor
mencakup sebuah aplikasi monitoring yang bersifat open source.
Bagian depan sensor memiliki sisi unik dengan logo hati.
Sisi ini yang membuat kontak dengan kulit. Pada sisi ini dapat
dilihat sebuah lubang bulat kecil yang mana bersinar LED dari
belakang dan ada juga persegi kecil tepat di bawah LED. Persegi
kecil itu adalah sebuah sensor cahaya, persis seperti yang
digunakan ponsel, tablet, dan laptop, untuk menyesuaikan
kecerahan layar dalam kondisi cahaya yang berbeda.
Pada Pulse sensor digunakan LED berwarna hijau, karena
sensor cahaya yang digunakan yaitu APDS-9008 memiliki puncak
sensitivitas sebesar 565nm. Dalam hal ni LED hijau memiliki
panjang gelombang 495-570nm sehingga sesuai dengan kebutuhan
sensor tersebut.
Pulse sensor menggunakan power supply 3.3 v ~ 5 V, dan
outputnya adalah tegangan analog. Nantinya di mikroprosesor
menggunakan ADC untuk diubah menjadi besaran digital. Gambar
1-2 memperlihatkan bentuk fisik arduino board.

5
G
a
G
ambar 1-2. Pulse Sensor Board

6
BAB III
PELAKSANAAN PERCOBAAN

3.1 Perakitan Hardware

Buat rangkaian seperti pada gambar 1-3 sambungkan kabel dari arduino ke
modul Pulse Sensor seperti pada gambar dibawah ini:

1. S (Pulsa atau sinyal) pada modul Pulse sensor disambungkan ke pin A0


arduino
2. GND(-) pada modul sensor disambungkan ke pin GND arduino
3. VCC(+) pada modul Pulse sensor disambungkan ke pin +5V/3,3V
arduino

Gambar 1-3. Rangkaian percobaan Pulse Sensor


http://www.elecrow.com/wiki/images/9/9e/Pulse_Sensor1.jpg

3.2 Pemrograman Arduino


Untuk memrogram arduino diperlukan software arduino yang diinstall
pada computer dan kabel USB yang sudah terpasang pada port USB computer
dan modul arduino.

7
Langkah-langkah berikut :

1. Jalankan program arduino di computer


2. Pilih menu File -> New untuk membuat Sketch/program
baru,kemudian simpan “save – as” dengan nama yang diinginkan
3. Pilih menu tools -> board -> arduino uno (atau sesuaikan dengan
modul arduino yang diinginkan). Lihat gambar 1-4
4. Pilihmenu tools -> serial port -> (nomor serial port yang digunakan
untuk menghubungkan dengan arduino). Untuk melihat serial port
yang digunakan dari menu windows pilih Control panel -> system -
> device manager -> port COM & LPT -> (cari nomer COM dari
arduino).
5. Selanjutnya program dapat ditulis di editor
6. Untuk meng-upload program ke modul arduino, gunakan meng-
upload (Icon bergambar )

Gambar 1-4. Menu Pilihan modul arduino

8
Langkah Percobaan sebagai berikut:
1. Buat program arduino seperti dibawah ini:

int pulsePin = 0; // Pulse Sensor purple wire


connected to analog pin 0
int blinkPin = 13; // pin to blink led at each beat
int fadePin = 5; // pin to do fancy classy fading
blink at each beat
int fadeRate = 0; // used to fade LED on with PWM
on fadePin

// Volatile Variables, used in the interrupt service routine!


volatile int BPM; // int that holds raw Analog in 0.
updated every 2mS
volatile int Signal; // holds the incoming raw data
volatile int IBI = 600; // int that holds the time interval
between beats! Must be seeded!
volatile boolean Pulse = false; // "True" when User's live
heartbeat is detected. "False" when not a "live beat".
volatile boolean QS = false; // becomes true when Arduoino
finds a beat.

// Regards Serial OutPut -- Set This Up to your needs


static boolean serialVisual = false; // Set to 'false' by Default.
Re-set to 'true' to see Arduino Serial Monitor ASCII Visual Pulse

void setup(){
pinMode(blinkPin,OUTPUT); // pin that will blink to your
heartbeat!
pinMode(fadePin,OUTPUT); // pin that will fade to your
heartbeat!
Serial.begin(115200); // we agree to talk fast!
interruptSetup(); // sets up to read Pulse
Sensor signal every 2mS
// IF YOU ARE POWERING The Pulse Sensor AT
VOLTAGE LESS THAN THE BOARD VOLTAGE,
// UN-COMMENT THE NEXT LINE AND APPLY THAT
VOLTAGE TO THE A-REF PIN
// analogReference(EXTERNAL);
}

// Where the Magic Happens


void loop(){

9
serialOutput() ;

if (QS == true){ // A Heartbeat Was Found


// BPM and IBI have been Determined
// Quantified Self "QS" true when arduino finds a
heartbeat
fadeRate = 255; // Makes the LED Fade Effect Happen
// Set 'fadeRate' Variable to 255 to fade LED
with pulse
serialOutputWhenBeatHappens(); // A Beat Happened,
Output that to serial.
QS = false; // reset the Quantified Self flag for
next time
}

ledFadeToBeat(); // Makes the LED Fade Effect


Happen
delay(20); // take a break
}

void ledFadeToBeat(){
fadeRate -= 15; // set LED fade value
fadeRate = constrain(fadeRate,0,255); // keep LED fade
value from going into negative numbers!
analogWrite(fadePin,fadeRate); // fade LED
}

Program arduino dapat di download di:


(https://github.com/WorldFamousElectronics/PulseSensor_Amp
ed_Arduino)
2. Compile dan upload ke modul arduino
3. Tampilan setelah program di upload LED pada modul Pulse
Sensor akan menyala seperti gambar 1-5 dibawah ini :

10
Gambar 1-5. Setelah program arduino di upload

4. Buat program Processing seperti dibawah ini:

import processing.serial.*;
PFont font;
Scrollbar scaleBar;
Serial port;
int Sensor; // HOLDS PULSE SENSOR DATA FROM
ARDUINO
int IBI; // HOLDS TIME BETWEN HEARTBEATS
FROM ARDUINO
int BPM; // HOLDS HEART RATE VALUE FROM
ARDUINO

11
int[] RawY; // HOLDS HEARTBEAT WAVEFORM DATA
BEFORE SCALING
int[] ScaledY; // USED TO POSITION SCALED
HEARTBEAT WAVEFORM
int[] rate; // USED TO POSITION BPM DATA
WAVEFORM
float zoom; // USED WHEN SCALING PULSE
WAVEFORM TO PULSE WINDOW
float offset; // USED WHEN SCALING PULSE
WAVEFORM TO PULSE WINDOW
color eggshell = color(255, 253, 248);
int heart = 0; // This variable times the heart image 'pulse' on
screen
// THESE VARIABLES DETERMINE THE SIZE OF THE
DATA WINDOWS
int PulseWindowWidth = 490;
int PulseWindowHeight = 512;
int BPMWindowWidth = 180;
int BPMWindowHeight = 340;
boolean beat = false; // set when a heart beat is detected, then
cleared when the BPM graph is advanced

void setup() {
size(700, 600); // Stage size
frameRate(100);
font = loadFont("Arial-BoldMT-24.vlw");
textFont(font);
textAlign(CENTER);
rectMode(CENTER);
ellipseMode(CENTER);
// Scrollbar constructor inputs: x,y,width,height,minVal,maxVal
scaleBar = new Scrollbar (400, 575, 180, 12, 0.5, 1.0); // set
parameters for the scale bar
RawY = new int[PulseWindowWidth]; // initialize raw
pulse waveform array
ScaledY = new int[PulseWindowWidth]; // initialize scaled
pulse waveform array
rate = new int [BPMWindowWidth]; // initialize BPM
waveform array
zoom = 0.75; // initialize scale of heartbeat
window

// set the visualizer lines to 0


for (int i=0; i<rate.length; i++){
rate[i] = 555; // Place BPM graph line at bottom of BPM
Window

12
}
for (int i=0; i<RawY.length; i++){
RawY[i] = height/2; // initialize the pulse window data line to
V/2
}

// GO FIND THE ARDUINO


println(Serial.list()); // print a list of available serial ports
// choose the number between the [] that is connected to the
Arduino
port = new Serial(this, Serial.list()[0], 115200); // make sure
Arduino is talking serial at this baud rate
port.clear(); // flush buffer
port.bufferUntil('\n'); // set buffer full flag on receipt of
carriage return
}

void draw() {
background(0);
noStroke();
// DRAW OUT THE PULSE WINDOW AND BPM WINDOW
RECTANGLES
fill(eggshell); // color for the window background
rect(255,height/2,PulseWindowWidth,PulseWindowHeight);
rect(600,385,BPMWindowWidth,BPMWindowHeight);

// DRAW THE PULSE WAVEFORM


// prepare pulse data points
RawY[RawY.length-1] = (1023 - Sensor) - 212; // place the
new raw datapoint at the end of the array
zoom = scaleBar.getPos(); // get current waveform
scale value
offset = map(zoom,0.5,1,150,0); // calculate the offset
needed at this scale
for (int i = 0; i < RawY.length-1; i++) { // move the pulse
waveform by
RawY[i] = RawY[i+1]; // shifting all raw
datapoints one pixel left
float dummy = RawY[i] * zoom + offset; // adjust the raw
data to the selected scale
ScaledY[i] = constrain(int(dummy),44,556); // transfer the
raw data array to the scaled array
}
stroke(250,0,0); // red is a good color for the
pulse waveform
noFill();

13
beginShape(); // using beginShape()
renders fast
for (int x = 1; x < ScaledY.length-1; x++) {
vertex(x+10, ScaledY[x]); //draw a line connecting
the data points
}
endShape();

// DRAW THE BPM WAVE FORM


// first, shift the BPM waveform over to fit then next data point
only when a beat is found
if (beat == true){ // move the heart rate line over one pixel
every time the heart beats
beat = false; // clear beat flag (beat flag waset in serialEvent
tab)
for (int i=0; i<rate.length-1; i++){
rate[i] = rate[i+1]; // shift the bpm Y coordinates
over one pixel to the left
}
// then limit and scale the BPM value
BPM = min(BPM,200); // limit the highest BPM
value to 200
float dummy = map(BPM,0,200,555,215); // map it to the
heart rate window Y
rate[rate.length-1] = int(dummy); // set the rightmost pixel
to the new data point value
}
// GRAPH THE HEART RATE WAVEFORM
stroke(250,0,0); // color of heart rate graph
strokeWeight(2); // thicker line is easier to read
noFill();
beginShape();
for (int i=0; i < rate.length-1; i++){ // variable 'i' will take the
place of pixel x position
vertex(i+510, rate[i]); // display history of heart rate
datapoints
}
endShape();

// DRAW THE HEART AND MAYBE MAKE IT BEAT


fill(250,0,0);
stroke(250,0,0);
// the 'heart' variable is set in serialEvent when arduino sees a
beat happen
heart--; // heart is used to time how long the heart
graphic swells when your heart beats

14
heart = max(heart,0); // don't let the heart variable go into
negative numbers
if (heart > 0){ // if a beat happened recently,
strokeWeight(8); // make the heart big
}
smooth(); // draw the heart with two bezier curves
bezier(width-100,50, width-20,-20, width,140, width-100,150);
bezier(width-100,50, width-190,-20, width-200,140, width-
100,150);
strokeWeight(1); // reset the strokeWeight for next time

// PRINT THE DATA AND VARIABLE VALUES


fill(eggshell); // get ready to print text
text("Pulse Sensor Amped Visualizer 1.1",245,30); // tell
them what you are
text("IBI " + IBI + "mS",600,585); // print the time
between heartbeats in mS
text(BPM + " BPM",600,200); // print the Beats
Per Minute
text("Pulse Window Scale " + nf(zoom,1,2), 150, 585); // show
the current scale of Pulse Window

// DO THE SCROLLBAR THINGS


scaleBar.update (mouseX, mouseY);
scaleBar.display();

//
} //end of draw loop

Program Processing dapat di download di :


(https://github.com/WorldFamousElectronics/PulseSensor_Amp
ed_Processing_Visualizer)

5. Jalankan program processing dengan memilih menu RUN maka


setelah di RUN akan seperti gambar 1-6 (sebelum kulit
menyentuh Pulse sensor) dan gambar 1-7 (setelah kulit
menyentuh Pulse sensor) seperti dibawah ini:

15
Gambar 1-6. Setelah program Processing di upload sebelum kulit
menyentuh Pulse sensor
16
`

Gambar 1-7. Setelah program Processing di upload setelah kulit


menyentuh Pulse sensor

17
BAB IV
PENUTUP

4.1 Kesimpulan

1. Kinerja Pulse sensor memiliki tingkat sensitivitas dan pembacaan yang


sedikit lambat
2. Arduino sebagai ADC dapat dengan tepat melakukan proses perubahan data
analogmenjadi digital dan melakukan perintah pengiriman dengan sangat
baik.

18
BAB V
DAFTAR PUSTAKA

http://download.portalgaruda.org/article.php?article=339456&val=1265&title=ALAT%20PENG
UKUR%20DETAK%20JANTUNG%20MENGGUNAKAN%20PULSESENSOR%20BERBASIS%2
0ARDUINO%20UNO%20R3%20YANG%20DIINTEGRASIKAN%20DENGAN%20BLUETOOT
H

http://www.elecrow.com/wiki/index.php?title=Pulse_Sensor

http://www.cutedigi.com/blog/2014/06/

https://docs.google.com/document/d/1FVFffuKD9OnkTOwxs3dVaxp5LYb4S1aj65MS6lvIZbA/e
dit

https://github.com/WorldFamousElectronics/PulseSensor_Amped_Arduino

https://github.com/WorldFamousElectronics/PulseSensor_Amped_Processing_Visualizer

19