LAPORAN UAS
PENGHITUNGAN DENYUT JANTUNG MENGGUNAKAN GROVE CHEST STRAP HEART RATE SENSOR DENGAN ARDUINO UNO
DISUSUN OLEH :
Fitria Agista Santi
(1110091000035)
Eka Risky Firmansyah (1110091000043)
Teknik Informatika 2010 Fakultas Sains dan Teknologi Universitas Islam Negeri (UIN) Syarif Hidayatullah Jakarta 2013
KATA PENGANTAR Puji syukur kami ucapkan kepada Allah SWT, karena dengan rahmat – Nya penyusun telah dapat menyelesaikan makalah yang berjudul “PENGHITUNGAN DENYUT JANTUNG MENGGUNAKAN GROVE CHEST STRAP HEART RATE SENSOR DENGAN ARDUINO UNO”. Tidak lupa kami ucapkan shalawat dan salam kepada junjungan kita Nabi besar Muhammad SAW. Penyusun menyampaikan ucapan terima kasih yang tak terhingga kepada pihakpihak yang membantu dalam menyelesaikan makalah ini, khususnya kepada Ibu Neni selaku dosen matakuliah Embedded System, teman – teman, dan semua pihak yang tidak dapat disebutkan satu persatu. Dalam penyusunan makalah ini, penyusun merasa masih banyak kekurangankekurangan baik pada teknis penulisan maupun materi, mengingat akan kemampuan yang dimiliki penyusun. Untuk itu kritik dan saran dari semua pihak sangat penyusun harapkan demi penyempurnaan pembuatan makalah ini. Semoga makalah ini dapat bermanfaat bagi kita semua.
Ciputat, 15 Januari 2013
Penyusun
2
DAFTAR ISI
KATA PENGANTAR ................................................................................................................ 2 DAFTAR ISI ............................................................................................................................ 3 BAB 1 PENDAHULUAN .......................................................................................................... 4 1.1. 1.2. 1.3. 1.4.
LATAR BELAKANG......................................................................................................... 4 TUJUAN ..................................................................................................................... 4 RUMUSAN MASALAH .................................................................................................... 5 BATASAN MASALAH ..................................................................................................... 5
BAB 2 LANDASAN TEORI ....................................................................................................... 6 2.1. DENYUT NADI ................................................................................................................. 6 2.2. EMBEDDED SYSTEM .......................................................................................................... 7 2.2.1. Pengertian ............................................................................................................ 7 2.2.2. Karakteristik ......................................................................................................... 7 2.2.3. Contoh Penggunaan ............................................................................................. 7 2.3. GRAPH INTERFACE............................................................................................................ 8 2.4. TEORI KOMPONEN........................................................................................................... 8 2.4.1. Komponen Utama ................................................................................................ 8 2.4.2. Komponen Tambahan ........................................................................................ 12 BAB 3 PEMBAHASAN .......................................................................................................... 14 3.1. KOMPONEN UTAMA DAN TAMBAHAN ............................................................................. 14 3.1.1. Komponen Utama .............................................................................................. 14 3.1.2. Komponen Tambahan ........................................................................................ 14 3.2. PERANCANGAN ALAT .................................................................................................. 14 3.2.1. Skematik Rangkaian ........................................................................................... 14 3.2.2. Langkah Percobaan ............................................................................................ 15 3.3. HASIL PERCOBAAN ......................................................................................................... 24 BAB 4 PENUTUP .................................................................................................................. 26 4.1. KESIMPULAN................................................................................................................. 26 4.2. SARAN ........................................................................................................................ 26 DAFTAR PUSTAKA............................................................................................................... 27
BAB 1 PENDAHULUAN 1.1.
Latar Belakang Kesehatan merupakan bagian yang penting bagi manusia karena dengan sehat kita dapat melakukan berbagai kegiatan dan berpikir dengan baik. Jantung yang mengontrol peredaran darah. Untuk mengetahui keadaan jantung diperlukan alat yang menghitung denyut jantung kita. Mahalnya alat kedokteran dan kurangnya waktu seseorang untuk melakukan pemeriksaan di rumah sakit menyulitkan seseorang untuk mengawasi kesehatan, terutama kesehatan jantung. Untuk itu dibutuhkan alat sederhana yang memiliki kemudahan dalam pengoperasiannya dan dapat digunakan di rumah walaupun saat sedang beraktifitas. Alat
perekam
denyut
jantung
berbasis
mikrokontroler
dapat
menggunakan Grove Chest Strap Heart Rate Sensor yang mampu menangkap sinyal denyut jantung. Dengan menggunakan pengantarmukaan parallel pada komunikasinya, proses ini mengubah sinyal analog menjadi sinyal digital yang akan diteruskan ke komputer melalui perangkat Arduino UNO, komunikasi antara sensor dengan Arduino UNO menggunakan gelombang radio AM (nirkabel). Bahasa pemrograman C pada Arduino digunakan untuk menampilkan data denyut jantung dalam bentuk stream pada serial port, kemudian menggunakan software processing dengan bahasa pemrograman Java untuk merubah data serial tersebut menjadi grafik dari denyut jantung yang nantinya dapat dihitung besarnya frekuensi dari denyutan jantung tersebut dalam satuan bpm (beats per minute).
1.2.
Tujuan Tujuan yang ingin dicapai dalam penelitian ini adalah :
Membuktikan sistem Grove - Chest Strap Heart Rate Sensor mampu menghitung denyut jantung.
Membuat alat penghitung frekuensi denyut jantung dengan hasil tampilan dalam bentuk angka dan grafik di komputer atau laptop.
4
1.3.
Membuat alat penghitung denyut jantung nirkabel.
Rumusan Masalah
Komponen apa saja yang dibutuhkan dalam pembuatan alat penghitung denyut jantung?
1.4.
Bagaimana langkah-langkah pembuatannya?
Bagaimana hasil outputnya?
Batasan Masalah Batasan masalah yang dilakukan pada penelitian ini, yaitu:
Alat ini memanfaatkan program dan teknologi dari perangkat Arduino UNO.
Hanya melakukan analisa teknis dan tidak melakukan analisa medis.
Frekuensi detak jantung ini dinyatakan dalam satuan BPM (beats per minute).
BAB 2 LANDASAN TEORI 2.1. Denyut Nadi Denyut merupakan pemeriksaan pada pembuluh nadi atau arteri. Ukuran kecepatannya diukur pada beberapa titik denyut misalnya denyut arteri radialis pada pergelangan tangan, arteri brachialis pada lengan atas, arteri karotis pada leher, arteri poplitea pada belakang lutut, arteri dorsalis pedis atau arteri tibialis posterior pada kaki. Pemeriksaan denyut dapat dilakukan dengan bantuan stetoskop. Denyut jantung yang normal yakni 60-100 kali setiap menit, sedang denyut jantung lambat kurang dari 60 kali per menit dan yang cepat lebih dari 100 kali per menit. Nadi adalah denyut nadi yang teraba pada dinding pembuluh darah arteri yang berdasarkan systol dan gystole dari jantung. Jumlah denyut nadi yang normal berdasarkan usia seseorang adalah: 1. Bayi baru lahir :140 kali per menit 2. Umur di bawah umur 1 bulan : 110 kali per menit 3. Umur 1 - 6 bulan :130 kali per menit 4. Umur 6 - 12 bulan :115 kali per menit 5. Umur 1 - 2 tahun :110 kali per menit 6. Umur 2 - 6 tahun :105 kali per menit 7. Umur 6 - 10 tahun : 95 kali per menit 8. Umur 10 - 14 tahun : 85 kali per menit 9. Umur 14 - 18 tahun : 82 kali per menit 10. Umur di atas 18 tahun : 60 - 100 kali per menit 11. Usia Lanjut : 60 -70 kali per menit llmu Kedokteran olahraga FKUI-RSCM, mengetahui denyut nadi merupakan dasar untuk melakukan latihan fisik yang benar dan terukur. "Dari denyut nadi, dapat diketahui intensitas atau seberapa keras seseorang melakukan latihan. Atau seberapa keras jantungnya bekerja."
6
2.2. Embedded System 2.2.1. Pengertian Merupakan sebuah sistem yang memiliki fungsi utama bukan hanya untuk komputasi, melainkan juga dikontrol oleh komputer. [2] Embedded within it. Embedded system merupakan sebuah sistem (rangkaian elektronik) digital yang merupakan bagian dari sebuah sistem yang lebih besar, yang biasanya bukan berupa sistem elektronik. Kata embedded menunjukkan bahwa dia merupakan bagian yang tidak dapat berdiri sendiri. Embedded system biasanya merupakan application-specific system yang didisain khusus untuk aplikasi tertentu. Contoh sistem atau aplikasinya
antara
lain
adalah
instrumentasi
medik
(medical
instrumentation), process control, automated vehicles control, dan perangkat komunikasi (networking and communication systems). Ini berbeda dengan sistem digital yang didesain untuk general purpose. Embedded system biasanya
diimplementasikan
dengan
menggunakan
mikrokontroler
(microcontroller). Berikut ini contoh penggunaan embedded system : 2.2.2. Karakteristik Menjadi bagian dari system yang lebih besar : Periferal terbatas
Application-specific: Baik hardware maupun software dirancang khusus untuk aplikasi yang spesifik Tetapi, re-programmability merupakan suatu kebutuhan ‘HALT’ merupakan suatu badstate
Interaksi dengan dunia fisik
2.2.3. Contoh Penggunaan
Signal processing systems, Real-time video, settopboxes, DVD players, medical equipment,residential gateways
Distributed control, Network routers, switches,firewalls, mass transit systems, elevators
“Small” systems, Mobile phones, pagers, homeappliances, toys, smartcards, MP3 players, PDAs,digital cameras, sensors, smart badges
2.3. Graph Interface Ketika source code di upload, Arduino akan mengirim byte data denyut jantung ke komputer pribadi dalam bentuk serial port, kemudian data tersebut akan dirubah hasilnya berupa grafik dengan menggunakan program Processing. Hal ini disebut komunikasi serial karena sambungan Arduino dan komputer sebagai port serial, meskipun sebenarnya dapat menggunakan kabel USB. Untuk melihat data yang dikirim, atau dapat dibaca oleh aplikasi untuk pengolahan data, Flash, PD, Max / MSP, dll menggunakan monitor Arduino. Dengan hasil berupa grafik, dokter dapat memonitor pasien secara simultan dan untuk membuat keputusan kesehatan seseorang berdasarkan subyek yang diteliti. Untuk dapat menghasilkan interface berupa grafik, diperlukan source code program Processing.
2.4. Teori Komponen 2.4.1. Komponen Utama a. Arduino UNO Arduino UNO adalah sebuah board mikrokontroler yang didasarkan pada ATmega328. Arduino UNO mempunyai 14 pin digital input/output (6 di antaranya dapat digunakan sebagai output PWM), 6 input analog, sebuah osilator Kristal 16 MHz, sebuah koneksi USB, sebuah power jack, sebuah ICSP header, dan sebuat tombol reset. Arduino UNO memuat semua yang dibutuhkan untuk menunjang mikrokontroler, mudah menghubungkannya ke sebuah computer dengan sebuah kabel USB atau mensuplainya dengan sebuah adaptor AC ke DC atau menggunakan baterai untuk memulainya. Arduino Uno berbeda dari semua board Arduino sebelumnya, Arduino UNO tidak menggunakan chip driver FTDI USB-to-serial. Sebaliknya, fitur-fitur Atmega16U2 (Atmega8U2 sampai ke versi R2) diprogram sebagai sebuah pengubah USB ke serial. Revisi 2 dari board Arduino Uno mempunyai sebuah resistor yang menarik garis 8U2 HWB ke ground, yang membuatnya lebih mudah untuk diletakkan ke dalam
8
DFU mode. Revisi 3 dari board Arduino UNO memiliki fitur-fitur baru sebagai berikut:
Pinout 1.0: ditambah pin SDA dan SCL yang dekat dengan pin AREF dan dua pin baru lainnya yang diletakkan dekat dengan pin RESET, IOREF yang memungkinkan shield-shield untuk menyesuaikan tegangan yang disediakan dari board. Untuk ke depannya, shield akan dijadikan kompatibel/cocok dengan board yang menggunakan AVR yang beroperasi dengan tegangan 5V dan dengan Arduino Due yang beroperasi dengan tegangan 3.3V. Yang ke-dua ini merupakan sebuah pin yang tak terhubung, yang disediakan untuk tujuan kedepannya.
Sirkuit RESET yang lebih kuat
Atmega 16U2 menggantikan 8U2 “Uno” berarti satu dalam bahasa Italia dan dinamai untuk
menandakan keluaran (produk) Arduino 1.0 selanjutnya. Arduino UNO dan versi 1.0 akan menjadi referensi untuk versi-versi Arduino selanjutnya. Arduino UNO adalah sebuah seri terakhir dari board Arduino USB dan model referensi untuk papan Arduino, untuk suatu perbandingan dengan versi sebelumnya, lihat indeks dari board Arduino. Ringkasan Mikrokontroler
ATmega328
Tegangan pengoperasian
5V
Tegangan input disarankan
7-12V
yang
Batas tegangan input
6-20V
Jumlah pin I/O digital
14 (6 di antaranya menyediakan keluaran PWM)
Jumlah pin input analog
6
Arus DC tiap pin I/O
40 mA
Arus DC untuk pin 3.3V
50 mA
Memori Flash
32 KB (ATmega328), sekitar 0.5 KB digunakan oleh bootloader
SRAM
2 KB (ATmega328)
EEPROM
1 KB (ATmega328)
Clock Speed
16 MHz
b. Grove - Chest Strap Heart Rate Sensor Sensor untuk mendeteksi denyut jantung yang berbentuk sabuk yang dipakai di dada ini memiliki modul penerima sinyal dengan ukuran 5,3 KHz yang digunakan untuk memantau detak jantung. Hasilnya dapat ditampilkan pada layar melalui port serial dan dapat disimpan untuk dianalisis. Sensor ini sangat sensitive dan menggunakan daya yang sangat sedikit (menggunakan CR2032 koin baterai). Jangkauan efektif yang dapat diterima sensor nirkabel yang ditransfer oleh gelombang radio AM adalah sekitar 30 cm. Sabuk dada ini harus memiliki kontak dengan kulit Anda untuk mendapatkan akurasi tinggi. Berikut contoh gambarnya :
10
c. Kabel Listrik Kabel berfungsi sebagai penghantar arus listrik. Kabel juga memiliki beberapa jenis dan ukuran kapasitas. Berikut ini beberapa jenis-jenis kabel, yaitu :
Kabel NYA : Kabel jenis ini di gunakan untuk instalasi rumah dan dalam instalasi rumah yang sering di gunakan adalah NYA dengan ukuran 1,5 mm2 dan 2,5 mm2. Yang berinti tunggal, berlapis bahan isolasi PVC Kode warna isolasi ada warna merah, kuning, biru dan hitam. Lapisan isolasinya hanya 1 lapis sehingga mudah cacat, tidak tahan air (NYA adalah tipe kabel udara) dan mudah digigit tikus. agar aman jika menggunakan kabel tipe ini lebih baik kabel di pasang di dalam pipah atau saluran penutup, karena selain tidak bisa di ganggu sama hewan pengerat dan tidak kenah air, juga apabila ada isolasi yang terkelupas (terbuka) tidak bisa tersentuh langsung sama manusia.
Kabel NYM : Kabel jenis ini hanya direkomendasikan khusus untuk instalasi tetap di dalam bangunan yang dimana penempatannya biasa diluar/ didalam tembok ataupun didalam pipa (conduit). Kabel NYM berinti lebih dari 1, memiliki lapisan isolasi PVC (biasanya warna putih atau abu-abu), ada yang berinti 2, 3 atau 4. Kabel NYM memiliki lapisan isolasi dua lapis, sehingga tingkat keamanannya lebih baik dari kabel NYA (harganya lebih mahal dari NYA). Kabel ini dapat dipergunakan dilingkungan yang kering dan basah, namun tidak boleh ditanam.
Kabel NYY : Kabel ini dirancang untuk instalasi tetap didalam tanah yang dimana harus tetap diberikan perlindungan khusus (misalnya duct, pipa PVC atau pipa besi). Kabel protodur tanpa sarung logam. Instalasi bisa ditempatkan didalam dan diluar ruangan, dalam kondisi lembab ataupun kering. memiliki lapisan isolasi PVC (biasanya warna hitam), ada yang berinti 2, 3 atau 4. Dan memiliki lapisan isolasi yang lebih kuat dari kabel NYM (harganya lebih mahal dari NYM). Kabel NYY memiliki isolasi yang terbuat dari bahan yang tidak disukai tikus.
2.4.2. Komponen Tambahan a. Buzzer Module Buzzer adalah suatu alat yang dapat mengubah sinyal listrik menjadi sinyal suara. Pada umumnya buzzer digunakan untuk alarm, karena penggunaannya cukup mudah yaitu dengan memberikan tegangan input maka buzzer akan mengeluarkan bunyi. Frekuensi suara yang di keluarkan oleh buzzer yaitu antara 1-5 KHz.
b. LED (Light Emitting Diode) Light emitting diode atau dioda pemancar cahaya merupakan sebuah jenis dioda yang dapat memancarkan cahaya apabila diberikan tegangan 1.8V dengan arus sebesar 1.5 mA. Dioda pemancar cahaya banyak digunakan sebagai lampu indicator atau lampu pilot serta peraga 12
(Display). Dioda pemancar cahaya juga dapat digunakan sebagai pemancar cahaya yang tidak terlihat oleh mata yaitu sinar inframerah. Bahan dasar pembuat dioda adalah Silicon Carbide (SiC),dioda ini dapat berbentuk bulat atau segi empat / Warna dioda pemancar cahaya ini ada berbagai macam, antara lain merah,kuning,hijau, biru dan sebagainya.
BAB 3 PEMBAHASAN 3.1.
Komponen Utama dan Tambahan 3.1.1. Komponen Utama
a. Arduino UNO b. Grove - Chest Strap Heart Rate Sensor c. Kabel d. Kabel USB ( menghubungkan Arduino UNO dengan PC) 3.1.2. Komponen Tambahan a. Buzzer b. Resistor c. LED (Light Emitting Diode) 3.2.
Perancangan Alat 3.2.1. Skematik Rangkaian
14
3.2.2. Langkah Percobaan a. Persiapan Peralatan yang dibutuhkan adalah :
Arduino UNO
Grove - Chest Strap Heart Rate Sensor
Kabel
Kabel USB ( menghubungkan Arduino UNO dengan PC)
Buzzer Module
LED
b. Membuat Rangkaian
Pasang kabel hitam pada Radio Receiver AM dengan kabel jumper ke ground analog pin pada arduino uno.
Pasang kabel merah pada Radio Receiver AM dengan kabel jumper ke pin 5v pada arduino uno.
Pasang kabel kuning pada Radio Receiver AM dengan kabel jumper ke pin 2 digital pada arduino uno.
Hubungkan 2 kabel pada buzzer module ke pin ground analog pin dan pin 9 digital pada arduino uno.
Pasang 1 buah LED dengan posisi kaki LED positif ke ground digital pin dan kaki LED negatif ke 13 digital pin pada arduino uno.
c. Buat sketch pada program Arduino dengan source code : unsigned int speakerPin = 9; unsigned char LEDpin = 13; unsigned char counter=0; unsigned int heart_rate=0; unsigned long temp[21]; unsigned long sub=0; volatile unsigned char state = LOW; bool data_effect=true; const int max_heartpluse_duty=5000;//you can change it follow your system's request.2000 meams 2 seconds. System return error if the duty overtrip 5 second. void setup() { Serial.begin(9600); //Serial.println("Please ready your chest belt."); //delay(1000); array_init(); Serial.println("Heart rate test begin."); attachInterrupt(0, interrupt, RISING);//set interrupt 0,digital port 2 } void loop() { } void beepon(){ analogWrite(speakerPin, 150); digitalWrite(LEDpin, HIGH); delay(10000); } void beepoff(){ analogWrite(speakerPin, 0); digitalWrite(LEDpin, LOW); } void sum()//calculate the heart rate { if(data_effect) { heart_rate=1200000/(temp[20]-temp[0]);//60*20*1000/20_total_time Serial.print("Your heart rate is : "); Serial.print(heart_rate); Serial.println(" bpm"); } data_effect=1;//sign bit } void interrupt() { temp[counter]=millis(); state = !state; //Serial.println(counter,DEC); //Serial.println(temp[counter]); switch(counter) { case(0):
16
}
sub=temp[counter]-temp[20]; Serial.println(sub); break; default: sub=temp[counter]-temp[counter-1]; Serial.println(sub); beepon(); delay(10); beepoff(); break; } if(sub>max_heartpluse_duty)//set 5 seconds as max heart pluse duty { data_effect=0;//sign bit counter=0; //Serial.println("Heart rate measure error,test will restart! or your dead" ); beepon(); array_init(); } if (counter==20&&data_effect) { counter=0; sum(); } else if(counter!=20&&data_effect) counter++; else { counter=0; data_effect=1; }
void array_init() { for(unsigned char i=0;i!=20;++i) { temp[i]=0; } temp[20]=millis(); }
d. Buat Buat sketch Java pada program Processing dengan source code : import processing.serial.*; // Step 2: Declare PFont variable PFont f; Serial myPort; // The serial port float[] vals; PrintWriter output; String heartrate = "Calculating your heart rate"; void setup() { size(400, 300); f = createFont("Arial", 18, true); frameRate(5); // List all the available serial ports
println(Serial.list()); // Open whatever port is the one you're using. myPort = new Serial(this, Serial.list()[12], 9600); // don't generate a serialEvent() unless you get a newline character: myPort.bufferUntil('\n'); // An array of initiate values vals = new float[width]; for (int i = 0; i < vals.length; i++) { vals[i] = 250; } int d = day(); // Values from 1 - 31 int m = month(); // Values from 1 - 12 int y = year(); // 2003, 2004, 2005, etc. int se = second(); // Values from 0 - 59 int mi = minute(); // Values from 0 - 59 int h = hour(); // Values from 0 - 23 String s = String.valueOf(d) + String.valueOf(m) + String.valueOf(y) + String.valueOf(h) + String.valueOf(mi) + String.valueOf(se); output = createWriter("data" + s + ".txt"); } void draw() { background(0); // Draw lines connecting all points for (int i = 0; i < vals.length-1; i++) { stroke(255, 123, 0); strokeWeight(1.5); line(i, vals[i], i+1, vals[i+1]); } // Slide everything down in the array for (int i = 0; i < vals.length-1; i++) { vals[i] = vals[i+1]; } // get the ASCII string: String inputString = myPort.readStringUntil('\n'); if (inputString != null) { // trim off any whitespace: String inString = trim(inputString); output.println(inString); output.flush(); // convert to an int and map to the screen height: int inByte = int(inString); // Add a new value vals[vals.length-1] = 250 - (inByte/5); println(inByte); textFont(f, 18); // Step 4: Specify font to be used fill(255); // Step 5: Specify font color // Step 6: Display Text text (inByte, 5, 290); } else { vals[vals.length-1] = 250; } if (inputString != null) { if (inputString.charAt(0) == 'Y') {
18
}
}
}
heartrate = inputString;
textFont(f, 18); // Step 4: Specify font to be used fill(255); // Step 5: Specify font color // Step 6: Display Text text (heartrate, 180, 290);
e. Testing (Pengujian)
Dekatkan Radio Receiver AM dengan Grove - Chest Strap Heart Rate Sensor dengan jarak maksimum 30cm.
Save dan Upload source code pada sketch program arduino. Lalu klik pojok kanan atas pada Arduino untuk membuka Serial Monitor. Jika berhasil maka akan tampil seperti gambar berikut :
Rubah serial port list yang digunakan pada source code sesuai dengan port dan baut-rate yang digunakan oleh Arduino, pada percobaan kali ini digunakan serial list nomor 12 pada COM port 27 dan baut-rate 9600 (Serial.list()[12], 9600).
Save dan Upload source code tersebut. Jangan jalankan serial monitor yang sama dengan COM port arduino karena akan terjadi bentrok. Jika berhasil maka akan tampil seperti gambar berikut :
3.2.3.Analisa Program
Sketch Program Arduino 1
Source Code
Penjelasan
unsigned char counter=0;
Menginisialisasi variabel
unsigned int heart_rate=0;
counter, heart_rate, temp, sub,
unsigned long temp[21];
state, data_effect dan
unsigned long sub=0;
max_heartpluse_duty.
volatile unsigned char state = LOW;
HeartPulse 2000 berarti 2 detik,
bool data_effect=true;
jika terjadi overtrip selama 2
const int max_heartpluse_duty=2000;
detik, sustem menampilkan error.
void setup() { pinMode(pin, OUTPUT); Serial.begin(9600); Serial.println("Please ready your chest belt.");
Mempersiapkan program untuk
delay(1000);//
menghitung detak jantung.
array_init(); Serial.println("Heart rate test begin."); attachInterrupt(0, interrupt, RISING);//set interrupt 0,digital port 2 } void loop() { }
20
void sum()//calculate the heart rate { if(data_effect) { heart_rate=1200000/(temp[20]temp[0]);//60*20*1000/20_total_time Serial.print("Heart_rate_is:\t");
Menghitung jumlah detak jantungdari array temp.
Serial.println(heart_rate); } data_effect=1;//sign bit } void interrupt() { temp[counter]=millis(); state = !state; Serial.println(counter,DEC); Serial.println(temp[counter]); switch(counter) { case(0): sub=temp[counter]-temp[20]; Serial.println(sub); break; default:
Melakukan pengecekan secara
sub=temp[counter]-temp[counter-1];
looping terus menerus terhadap
Serial.println(sub);
terjadinya interupsi atau jika
break;
terjadi overtrip.
} if(sub>max_heartpluse_duty)//set 2 seconds as max heart pluse duty { data_effect=0;//sign bit counter=0; Serial.println("Heart rate measure error,test will restart!" ); array_init(); } if (counter==20&&data_effect) {
counter=0; sum(); } else if(counter!=20&&data_effect) counter++; else { counter=0; data_effect=1; } } void array_init() { for(unsigned char i=0;i!=20;++i) {
Menginisialisasi nilai array temp temp[i]=0;
agar bernilai o.
} temp[20]=millis(); }
Sketch Pada Program Processing
Source Code
Penjelasan
import processing.serial.*;
Mengimport library untuk melakukan hubungan data
PFont f;
melalui serial dan
Serial myPort;
menginisialisasi variabel font,
float[] vals;
serial, output untuk menulis data
PrintWriter output; String heartrate = "Calculating your heart rate"; void setup() {
ke dalam teks dan string awal. Prosedur setup ini dijalankan
size(400, 300);
satu kali oleh program.
f = createFont("Arial", 18, true);
Program akan membuat
frameRate(5);
jendela tampilan dengan
// List all the available serial ports
lebar 400px dan tinggi
println(Serial.list());
300px, kemudian
// Open whatever port is the one you're using.
menggunakan font Arial
myPort = new Serial(this, Serial.list()[12],
berukuran 18 dengan frame
9600);
Rate tampilan sebanyak 5
22
// don't generate a serialEvent() unless you get a newline character:
fps.
Lalu program akan
myPort.bufferUntil('\n');
menmpilkan daftar serial
// An array of initiate values
port yang terhubung dengan
vals = new float[width];
computer, ubah data
for (int i = 0; i < vals.length; i++) {
Serial.list()[i] sesuai dengan
vals[i] = 250;
list serial port arduino, kali
}
ini menggunakan 12 karena
int d = day(); // Values from 1 - 31
arduino terhubung pada
int m = month(); // Values from 1 - 12
COM port 27 dan berada
int y = year(); // 2003, 2004, 2005, etc.
pada list 12.
int se = second(); // Values from 0 - 59
myPort.buffer untuk
int mi = minute(); // Values from 0 - 59
membaca data yang
int h = hour(); // Values from 0 - 23
didapatkan dari serial port
String s = String.valueOf(d) + String.valueOf(m)
diatas.
+ String.valueOf(y) + String.valueOf(h) +
String.valueOf(mi) + String.valueOf(se);
Kemudian inisialisasi waktu sistem untuk membuat file
output = createWriter("data" + s + ".txt");
teks dengan format “data” +
}
waktu sistem untuk menyimpan seluruh data yang diterima.
void draw() {
Prosedur draw ini dijalankan
background(0);
berulang kali oleh program.
// Draw lines connecting all points
for (int i = 0; i < vals.length-1; i++) {
Program akan membuat garis untuk membuat grafik
stroke(255, 123, 0);
dari setiap titik point pada
strokeWeight(1.5);
kurva grafik.
line(i, vals[i], i+1, vals[i+1]);
}
Program membaca data pada serial port kemudian menghapus whitespace
// Slide everything down in the array
(spasi) dan konversi ke
for (int i = 0; i < vals.length-1; i++) {
dalam integer. Data inilah
vals[i] = vals[i+1];
yang digunakan sebagai
}
point (titik pada grafik), data ini juga ditampilkan pada
// get the ASCII string:
program secara realtime.
String inputString =
Data ini merupakan data
myPort.readStringUntil('\n');
kuatnya denyut jantung.
output.println(inString); dan
if (inputString != null) {
output.flush(); merupakan
// trim off any whitespace:
fungsi untuk menulis data
String inString = trim(inputString);
pada teks file pada prosedur
output.println(inString);
setup.
output.flush(); // convert to an int and map to the screen height:
Jika data pada serial port berisi data rata-rata denyut jantung maka denyut jantung
int inByte = int(inString);
tersebut akan ditampilkan
// Add a new value
pada bagian kanan bawah
vals[vals.length-1] = 250 - (inByte/5);
program.
println(inByte); textFont(f, 18); // Step 4: Specify font to be used fill(255);
// Step 5: Specify font color
// Step 6: Display Text text (inByte, 5, 290); } else { vals[vals.length-1] = 250; } if (inputString != null) { if (inputString.charAt(0) == 'Y') { heartrate = inputString; } } textFont(f, 18); // Step 4: Specify font to be used fill(255);
// Step 5: Specify font color
// Step 6: Display Text text (heartrate, 180, 290); }
3.3. Hasil Percobaan Dari percobaan yang telah dijelaskan dan dilakukan sebelumnya, percobaan penghitungan denyut jantung menggunakan Grove Chest Strap Heart Rate Sensor dengan Arduino Uno mendapatkan hasil sebagai berikut:
Arduino Uno dapat dihubungkan dengan Grove Chest Strap Heart Rate Sensor.
24
Pada program, arduino melakukan konversi data analog (dari sensor suhu) menjadi digital dengan kekuatan denyut jantung dan frekuensi jantung dengan satuan BPM (beats per minute) yang ditampilkan dengan grafik dan angka.
Data denyut jantung tersebut dapat ditampilkan baik menggunakan serial monitor pada computer, lalu data serial tersebut dapat ditampilkan ke dalam bentuk grafik.
Suara yang dihasilkan buzzer mengikuti tempo denyut jantung yang terdeteksi, apabila denyut berhenti sekitar 5 detik, maka buzzer akan menghasilkan bunyi yang panjang.
Cahaya yang dihasilkan LED mengikuti tempo denyut jantung.
Hasil rekam denyut jantung akan tersimpan datanya secara otomatis dengan formati teks ekstensi .txt dengan format nama file “data” + waktu percobaan.
BAB 4 PENUTUP 4.1. Kesimpulan Dari keseluruhan rangkaian pembuatan dan pemrograman sampai hasil yang didapat dari alat penghitung denyut jantung yang memanfaatkan perangkat Grove Chest Strap Heart Rate dan Arduino UNO ini, maka dapat diambil beberapa kesimpulan, yaitu : Alat ini dapat digunakan untuk melakukan penghitungan denyut jantung per menit dalam bentuk angka maupun grafik dan menyimpan data kedalam file text. Jarak radio AM Receiver dengan Grove - Chest Strap Heart Rate (nirkabel) hanya dapat menjangkau sensor denyut jantung sejauh 30 cm. Jika jarak melebihi batas maksimal, data tidak dapat diterima. Pada perangkat ini, Grove - Chest Strap Heart Rate harus benar-benar menyentuh kulit dan berada di area dekat jantung. Jika tidak, maka denyut jantung tidak terdeteksi dan error. Alat Grove - Chest Strap Heart Rate ini masih belum akurat untuk melakukan penghitungan denyut jantung karena dipengaruhi beberapa faktor seperti detak jarak, gerakan dan kuat/tidaknya denyut. LED dan buzzer akan menghasilkan cahaya dan suara mengikuti tempo denyut jantung yang terdeteksi oleh sensor Grove - Chest Strap Heart Rate.
4.2. Saran Alat penghitung detak jantung ini masih terdapat banyak kekurangan dan perlu dilakukan pengembangannya guna hasil yang lebih baik. Berikut uraiannya :
Pembuatan alat sejenis ini dapat dibuat lebih akurat dan jarak penerimaan data denyut bisa sejauh mungkin.
Source code aplikasi arduino yang digunakan belum memiliki fungsi yang lengkap.
26
DAFTAR PUSTAKA Bräunl, Thomas. Embedded Robotics - Mobile Robot Design and Applications with Embedded Systems, Second Edition.Springer, Jerman,Juni 2006. [3] Byte Craft Limited. First Steps with Embedded Systems. Byte Craft Limited, Kanada, November 2012. [1] Wilmshurst, Tim.Designing Embedded Systems with PIC Microcontrollers Principles and Applications.Elsevier Ltd, Inggris, 2007. [2]
Internet : http://www.seeedstudio.com/wiki/Grove_-_Heart_rate_chest_belt_kit http://irpan91.blogspot.com/2012/05/cara-menghitung-denyut-nadi.html http://arduino.cc/en/Tutorial/Graph http://cmuems.com/2012/c/arduino-processing/