• Tidak ada hasil yang ditemukan

BAB V HASIL DAN PEMBAHASAN

4.1 Realisasi Sistem

4.1.4 Realisasi Pembangunan Program pada Mikrokontroler

Gambar 4. 14 Halaman kelola pengguna.

Gambar 4.14 merupakan realisasi antarmuka halaman untuk kelola pengguna sistem yang berada pada level admin. Halaman ini menampilkan data untuk dari semua pengguna sistem dalam bentuk tabel yang dapat di update oleh admin.

Gambar 4. 15 Halaman kelola zona target olahraga.

Gambar 4.15 merupakan realisasi antarmuka halaman untuk kelola zona target olahraga yang berada pada level admin. Halaman ini menampilkan data untuk zona target olahraga dalam bentuk tabel yang dapat di update oleh admin.

4.1.4 Realisasi Pembangunan Program pada Mikrokontroler

Dalam realisasi pembangunan control application bahasa yang digunakan adalah bahasa C, dan IDE yang digunakan adalah Arduino IDE. Program yang akan dibangun yaitu agar sensor dapat bekerja sesuai dengan fungsinya yaitu dapat mengambil nilai

48 denyut dan suhu di mana pulse sensor untuk mengambil nilai denyut jantung dan sensor DS18B20 untuk suhu tubuh, kemudian program untuk menghubungkan alat dengan jaringan internet sehingga dapat melakukan pertukaran data dari alat ke web server.

Berikut merupakan source code dari board Arduino Uno yang digunakan untuk mengukur nilai denyut jantung yang kemudian nilai denyut jantung dikirim terlebih dahulu ke board Wemos D1 Mini baru kemudian dikirim ke borker secara serial.

Listing 4. 1 Source code library control application. #define USE_ARDUINO_INTERRUPTS true

#include <PulseSensorPlayground.h> #include <SoftwareSerial.h>

SoftwareSerial s(5,6);

Fungsi dari Library PulseSensorPlayground.h merupakan library yang digunakan untuk mendeklarasikan dan menjalankan fungsi dari sensor pulse. Kemudian untuk fungsi dari Library SoftwareSerial.h pada source code diatas merupakan

library Arduino yang menyediakan fungsi untuk komunikasi serial melalui pin digital. Library tersebut digunakan pada sistem ini untuk membangun komunikasi serial antara board Arduino Uno dengan board Wemos D1 Mini.

Listing 4. 2 Source code inisialisasi variabel. const int PulseWire = 0;

const int LED13 = 13; int Threshold = 550;

PulseSensorPlayground pulseSensor;

Pada source code di atas merupakan pendeklarasian dari variabel yang digunakan untuk memperoleh nilai denyut jantung. const int PulseWire = 0 berfungsi untuk mendeklarasikan pin analog yang digunakan pada pulse sensor. const int LED13 = 13 merupakan untuk mendeklarasikan LED pada pin 13 pada board Arduino. int Threshold = 550 mendeklarasikan untuk Sinyal mana yang harus "dihitung sebagai ketukan" dan yang harus diabaikan. PulseSensorPlayground pulseSensor; Membuat instance objek PulseSensorPlayground yang akan di panggil dengan "pulseSensor". SoftwareSerial s(5,6) digunakan untuk menginisialisasi pin digital yang digunakan untuk komunikasi serial antara Arduino Uno dengan Wemos D1 Mini.

Listing 4. 3 Source code fungsi setup. void setup () {

s.begin(9600);

Serial.begin(9600);

49 pulseSensor.blinkOnPulse(LED13)

pulseSensor.setThreshold(Threshold); if (pulseSensor.begin()) {

Serial.println("We created a pulseSensor Object!"); }

}

Script di atas merupakan fungsi “setup()” yang akan dijalankan sekali saja pada saat perangkat dihidupkan. Pada fungsi terdapat s.begin(9600); yaitu untuk menjalankan fungsi dari SoftwareSerial, kemudian Serial.begin(9600); yaitu

