Proposal Monitoring
Proposal Monitoring
i
LEMBAR PERSETUJUAN PEMBIMBING
Pembimbing I Pembimbing II
Mengetahui
ii
Usulan Penelitian Skripsi Ini Telah Diuji Dan Dinilai Oleh Panitia Penguji Pada
Program Studi Teknik Elektromedik
Universitas Bali Internasional Pada
Tanggal 11 Pebruari 2022
iii
DAFTAR ISI
HALAMAN SAMPUL.............................................................................................i
LEMBAR PERSETUJUAN PEMBIMBING..........................................................ii
DAFTAR ISI...........................................................................................................iv
DAFTAR GAMBAR..............................................................................................vi
DAFTAR TABEL..................................................................................................vii
BAB I PENDAHULUAN........................................................................................1
1.1 Latar Belakang...................................................................................................1
1.2 Rumusan Masalah..............................................................................................3
1.3 Tujuan Penelitian...............................................................................................3
1.4 Manfaat Penelitian.............................................................................................3
1.4.1 Manfaat teoritis...............................................................................................3
1.4.2 Manfaat praktis...............................................................................................3
BAB II KAJIAN PUSTAKA...................................................................................4
2.1 Elektromedis......................................................................................................4
2.2 Virus Corona......................................................................................................4
2.3 Suhu Tubuh........................................................................................................5
2.4 Jantung...............................................................................................................5
2.4.1 Sistem Konduksi Jantung................................................................................6
2.4.2. Sistem Pengukuran Detak Jantung.................................................................7
2.5 Saturasi Oksigen (SpO2)....................................................................................8
2.5.1. Pengukuran Saturasi Oksigen (SpO2)............................................................9
2.5.2 Faktor Yang Mempengaruhi Pembacaan Saturasi Oksigen..........................10
2.5.3 Sistem Pengukuran Pulse Oxymeter.............................................................12
2.6. Termometer.....................................................................................................13
2.7 Pulse Oxymeter................................................................................................14
2.8 Sensor Suhu DS18B20.....................................................................................15
2.9. Sensor Detak Jantung dan Saturasi Oksigen (SpO2) MAX30100........................16
2.10. NodeMCU ESP8266.....................................................................................17
2.11 LCD ( Liquid Cristal Display )......................................................................20
2.12 I2C (Inter Integrated Circuit).......................................................................21
iv
2.13 Software Arduino IDE....................................................................................22
2.14. Internet Of Things (IoT)................................................................................24
2.15 Blynk...............................................................................................................25
2.16 Baterai Li-ion.................................................................................................26
BAB III KERANGKA BERFIKIR DAN KONSEP PENELITIAN..........................28
3.1 Kerangka Berfikir...............................................................................................28
3.2 Konsep Penelitian............................................................................................28
BAB IV METODE PENELITIAN........................................................................30
4.1 Rancangan Penelitian.......................................................................................30
4.2 Lokasi dan Waktu Penelitian...........................................................................30
4.3 Penentuan Sumber Data...................................................................................31
4.3.1 Data Primer...................................................................................................31
4.3.2 Data Sekunder...............................................................................................31
4.4 Metode Pengumpulan Data..............................................................................31
4.5 Sampel..............................................................................................................31
4.6 Variabel Penelitian...........................................................................................31
4.6.1 Variabel Terikat............................................................................................32
4.6.2 Variabel Bebas..............................................................................................32
4.7 Instrumen Penelitian........................................................................................32
4.7.1 Alat-Alat Penelitian.......................................................................................32
4.8.2 Bahan-Bahan Penelitian................................................................................33
4.7 Alur Penelitian.................................................................................................34
4.8 Rencana Analisa Data......................................................................................35
DAFTAR PUSTAKA
v
DAFTAR GAMBAR
vi
DAFTAR TABEL
vii
BAB I
PENDAHULUAN
1
2
2.1 Elektromedis
Elektromedis sebagai salah satu dari jenis tenaga kesehatan berwenang
untuk menyelenggarakan atau menjalankan praktik di bidang pelayanan kesehatan
sesuai dengan bidang keahlian yang dimiliki. Pelayanan Elektromedik adalah
kegiatan perencanaan pengadaan dalam bentuk analisa kebutuhan, instalasi, uji
fungsi, pemeliharaan, perbaikan, pengujian dan atau kalibrasi, penyesuaian
(adjustment), pemantauan fungsi dan inspeksi terhadap alat elektromedik, alat
ukur pengujian dan kalibrasi, serta kegiatan pengendalian atau pemantapan mutu,
keamanan, keselamatan, dari mulai persiapan pelaksanaan, pelaporan dan
evaluasi, pelayanan rancang bangun atau desain, dan pemecahan masalah serta
pembinaan teknis bidang elektromedik (PERMENKES No. 65 th. 2016).
4
5
2.4 Jantung
Jantung bekerja melalui mekanisme secara berulang dan berlangsung
terus menerus yang juga disebut sebagai sebuah siklus jantung sehingga secara
visual terlihat atau disebut sebagai detak jantung. Melalui mekanisme berselang
6
Gambar 2.3 Ujung Jari pada Sensor dan Proses Sinyal BPM
(Nawawi, 2020).
Pada gambar 2.3 ujung jari pada sensor, cahaya infrared akan terpancar
dan mengenai ujung jari. Secara siklus, jantung melakukan sebuah periode sistol
yaitu periode saat berkontraksi dan mengosongkan isinya (darah), dan periode
diastol yaitu periode yang melakukan relaksasi dan pengisian darah pada jantung,
sensor mengukur detak jantung berdasarkan prinsip peredaran darah akibat
pompa jantung. Cahaya yang terpancar akan mendeteksi jari manusia, aliran
darah yang seiring dengan detak jantung akan membuat cahaya inframerah
berubah sehingga akan terdeteksi oleh phototransistor akibat perubahan cahaya
tersebut. Kemudian penguat akan menguatkan pulsa – pulsa dari detak jantung
yang telah di ukur sehingga dapat diterima oleh mikro yaitu dari orde millivolt
ke orde volt. Data yang sudah dikirim tersebut akan diolah pada mikrokontroler
8
dan hasilnya akan dikirim ke display dan monitor android. Sebagai organ vital
tubuh, jantung berfungsi memompa darah dan nutrisi yang kaya oksigen ke
seluruh bagian tubuh. Selama melakukan kerjanya, otot - otot pada jantung akan
berkontraksi dan berileksasi untuk mendorong darah bekerja pada pembuluh
darah. (Ahmad Nawawi, 2020).
Gerakan-gerakan darah yang dipompa oleh jantung dapat dirasakan
sebagai denyut nadi. Hal inilah yang bisa digunakan untuk mengukur berapa kali
jantung seseorang berdetak dalam satu menit. Skala ukur detak jantung adalah
beats per minute (bpm). Dilansir dari Mayo Clinic, pada orang dewasa detak
jantung istirahat normal adalah 50 hingga 100 bpm (Nawawi, 2020).
Sensor pulse oxymeter seperti yang ditunjukan pada gambar 2.4 dibangun
dari dua LED, yang masing-masing memancarkan panjang gelombang cahaya.
Probe umumnya ditempatkan pada jari atau daun telinga. Sebuah fotodetektor pada
sisi lain mengukur intensitas cahaya yang berasal dari transmisi sumber cahaya yang
menembus jari. Transmisi cahaya melalui arteri adalah denyutan yang diakibatkan
pemompaan darah oleh jantung. Alat oksimeter menggunakan LED merah dan
inframerah bersama-sama dengan fotodetektor untuk mengatur arus di dalam
rangkaian relatif terintegrasi untuk penyerapan cahaya yang melalui jari
2. Konsentrasi Zat
Jumlah cahaya yang diserap sebanding dengan konsentrasi Hb dalam
pembuluh darah, seperti yang ditunjukan pada gambar 2.5. Namun, salah satu
11
Pada gambar 2.6 yang mana berdasarkan hukum lambert: jumlah cahaya
yang diserap sebanding dengan panjang jalan yang cahaya telah melakukan
perjalanan substansi menyerap. Penyerapan cahaya oleh hemoglobin lebih besar
12
dari pada arteri yang ukuran luas penampangnya kecil. Walaupun jumlah
konsentrasi Hb sama, cahaya akan mengenai partikel Hb lebih banyak daripada
arteri. Hal ini dapat menjelaskan adanya perbedaan nilai saturasi antara satu
pasien dengan pasien yang lain jika terdapat perbedaan besarnya luas penampang
jari.
4. Penyerapan Cahaya Oleh Hemoglobin
Terdapat dua jenis Hb berdasarkan kandungan oksigen di dalamnya,
diantaranya oxyhemoglobin yaitu hemoglobin yang mengikat oksigen dan
deoxyhemoglobin adalah hemoglobin yang tidak ada oksigen. Dapat dianalisis
bahwa cahaya LED merah lebih banyak diserap oleh deoxyhemoglobin dan
cahaya LED inframerah lebih banyak diserap oleh oxyhemoglobin. Rasio
perbedaan penyerapan cahaya tersebut menjadi acuan untuk menentukan
saturasi oksigen.
Faktor yang mempengaruhi bacaan saturasi disebabkan beberapa faktor yaitu:
1. Hemoglobin (Hb) Jika Hb tersaturasi penuh dengan O2 walaupun nilai Hb
rendah maka akan menunjukkan nilai normalnya. Misalnya pada klien dengan
anemia memungkinkan nilai SpO2 dalam batas normal.
2. Sirkulasi Oksimetri tidak akan memberikan bacaan yang akurat jika area
yang di bawah sensor mengalami gangguan sirkulasi.
3. Aktivitas menggigil atau pergerakan yang berlebihan pada area sensor dapat
menggangu pembacaan SpO2 yang akurat.
2.5.3 Sistem Pengukuran Pulse Oxymeter
Pengukuran ini mempunyai 2 metode yaitu transmittance mode dan
reflectance mode. Pada transmittance mode LED dan fotodiode diletakkan
diantara jari serta reflectance mode LED dan fotodiode diletakkan sejajar
seperti yang ditunjukkan pada Gambar 2.7 dibawah ini (Linawati, 2020):
13
2.6. Termometer
Termometer adalah alat yang dipakai untuk mengukur suhu
(temperatur), ataupun perubahan suhu. Suhu badan normal yakni 36,5oC –
37,5oC. Bila suhu seseorang menjadi lebih dari 37,5 oC maka orang tersebut
dikatakan demam. Prinsip dasar dari alat ukur ini ialah fenomena pemuaian yang
merupakan indeks temperatur. Suhu seorang pasien adalah bagian penting dari
data klinis. Dalam konteks data lain dapat memandu langkah-langkah diagnostik
dan terapi dengan menentukan adanya penyakit dan sejauh mana pasien
menanggapi pengobatan. Sejak termometer pertama kali ditemukan oleh Galileo,
alat ini terus dikembangkan untuk memberikan kemudahan dan ketepatan yang
lebih baik dalam mengukur suhu tubuh seseorang (Faiz, 2018).
a. Pada saat atau setelah operasi atau prosedur yang menggunakan obat
penenang.
b. Untuk mengecek seberapa kinerja obat pada pengobatan paru-paru.
c. Untuk mengecek kemampuan seseorang ketika mengatasi peningkatan
tingkat aktivitas
d. Untuk mengecek apakah seseorang memiliki saat-saat pernafasan berhenti
pada saat tidur (sleep apnea).
e. Pulse oxymeter dapat digunakan untuk mengecek kesehatan seseorang
atas kondisi kesehatan yang berkaitan dengan tingkatan oksigen dalam
darah seperti :
f. Serangan jantung ( Heart Attack )
g. Gagal jantung (heart failure)
h. Anemia
i. Kanker paru-paru (Lung Cancer)
j. Asma (Asthma)
yang sama dengan bahasa C hanya berbeda syntax. Jika menggunakan bahasa
Lua maka dapat menggunakan tool Lua loader maupun Lua uploder. Selain
dengan bahasa Lua NodeMCU juga support dengan sofware Arduino IDE
dengan melakukan sedikit perubahan board manager pada Arduino IDE.
Sebelum digunakan board ini harus di flash terlebih dahulu agar support terhadap
tool yang akan digunakan. Jika menggunakan arduino menggunakan firmware
yang cocok yaitu firmware keluaran dari AiThinker yang support AT Command.
Untuk penggunaan tool loader Firmware yang di gunakan adalah firmware
NodeMCU (Linawati, 2020).
Berikut ini spesifikasi dari NodeMCU V3 yang ditujukan pada tabel 2.1
sebagai berikut.
SPESIFIKASI NODEMCU V3
Mikrokontroler ESP8266
Ukuran Board 57 mm x 30 mm
Tegangan Input 3.3V – 5V
GPIO 13 PIN
Kanal PWM 10 Kanal
10 bit ADC Pin 1 Pin
Flash Memory 4 MB
Clock Speed 40/26/24 MHz
WiFi IEEE 801.11 b/g/n
Frekuensi 2.4 GHz – 22.5 GHz
USB Port Micro USB
Card Reader Tidak ada
USB to Serial Converter CH340G
Tabel 2.1 Spesifikasi NodeMCU V3 (Linawati, 2020).
kode yang berjalan pada MCU (memory controller unit) berukuran 5mm x
5mm dengan gaya Nodejs, dan sangat mempercepat aplikasi pengembangan
aplikasi IoT
3. Perangkat WI-FI paling murah Perangkat WIFI MCU ESP8266 terintegrasi
dan mudah untuk prototyping development kit dengan harga kurang dari $2.
Master adalah piranti yang memulai transfer data pada I2C Bus dengan
membentuk sinyal Start, mengakhiri transfer data dengan membentuk sinyal Stop,
dan membangkitkan sinyal clock. Slave adalah piranti yang dialamati master
(Yohanes, 2018)
22
2.15 Blynk
Blynk adalah platform aplikasi yang dapat diunduh secara gratis untuk iOS
dan Android yang berfungsi mengontrol Arduino, Raspberry Pi dan sejenisnya
melalui Internet. Blynk dirancang untuk Internet of Things dengan tujuan dapat
mengontrol hardware dari jarak jauh, dapat menampilkan data sensor, dapat
menyimpan data, visual dan melakukan banyak hal canggih lainnya.
(Supegina,2020).
26
Ada tiga komponen utama dalam platform yaitu Blynk App, Blynk
Server, dan Blynk Library sebagai berikut (Linawati, 2020).:
1. Blynk App memungkinkan membuat antarmuka yang menakjubkan untuk
proyek dengan menggunakan widget yang disediakan.
2. Blynk server bertanggung jawab atas semua komunikasi antara smartphone dan
perangkat keras, yang bisa menggunakan blynk cloud atau menjalankan server
Blynk pribadi secara lokal. Blynk bersifat open source, bisa dengan mudah
menangani ribuan perangkan dan bahkan bisa diluncurkan di Raspberry.
3. Blynk Libraries bisa untuk semua platform perangkat keras yang populer
memungkinkan komunikasi server dan memproses semua perintah yang masuk
dan keluar
28
29
Gambar 3.1 adalah konsep penelitian dari Alat Monitoring Suhu, Detak
Jantung, dan Saturasi Oksigen (SpO2) yang dibuat dengan menggunakan konsep
Internet of Things untuk mempermudah perawat maupun dokter memantau
keadaan vital sign pasien secara real time lewat aplikasi Blynk. Penggunaan
Internet of Things bertujuan agar perawat maupun dokter dapat memantau
pasien tanpa harus meninggalkan workstation
1.
BAB IV
METODE PENELITIAN
30
31
4.5 Sampel
Sampel yang digunakan dalam penelitian ini adalah sebanyak 20 orang
secara acak baik laki-laki maupun perempuan yang dimana hasil pengukurannya
disajikan dalam bentuk tabel.
Pengambilan data sampel dilakukan pada bagian tubuh yang berbeda,
untuk pengukuran suhu dilakukan pada ketiak sampel dan pengukuran detak
jantung dan saturasi oksigen dilakukan pada jari telunjuk sampel.
Mulai
Tidak berhasil
Berhasil
Menyusun laporan hasil uji alat monitoring suhu, detak jantung, saturasi
oksigen (SpO2) berbasis Internet of Things (IoT)
Selesai
BAB V
HASIL PENELITIAN
5.1 Alat Monitoring Suhu, Detak Jantung, Saturasi Oksigen (Spo2) Berbasis
Internet Of Things (IoT)
Pada penelitian ini telah dibuat alat monitoring suhu, detak jantung, dan
Saturasi Oksigen (SpO2) berbasis Internet of Things (IoT) untuk memantau suhu,
detak jantung, dan Saturasi Oksigen (SpO2) pasien secara real time yang dapat
dilakukan dari jarak jauh menggunakan koneksi internet. Alat monitoring ini
dibuat menggunakan mikrokontroler NodeMCU ESP8266 sebagai pengendali
peralatan input dan output. Alat monitoring ini menampilkan hasil pengukuran
melalui LCD pada alat dan juga menampilkan hasil pengukuran melalui aplikasi
Blynk
38
Gambar 5.1 alat monitoring suhu, detak jantung, dan Saturasi Oksigen (SpO2)
berbasis Internet of Things (IoT).
5.2 Rangkaian Alat Monitoring Suhu, Detak Jantung, Saturasi Oksigen
(Spo2)
Berbasis Internet Of Things (IoT)
Penelitian alat monitoring suhu, detak jantung, dan Saturasi Oksigen
(SpO2) berbasis Internet of Things (IoT) menggunakan beberapa komponen
elektronika. Gambar 5.2 menunjukkan beberapa komponen yang digunakan.
1. NodeMCU ESP8266
2. Sensor MAX30100
3. Sensor DS18B20
4. LCD 20x4
5. Baterai
6. Modul Charger
7. Switch ON/OFF
5
1 4
6 2
5.3 Listing Program Alat Monitoring Suhu, Detak Jantung, Saturasi Oksigen
(Spo2) Berbasis Internet Of Things (IoT)
Pada pembuatan program alat monitoring suhu, detak jantung, dan
Saturasi Oksigen (SpO2) berbasis Internet of Things (IoT) menggunakan software
Integrated Development Environment (IDE) yang ditanamkan pada
mikrokontroler yang bernama NodeMCU ESP8266 sehingga mampu menerima
perintah, mengolah perintah dan mengeksekusi perintah untuk melakukan
pembacaan parameter secara real time. IDE Arduino merupakan software yang
sangan canggih dan mudah dipahami ditulis menggunakan java untuk membuat
suatu rancangan atau sketsa program pada papan NodeMCU. Berikut ini
merupakan listing program yang digunakan pada alat monitoring suhu, detak
jantung, dan Saturasi Oksigen (SpO2) berbasis Internet of Things (IoT).
Perakitan dilakukan setelah badan dari alat monitoring suhu, detak jantung,
dan Saturasi Oksigen (SpO2) berbasis Internet of Things (IoT) selesai, perakitan
dilakukan dengan menyatukan satu persatu komponen yang telah dirangkai
dengan badan alat.
5.5 Cara Kerja Alat Monitoring Suhu, Detak Jantung, Saturasi Oksigen
(Spo2)
Berbasis Internet Of Things (IoT)
Cara kerja alat monitoring suhu, detak jantung, dan Saturasi Oksigen
(SpO2) berbasis Internet of Things (IoT):
1. Dimulai dari supply power menggunakan baterai
2. Kemudian masuk ke board NodeMCU ESP8266. Pada Board NodeMCU
ESP8266 yang sebelumnya sudah diisi program yang berfungsi untuk
mengatur rangkaian yang akan digunakan untuk mengirim data ke internet.
3. Sensor DS18B20 digunakan sebagai sensor suhu yang akan mendeteksi suhu
pasien kemudian mengirimkan datanya ke board NodeMCU ESP8266.
4. Sensor MAX30100 digunakan sebagai sensor pengukuran detak jantung dan
Saturasi Oksigen (SpO2) pasien kemudian mengirimkan datanya ke board
NodeMCU ESP8266.
41
Tabel 5.1 Data pengujian detak jantung dan Saturasi Oksigen (SpO2)
Pulse Alat
Blynk
Oxymeter
Jenis
No Nama SpO HR
Kelamin HR HR SpO2 SpO2
2 (BPM
(BPM) (BPM) (%) (%)
(%) )
I Gd Restu
1 L 96 77 96 78 96 78
Wira A
Ni Km Tya
2 P 98 92 97 95 97 95
Cahyani
45
Ni Nym
3 P 97 88 97 85 97 85
Putri A W
Ni Kt Puspa
4 P 98 84 98 84 98 84
AW
I Md
5 L 98 72 98 78 98 78
Wahyu W
I A Nym
6 P 96 81 96 79 96 79
Agung Diah
I Gd Putu
7 L 98 62 98 65 98 65
Oka
Luh Putu
8 P 97 76 97 76 97 76
Sukma W
Luh Erna
9 P 98 65 97 65 97 65
Handayani
Ni Wy
10 P 96 91 96 95 96 95
Krismawati
I Gede Panji
11 L 97 90 97 91 97 91
K
I Kd Oky
12 L 97 80 97 79 97 79
Dwipayana
I Km
13 L 97 93 97 95 97 95
Cakrana
I Gd Angga
14 L 98 97 98 96 98 96
Awidya
I Md Antoni
15 L 98 99 97 96 97 96
J
Sri
16 Padmasanti P 98 71 97 76 97 76
D
Ni Pt Ratih
17 P 98 66 97 64 97 64
Pradnya
I Wayan
18 L 96 72 97 69 97 69
Wirta
Km
19 Septiana L 98 72 98 73 98 73
Putra
I Gd
20 L 98 81 97 82 97 82
Pebrianto
Kd Yoga
21 L 96 71 96 73 96 73
Permana
Kd Dodik
22 L 98 95 98 92 98 92
Saputra
Wy Dede
23 L 97 82 97 82 97 82
Wirawan
24 Ni Wayan P 96 79 96 79 96 79
46
Sitiari
Ni Ketut
25 L 97 77 97 77 97 77
Suwetja
DAFTAR PUSTAKA
Avelia, Bertha dan Putu Agus Ardiana. 2016. “Persepsi Investor Sebagai
Pemoderasi Pengaruh Profitabilitas Pada Respon Pasar” E – Jurnal
Akuntansi Universitas Udayana.14.3, Hal: 2251-2277. Kuta Selatan:
Universitas Udayana (Unud).
Kasdan, J., Baharuddin, R., & Shamsuri, A. S. (2020). Covid-19 dalam Korpus
Peristilahan Bahasa Melayu: Analisis Sosioterminologi (Covid-19 in the
Corpus)
Risinda. 2019. Rancang Bangun Sistem Monitoring Dan Perbaikan Faktor Daya
Pada Konsumsi Listrik Rumah Tangga Berbasis Mikrokontroler
Atmega3. Jurnal Fakultas Sains dan Teknologi, Universitas Islam Negeri
Sumatera Utara.
/***************************************************************
***/
// Membuat Karakter LCD Derajat Dan Love /
/
****************************************************************
**/
uint8_t degree[8] = {140,146,146,140,128,128,128,128}; // Membuat
Karakter Derajat
byte Love1[] = {B00000, // Membuat Karakter Love
Besar
B01010, //
B11111, //
B11111, //
B11111, //
B01110, //
B00100, //
B00000 //
}; //
//
byte Love2[] = {B00000, // Membuat Karakter Love
kecil
B00000, //
B01010, //
B11111, //
B01110, //
B00100, //
B00000, //
B00000 //
}; //
//---------------------------------------------------------------//
void setup(){
lcd.init();
lcd.backlight();
Serial.begin(115200); // Atur Serial Baudrate Untuk
Memonitoring System Ke Serial Monitor, Matikan Jika Tidak Memerlukannyya
pinMode(LED_State , OUTPUT); // Konfigurasikan PIN
Sebagai Output Untuk LED State
/***************************************************************
****/
// Jalankan LCD Dan Animasi Start UP Saat Awal Di Nyalakan /
/
****************************************************************
***/
lcd.createChar(0, degree); // Atur Alamat Karakter
Derajat Celcius
lcd.createChar(1, Love1); // Atur Alamat Karakter
Love Besar
lcd.createChar(2, Love2); // Atur Alamat Karakter
Love Kecil
//
lcd.setCursor(0,1); // Posisikan Korsor Baris No.1
lcd.print(F(" Start UP ")); // Tampilkan Pesan Ke LCD
lcd.setCursor(0,2); // Posisikan Korsor Baris No.2
lcd.print(F("Loading")); // Tampilkan Pesan Ke LCD
for(int i=0; i<14; i++) // Jalankan Array Untuk
Loading Animasi
delay(100), lcd.print(F(".")); // Atur Kecepatan Loading
Kirim Pesan Ke LCD Berupa Animasi Loading
//
lcd.clear(); // Bersihkan KArakter Sebelumnya
//---------------------------------------------------------------//
void loop(){
SensorMAX30100.update(); //
BlynkControl(); // Jalankan Blynk
Sensor_Report(); // Jalankan Pembacaan Data
Sensor Heart, SPO2 Dan Temp
/*------------------------------------------------------------------------------*/
/* Ready LED State */
/*------------------------------------------------------------------------------*/
if (millis()-LEDSystemTime >= LEDState_Time){LEDSystemTime =
millis();} // Timer Led State Reset
else if (millis()-LEDSystemTime >= 200*4 ){digitalWrite(LED_State, ON );}
// Nyalakan LED State
else if (millis()-LEDSystemTime >= 200*3 ){digitalWrite(LED_State, OFF);}
// Matikan LED State
else if (millis()-LEDSystemTime >= 200*2 ){digitalWrite(LED_State, ON );}
// Nyalakan LED State
else if (millis()-LEDSystemTime >= 200*1 ){digitalWrite(LED_State, OFF);}
// Matikan LED State
}
void BlynkControl(){
/*----------------------------------------------------------------------------*/
/* Otomatis Mengoneksikan Ke Blynk Saat Terputus Dari Blynk */
/*----------------------------------------------------------------------------*/
if(Blynk.connected()){ //
Blynk.run(), LEDState_Time = 3000; //
Display_LCD(); //
}else{ //
LEDState_Time = 600; //
Display_LCD_NotConnecting(); //
Blynk.connect(); //
Serial.println("Connecting"); //
} //
/
*END___________________________________________________________
____________*/
/*----------------------------------------------------------------------------*/
/* Konfigurasi Waktu Tanggal Jam RTC Menggunakan Blynk */
/*----------------------------------------------------------------------------*/
currentTime = String(hour()) + ":" + minute() + ":" + second(); //
currentDate = String(day()) + "/" + month() + "/" + year(); //
Jam = hour (); //
Menit = minute(); //
Detik = second(); //
Blynk.virtualWrite(V51,"Jam: ", currentTime," - Tgl: ", currentDate); //
Kirim Data Jam Dan Tanggal to the App
/
*END___________________________________________________________
____________*/
}
/*----------------------------------------------------------------------------*/
/* Mengirim Notifikasi Setelah Koneksi */
/*----------------------------------------------------------------------------*/
BLYNK_CONNECTED() { // Jika Blynk
Terkoneksi Maka
Serial.println("Info Ke Blynk Sudah Konek"); // Kirim
Pesan Ke Serial
Blynk.notify("Blynk Sudah ONLINE BOS, \nMonitoring SPO2, Heart Rate &
Temperature\nSiap Di Akses \n\nIP Address : "+ WiFi.localIP().toString());
// Kirim Pesan Notifikasi Ke Aplikasi
SensorMAX30100.begin(); //
rtc.begin(); // Jalankan RTC
lcd.clear(); //
} //
/*END BLYNK_CONNECTED-------------------------------------------------------
*/
/*----------------------------------------------------------------------------*/
/* Mengoneksikan Ke WiFi Mode Station */
/*----------------------------------------------------------------------------*/
void Connecting_Wifi(){ //
WiFi.begin(ssid, pass); //
while (WiFi.status() != WL_CONNECTED) { //
lcd.setCursor(0,0); // Posisikan Korsor Baris
No.1
lcd.print(F(" MENGHUBUNGKAN WiFi ")); //
Tampilkan Pesan Ke LCD
lcd.setCursor(0,1); // Posisikan Korsor Baris
No.2
lcd.print(F("Connecting To SSID: ")); // Tampilkan
Pesan Ke LCD
lcd.setCursor(0,2); // Posisikan Korsor Baris
No.3
lcd.print(ssid); // Tampilkan Nama SSID
Ke LCD
lcd.setCursor(0,3); // Posisikan Korsor Baris
No.4
for(int i=0; i<20; i++) // Jalankan Array Untuk
Animasi Connecting
delay(250), lcd.print(F(".")), // Kirim Pesan Ke
LCD Berupa Animasi Loading
Serial.print("."), //
digitalWrite(LED_State, !digitalRead(LED_State)); //
if (millis() - AutoRestart > 10000) // Jika Timer
Mencapai 10 Detik Tidak Terhubung Ke WiFi Maka -
Serial.println("\nAuto Restart"), //
ESP.restart(); // Restart ESP
} //
//
Serial.println("\nWiFi connected"); //
lcd.clear(); // Bersihkan KArakter
Sebelumnya
lcd.setCursor(0,0); // Posisikan Korsor Baris
No.1
lcd.print(F("Berhasil Terhubung! ")); // Tampilkan
Pesan Ke LCD
lcd.setCursor(0,1); // Posisikan Korsor Baris
No.2
lcd.print(ssid); // Tampilkan Pesan Ke
LCD
lcd.setCursor(0,2); // Posisikan Korsor Baris
No.3
lcd.print(F("Alamat IP: ")); // Tampilkan Pesan
Ke LCD
lcd.setCursor(0,3); // Posisikan Korsor Baris
No.4
lcd.print(WiFi.localIP().toString()); // Tampilkan Pesan
Ke LCD
//
delay(2000); //
lcd.clear(); // Bersihkan KArakter
Sebelumnya
Blynk.config(auth, server, port); //
Blynk.connect(); //
} //
void Display_LCD(){
/*----------------------------------------------*/
/* Menampilkan Data Tanggal */
/*----------------------------------------------*/
lcd.setCursor(0,0); // Posisikan Korsor Baris No.1
lcd.print(currentDate); // Tampilkan Data Ke LCD
lcd.print(F(" ")); // Tampilkan Pesan Ke LCD
//--------------------------------------------//
/*----------------------------------------------*/
/* Menampilkan Waktu jam Menit Detik */
/*----------------------------------------------*/
lcd.setCursor(12,0); // Posisikan Korsor Baris No.1
lcd.print(konversi(Jam)); // Tampilkan Jam Ke LCD
lcd.print(F(":")); // Tampilkan Pesan Ke LCD
lcd.print(konversi(Menit)); // Tampilkan Menit Ke LCD
lcd.print(F(":")); // Tampilkan Pesan Ke LCD
lcd.print(konversi(Detik)); // Tampilkan Detik Ke LCD
//--------------------------------------------//
/*-----------------------------------------------------*/
/* Menampilkan Data Heart Rate - BPM & Animasi Love */
/*-----------------------------------------------------*/
lcd.setCursor(0,1); // Posisikan Korsor Baris No.2
lcd.print(F("Heart: ")); // Tampilkan Pesan Ke LCD
lcd.print(BPM_Rata2,2); // Tampilkan Data Ke LCD
lcd.print(F("bpm ")); // Tampilkan Pesan Ke LCD
//
if (Count == 1 ) lcd.setCursor(17,1), lcd.write (2); //
if (Count == 2 ) lcd.setCursor(18,1), lcd.write (1); //
if (Count == 3 ) lcd.setCursor(19,1), lcd.write (2); //
if (Count == 4 ) lcd.setCursor(17,1), lcd.write (1); //
if (Count == 5 ) lcd.setCursor(18,1), lcd.write (2); //
if (Count == 6 ) lcd.setCursor(19,1), lcd.write (1); //
if (Count == 7 ) lcd.setCursor(17,1), lcd.write (2); //
if (Count == 8 ) lcd.setCursor(18,1), lcd.write (2); //
if (Count == 9 ) lcd.setCursor(19,1), lcd.write (2); //
if (Count == 10) lcd.setCursor(17,1), lcd.write (1); //
if (Count == 11) lcd.setCursor(18,1), lcd.write (1); //
if (Count == 10) lcd.setCursor(19,1), lcd.write (1), //
Count = 0; //
//---------------------------------------------------//
/*----------------------------------------------*/
/* Menampilkan Data Oksigen Dalam Darah SpO2 */
/*----------------------------------------------*/
lcd.setCursor(0,2); // Posisikan Korsor Baris No.3
lcd.print(F("SpO2 : ")); // Tampilkan Pesan Ke LCD
lcd.print(SPO2_Rata2,0); // Tampilkan Data Ke LCD
lcd.print(F("% ")); // Tampilkan Pesan Ke LCD
//--------------------------------------------//
/*----------------------------------------------*/
/* Menampilkan Data Temperature Suhu Tubuh */
/*----------------------------------------------*/
lcd.setCursor(0,3); // Posisikan Korsor Baris No.4
lcd.print(F("Temp : ")); // Tampilkan Pesan Ke LCD
lcd.print(TempActual,2); // Tampilkan Data Ke LCD
lcd.write ((byte)0); // Tampilkan Pesan Ke LCD
lcd.print (F("C ")); // Tampilkan Pesan Ke LCD
//--------------------------------------------//
}//------------------------------------------//
//------------------------------------------//
void Display_LCD_NotConnecting(){
/*----------------------------------------------*/
/* Menampilkan Data Tanggal */
/*----------------------------------------------*/
lcd.setCursor(0,0); // Posisikan Korsor Baris No.1
lcd.print(currentDate); // Tampilkan Data Ke LCD
lcd.print(F(" ")); // Tampilkan Pesan Ke LCD
//--------------------------------------------//
/*----------------------------------------------*/
/* Menampilkan Waktu jam Menit Detik */
/*----------------------------------------------*/
lcd.setCursor(12,0); // Posisikan Korsor Baris No.1
lcd.print(konversi(Jam)); // Tampilkan Jam Ke LCD
lcd.print(F(":")); // Tampilkan Pesan Ke LCD
lcd.print(konversi(Menit)); // Tampilkan Menit Ke LCD
lcd.print(F(":")); // Tampilkan Pesan Ke LCD
lcd.print(konversi(Detik)); // Tampilkan Detik Ke LCD
//--------------------------------------------//
/*----------------------------------------------*/
/* Status Witing Saat Blynk Connecting */
/*----------------------------------------------*/
lcd.setCursor(0,1); // Posisikan Korsor Baris No.2
lcd.print(F("Mengoneksikan Blynk!")); // Tampilkan Pesan Ke LCD
lcd.setCursor(0,2); // Posisikan Korsor Baris No.3
lcd.print(F("Heart: ")); // Tampilkan Pesan Ke LCD
lcd.print(F("Waiting ")); // Tampilkan Pesan Ke LCD
lcd.setCursor(0,3); // Posisikan Korsor Baris No.4
lcd.print(F("SpO2 : ")); // Tampilkan Pesan Ke LCD
lcd.print(F("Waiting ")); // Tampilkan Pesan Ke LCD
//--------------------------------------------//
}//------------------------------------------//
//------------------------------------------//
/***************************************************************
*******/
// Penambah Digit Jika Di Bawah Angka 10 Maka Akan Menambah Karakter 0
/
/
****************************************************************
******/
String konversi(int num) { //
if (num < 10) return "0" + String(num); //
else return String(num); //
} //
/*---------------------------------------------------------------------------------------*/
/* Setingan Pertama Kali Untuk Sensor DS18B20 */
/*---------------------------------------------------------------------------------------*/
void SensorDS_SetUP(){ //
sensors.begin(); //
Serial.print("Sensor Temperature Device = "); //
Serial.println(sensors.getDeviceCount(), DEC); //
//
Serial.print("Parasite power is: "); //
if ( sensors.isParasitePowerMode()) Serial.println("ON"); else
Serial.println("OFF"); //
if (!sensors.getAddress(insideThermometer, 0)) //
Serial.println("Tidak Dapat Menemukan Alamat Sensor Temp");
//
//
Serial.print("Alamat Device 0: "); //
PrintAddress_DS18B20(insideThermometer); //
Serial.println(); //
sensors.setResolution(insideThermometer, 11); //
default 9 bit , bit Lebih Besar Lebih Lambat
//
Serial.print("Device 0 Resolution: "); //
Serial.print(sensors.getResolution(insideThermometer), DEC);
//
Serial.println(); //
} //
//-------------------------------------------------------------------------------------//
/*---------------------------------------------------------------------------------------*/
/* Setingan Pertama Kali Untuk Sensor MAX30100
*/
/*---------------------------------------------------------------------------------------*/
void SensorMAX_SetUP(){ //
if (!SensorMAX30100.begin()) {Serial.println("MAX30100 Tidak Bisa Di
Akses"); for(;;);}//
else {Serial.println("MAX30100 Berhasil Di Hubungkan");}
//
//SensorMAX30100.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
// Lowering the current to 7.6mA..
SensorMAX30100.setIRLedCurrent(MAX30100_LED_CURR_11MA);
// Configuring LEDs biases to 50mA..
SensorMAX30100.setOnBeatDetectedCallback(onBeatDetected);
// Register a callback for the beat detection
} //
//--------------------------------------------------------------------------------------//
/*----------------------------------------------------------------------------------*/
/* Digunakan Untuk Mengambil Sample Data Temperature DS18B20 &
Update Ke Blynk */
/*----------------------------------------------------------------------------------*/
void printTemperature(DeviceAddress Alamat_DS18B20)
{ //
TempActual = sensors.getTempC(Alamat_DS18B20); //
if(TempActual == DEVICE_DISCONNECTED_C){
//
Serial.println("Error: Tidak Dapat Membaca Data Temperature"); //
return; //
} //
Blynk.virtualWrite(V23, TempActual); //
Blynk.virtualWrite(V24, DallasTemperature::toFahrenheit(TempActual));
//
//
SensorMAX30100.begin (); //
SensorMAX30100.update(); //
} //
//--------------------------------------------------------------------------------//
/*----------------------------------------------------------------------------------*/
/* Interval Data Repot / Update Heart Rate Dan SpO2 */
/*----------------------------------------------------------------------------------*/
void PrintAddress_DS18B20(DeviceAddress Alamat_DS18B20){
//
for (uint8_t i = 0; i < 8; i++){ //
if (Alamat_DS18B20[i] < 16) Serial.print("0"); //
Serial.print(Alamat_DS18B20[i], HEX); //
} //
} //
//--------------------------------------------------------------------------------//
void Sensor_Report(){
/*----------------------------------------------------------------------------------*/
/* Interval Data Repot / Update Heart Rate Dan SpO2 */
/*----------------------------------------------------------------------------------*/
SensorMAX30100.update(); //
if (millis() - TimerSPO2_Update > TimingReport_SpO2) { //
BPM_Value = SensorMAX30100.getHeartRate(); //
SPO2_Value = SensorMAX30100.getSpO2(); //
TimerSPO2_Update = millis(); //
} //
//--------------------------------------------------------------------------------//
/*----------------------------------------------------------------------------------*/
/* Interval Data Repot / Update Heart Rate Dan SpO2 */
/*----------------------------------------------------------------------------------*/
if (millis() - TimerTemp_Update > TimingReport_Temp) { //
sensors.requestTemperatures(); // Kirim
Perintah Untuk Memanggil Data Temperature
printTemperature(insideThermometer); //
PulseOximeter SensorMAX30100; //
SensorMAX30100.resume(); //
SensorMAX30100.update(); //
TimerTemp_Update = millis(); //
} //
//--------------------------------------------------------------------------------//
/*----------------------------------------------------------------------------------*/
/* Mengambil Sample Data Heart Rate BPM Dan Mencari Nilai Rata-rata
*/
/*----------------------------------------------------------------------------------*/
if (BPM_Value >= 1){ //
float Sampel_BPM[] = {BPM_Value}; //
Mengambil Data Hasil Perhitungan Rumus
byte jumlahSampel_BPM = sizeof(Sampel_BPM) / sizeof(Sampel_BPM[0]);
// Menghitung Sample Yang Di Dapat
float jumlah_BPM = 0; // Membuat
Variable jumlah Volt Aki
//
for (int i = 0; i < jumlahSampel_BPM; i++){jumlah_BPM +=
Sampel_BPM[i];} // Menghitung Menggunakan array
BPM_Rata2 = jumlah_BPM / jumlahSampel_BPM; //
Blynk.virtualWrite(V10, BPM_Rata2 ); //
BPM_ZeroTime = millis(); //
}else{ //
if (millis()-BPM_ZeroTime >=3000){ //
lcd.setCursor(14,1), lcd.print (" "), Count = 0; //
Blynk.virtualWrite(V10, 0); //
BPM_Rata2 = 0; //
} //
} //
//--------------------------------------------------------------------------------//
/*----------------------------------------------------------------------------------*/
/* Mengambil Sample Data SPO2 % Dan Mencari Nilai Rata-rata
*/
/*----------------------------------------------------------------------------------*/
if (SPO2_Value >= 1){ //
float Sampel_SPO2[] = {SPO2_Value}; //
byte jumlahSampel_SPO2 = sizeof(Sampel_SPO2) /
sizeof(Sampel_SPO2[0]); // Menghitung Sample Yang Di Dapat
float jumlah_SPO2 = 0; // Membuat
Variable jumlah Volt Aki
//
for (int i = 0; i < jumlahSampel_SPO2; i++){jumlah_SPO2 +=
Sampel_SPO2[i];} // Menghitung Menggunakan array
SPO2_Rata2 = jumlah_SPO2 / jumlahSampel_SPO2; //
Blynk.virtualWrite(V11, SPO2_Rata2); //
SPO2_ZeroTime = millis(); //
}else{ //
if (millis()-SPO2_ZeroTime >=3000){ //
Blynk.virtualWrite(V11, 0); //
SPO2_Rata2 = 0; //
} //
} //
//--------------------------------------------------------------------------------//
}//------------------------------------------------------------------------------//
//------------------------------------------------------------------------------//