untuk serial monitor. pulseSensor.analogInput(PulseWire)untuk

mengkonfigurasikan objek pulse sensor, dengan menugaskan variabel-variabel yang digunakan ke objek tersebut. if (pulseSensor.begin() digunakan untuk memeriksa ulang objek "pulseSensor" telah dibuat dan mulai melihat sinyal dari sensor pulse.

Listing 4. 4 Source code fungsi loop. Void loop () { int BPM = pulseSensor.getBeatsPerMinute(); if (pulseSensor.sawStartOfBeat()) { Serial.print("BPM: "); Serial.println(BPM); //send BPM if(s.available()>0) { s.write(BPM); } } delay (20); }

Script di atas merupakan script fungsi “void loop()” untuk melakukan

pengulangan dalam pembacaan nilai sensor. int BPM =

pulseSensor.getBeatsPerMinute() memanggil fungsi pada objek sensor pulse dan mengembalikan nilai BPM sebagai "int". if (pulseSensor.sawStartOfBeat()) melakukan pengecekan secara terus menerus untuk melihat apakah sebuah sentuhan atau ketukan ke sensor pulse terjadi.

Listing 4. 5 Source code library control application. #include <PubSubClient.h> #include <ESP8266WiFi.h> #include <SoftwareSerial.h> SoftwareSerial s(D6,D5); #include <OneWire.h> #include <DallasTemperature.h>

Fungsi dari Library – library pada source code diatas adalah sebagai berikut:

a. ESP8266WiFi.h adalah library yang digunakan untuk mengakses wifi menggunakan modul ESP8266.

50 b. PubSubClient.h adalah library yang digunakan untuk membangun komunikasi MQTT sehingga dapat melakukan proses publish dan subscribe antara perangkat dengan broker.

c. SoftwareSerial.h merupakan library Arduino yang menyediakan fungsi untuk komunikasi serial melalui pin digital.

d. OneWire.h adalah library yang digunakan untuk mendeklarasikan pin protokol

oneWire, di mana dengan protokol oneWire sensor DS18B20 atau sensor suhu air

hanya membutuhkan 1 pin data untuk komunikasinya.

e. DallasTemperature.h adalah library yang digunakan untuk mendeklarasikan sensor DS18B20 atau sensor suhu air.

f.

Listing 4. 6 Source code pendeklarasian variabel control application. const int oneWireBus = D4;

const char* ssid = "ParkJimin"; const char* password = "12345678";

const char* mqtt_server = "broker.mqtt-dashboard.com"; ssint BPM = 0; float tempc; OneWire oneWire(oneWireBus); DallasTemperature sensorsuhu(&oneWire); WiFiClient espClient; PubSubClient client(espClient);

Pada source code diatas ssid dan password merupakan pendeklarasian nama

ssid dan password yang digunakan untuk terhubung ke jaringan wifi. Mqtt_server dan clientID berfungsi untuk mendeklarasikan alamat broker dan id client MQTT. const int oneWireBus = D4 dan OneWire oneWire(oneWireBus) berfungsi untuk mendeklarasikan pin digital yang digunakan pada protokol oneWire dari sensor DS18B20. DallasTemperature sensorsuhu(&oneWire); berfungsi untuk mendeklarasikan pin digital yang digunakan pada sensor DS18B20. WiFiClient espClient berfungsi untuk memberi nama dari wifi dan PubSubClient client(espClient) berfungsi untuk mendeklarasikan nama dari client MQTT.

Listing 4. 7 Source code fungsi setup wifi. void setup_wifi() {

delay(10);

// We start by connecting to a WiFi network Serial.println();

Serial.print("Connecting to "); Serial.println(ssid);

WiFi.begin(ssid, password);

51 delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); }

Script di atas merupakan script fungsi “void setup_wifi()” untuk mengatur proses koneksi mikrokontroler Wemos D1 Mini dengan jaringan internet dan mqtt yaitu dengan mengambil nilai variabel “ssid” dan “password” yang telah dideklarasikan sebelumnya.

Listing 4. 8 Source code method callback.

void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived [");

Serial.print(topic); Serial.print("] ");

for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); if ((char)payload[0] == '1') { nilaipertama(); }else if ((char)payload[0] == '2') { } }

Source code diatas merupakan fungsi “void callback” yang digunakan untuk menerima pesan atau payload pada sebuah topik yang telah di subscribe. Nilai pesan atau

payload yang diterima merupakan nilai dari button mulai pada web yaitu angka 1. Jadi

Ketika button di tekan akan mengirim angka 1 dan menjalankan fungsi untuk mulai pengambilan nilai sensor pulse dan sensor DS18B20.

Listing 4. 9 Source code method reconnect. void reconnect() {

while (!client.connected()) {

Serial.print("Attempting MQTT connection..."); String clientId = "ESP8266Client-";

clientId += String(random(0xffff), HEX); if (client.connect(clientId.c_str())) { Serial.println("connected"); client.subscribe("webtoarduino"); } else { Serial.print("failed, rc="); Serial.print(client.state());

Serial.println(" try again in 5 seconds"); delay(1);

} } }

52

Source code diatas merupakan sebuah fungsi void reconnect yang digunakan dalam untuk menghubungkan ke alamat broker MQTT yang telah ditetapkan sebelumnya. Fungsi akan terus dijalankan sampai dengan perangkat dapat terhubung dengan wifi yang telah ditentukan sebelumnya. Ketika perangkat telah terhubung maka perangkat akan dapat melakukan subscribe ke topik yang di publish oleh web dan sebaliknya.

Listing 4. 10 Source code setup function. void setup() { s.begin(9600); pinMode(BUILTIN_LED, OUTPUT); Serial.begin(9600); sensorsuhu.begin(); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); }

Script diatas merupakan fungsi “setup()” yang akan dijalankan sekali saja pada saat perangkat dihidupkan. Pada fungsi terdapat s.begin(9600); yaitu untuk menjalankan fungsi dari SoftwareSerial, kemudian Serial.begin(9600); yaitu untuk serial monitor. sensorsuhu.begin(); yaitu untuk memulai pembacaan suhu dengan sensor DS18B20. “setup_wifi()” untuk melakukan koneksi ke jaringan wifi, “client.setServer(mqtt_server, 1883)” untuk melakukan koneksi dengan MQTT, dan “client.setCallback(callback)” untuk menjalankan fungsi “callback” sebagaimana yang dijelaskan pada script sebelumnya.

Listing 4. 11 Source code publish data sensor. void nilaipertama(){ for(int i = 1; i <= 60; i++){ s.write("s"); if (s.available()>0) { BPM=s.read(); Serial.println(BPM); } sensorsuhu.requestTemperatures(); tempc = sensorsuhu.getTempCByIndex(0); Serial.println(tempc); Serial.print("BPM = "); Serial.println(BPM); Serial.print("TEMP = "); Serial.println(tempc); String denyutJ = ""; denyutJ += BPM; String suhuT = ""; suhuT += tempc;

client.publish("arduinotoweb/jantung", (char*) denyutJ.c_str()); client.publish("arduinotoweb/suhu", (char*) suhuT.c_str()); delay(1000);

53

Script di atas merupakan fungsi “nilaipertama()” yang akan dijalankan jika perangkat menerima angka 1 dari web atau menerima topik yang telah di publish dari web. Fungsi akan membaca nilai sensor pulse yang di kirim dari mikrokontroler Arduino Uno dengan serial yang kemudian di tampung pada variabel “BPM” dan membaca nilai suhu dari sensor DS18B20 yang di tampung pada variabel “tempc”. Kemudian kedua nilai akan di publish ke web untuk di tampilkan secara realtime.

Dokumen terkait