• Tidak ada hasil yang ditemukan

4.2 Pembahasan 28

4.2.5 Sistem Kerja Smart Water Monitoring

Sistem kerja pada alat pemantau air otomatis ini yaitu sensor Waterflow, sensor TDS, dan sensor Turbidity melakukan pendeteksian terhadap sampel aliran air.

Data hasil pendeteksian tersebut dikirimkan ke ESP32 sebagai mikrokontroler dan dilakukan pengolahan data yang setelah itu di tampilkan pada LCD 16x2 I2C.

Lalu untuk sistem IoT pada alat pemantau kualitas air ini yaitu menggunakan aplikasi Firebase sebagai tampilan data dari hasil Sensor.

BAB 5

SIMPULAN DAN SARAN

5.1 Simpulan

Berdasarkan hasil dan pembahasan yang telah dibuat, maka penulis mengambil beberapa simpulan sebegai berikut :

1. Cara merancang alat pemantauan air otomatis berbasis IoT untuk pelanggan Air PDAM dilakukan dengan merancang blok digaram, merancang flowchart sistem, merancang desain alat, merancang skema rangkaian, dan merancang perangkat lunak, seperti pada sub bab 3.3 Langkah Perancangan.

2. Cara kerja alat pemantauan air otomatis berbasis IoT untuk pelanggan Air PDAM dilakukan dengan menyalakan alat dengan daya PLN, alat pemantauan air dan perangkat Firebase harus terkoneksi dengan Wifi yang sama, lalu air mengalir melewati pipa yang sudah dihubungkan ketiga sensor didalam alat, Sensor Waterflow, TDS, dan Turbidity, maka sensor membaca volume air yang mengalir, dan membaca kejernihan dan salinitas air, lalu menampilkan hasil bacaan sensor ke Lcd 16x2, lalu melalui sistem IoT, Firebase menampilkan juga bacaan sensor dan juga tarif harga pemakaian berdasarkan volume air secara realtime.

3. Cara melihat data volume air, tagihan air, kejernihan air, dan salinitas air yang dikumpulkan oleh database Firebase dengan membuat akun Firebase, kemudian masuk ke file project monitoring, lalu masuk ke fitur realtime database, dari fitur ini, hasil data sensor dapat dilihat secara realtime.

5.2 Saran

Adapun saran dari penulis terhadap rancangan alat tugas akhir sebagai berikut : 1. Sistem ini masih merupakan prototype dan diharapkan kedepannya agar

dilanjutkan untuk ke tingkat yang lebih luas dan lebih kompleks, serta memiliki

kran buka tutup otomatis.

2. Sensor-sensor yang digunakan untuk rancangan alat ini diharapkan untuk dikalibrasi secara berkala agar pembacaan sensor semakin akurat. Khususnya untuk sensor TDS agar mendekati hasil alat ukur TDS di jurnal penelitian.

3. Perlu dilakukan penelitian lebih lanjut agar bisa dikembangkan dalam penggunaan media selain air, misalnya minyak.

4. Pada saat menyalakan alat diharapkan untuk memperhatikan kondisi sekitar agar menghindari kejadian yang tidak diinginkan karena media yang digunakan berupa air agar lebih berhati-hati terhadapa alat elektronik sekitar.

DAFTAR PUSTAKA

Alqisyan, N., & Nirmala, I. (2022). RANCANG BANGUN PROTOTYPE SMART WATER METER PELANGGAN AIR PDAM BERBASIS IOT DAN ANDROID. Coding Jurnal Komputer dan Aplikasi, 10(02), 227- 236.

Cosham, A., & Hopkins, P. (2004). An overview of the pipeline defect assessment manual (PDAM). Paper presented at the 4th international pipeline technology conference.

Diharja, R., Setiawan, B., & Handini, W. (2021). Rancang Bangun Sistem dan Kontrol Penggunaan Air PDAM Secara RealtimeBerbasis Wemos dan IoT. Jurnal Teknik Komputer AMIK BSI, 7(1), 11-18.

Hakim, D. P. A. R., Budijanto, A., & Widjanarko, B. (2018). Sistem Monitoring Penggunaan Air PDAM pada Rumah Tangga Menggunakan Mikrokontroler NODEMCU Berbasis Smartphone ANDROID. Jurnal Iptek, 22(2), 9-18.

Haras, M., & Skotnicki, T. (2018). Thermoelectricity for IoT–A review. Nano Energy, 54, 461-476.

Payara, G. R., & Tanone, R. (2018). Penerapan Firebase Realtime Database Pada Prototype Aplikasi Pemesanan Makanan Berbasis Android. Jurnal Teknik Informatika dan Sistem Informasi, 4(3), 397–406-397–406.

Pratomo, A. B., & Perdana, R. S. (2017). Arduviz, a visual programming IDE for arduino. Paper presented at the 2017 International Conference on Data and Software Engineering (ICoDSE).

Putra, Y. R., Triyanto, D., & Suhardi, S. (2017). Rancang Bangun Perangkat Monitoring Dan Pengaturan Penggunaan Air Pdam (Perusahaan Daerah Air Minum) Berbasis Arduino Dengan Antarmuka Website. Coding Jurnal Komputer dan Aplikasi, 5(1).

Setiawan, D., Jaya, H., Nurarif, S., Syahputra, T., & Syahril, M. (2022).

Implementasi Esp32-Cam Dan Blynk Pada Wifi Door Lock System Menggunakanteknik Duplex. Journal of Science and Social Research, 5(1), 159-164.

Soni, P., & Suchdeo, K. (2012). Exploring the serial capabilities for 16x2 lcd interface. International Journal of Emerging Technology and Advanced Engineering, 2(11), 109-112.

LAMPIRAN Lampiran 1 Listing Program

#include <WiFi.h>

#include <FirebaseESP32.h>

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

// Firebase configuration

#define FIREBASE_HOST "morflowindobot-65d9e-default-rtdb.asia- southeast1.firebasedatabase.app"

#define FIREBASE_API_KEY "AIzaSyC-Xa8vEF1lPe4E67WEWap72H7CEdxM-w4"

volatile int NumPulses;

int PinSensor = 34;

float factor_conversion = 7.5;

float calibration_factor_waterflow = 1.0;

float volume = 0;

long dt = 0;

long t0 = 0;

void IRAM_ATTR PulseCount() {

NumPulses++; // increment the pulse variable }

int GetFrequency() {

int frequency;

NumPulses = 0; // We set the number of pulses to 0 noInterrupts(); // We disable the interruptions delay(1000); // sample for 1 second

interrupts(); // We enable the interruptions

frequency = NumPulses; // Hz (pulses per second) return frequency;

}

FirebaseConfig config;

FirebaseAuth auth;

FirebaseData firebaseData;

// LCD configuration

LiquidCrystal_I2C lcd(0x27, 16, 2);

#define RELAY_PIN 16 // Turbidity sensor settings

#define TURBIDITY_SENSOR_PIN 39 int read_ADC;

int ntu;

// TDS sensor settings

#define TDS_SENSOR_PIN A0

#define VREF 5.0

#define SCOUNT 1

int analogBuffer[SCOUNT];

int analogBufferTemp[SCOUNT];

int analogBufferIndex = 0;

int copyIndex = 0;

float calibrationFactor_tds = 6.4;

// Function prototypes

int getMedianNum(int bArray[], int iFilterLen);

void setup() {

// Initialize Serial Monitor Serial.begin(115200);

pinMode(RELAY_PIN, OUTPUT);

// Initialize LCD lcd.begin();

lcd.backlight();

lcd.clear();

// WiFi connection

WiFi.begin("YOUR_SSID", "YOUR_PASSWORD");// ganti, sesuaikan dengna nama wifi dan paswordnya

while (WiFi.status() != WL_CONNECTED) { delay(1000);

Serial.println("Connecting to WiFi...");

}

Serial.println("Connected to WiFi");

// Firebase configuration

config.api_key = FIREBASE_API_KEY;

config.database_url = FIREBASE_HOST;

Firebase.begin(&config, &auth);

Firebase.reconnectWiFi(true);

// Check Firebase connection

if (Firebase.signUp(&config, &auth, "", "")) { Serial.println("Sign up successful");

} else {

Serial.printf("Sign up failed: %s\n", config.signer.signupError.message.c_str());

} }

void loop() {

Firebase.getString(firebaseData, "/value/button");

String Status = firebaseData.stringData(); // Menggunakan stringData() untuk mendapatkan nilai string dari FirebaseData

Serial.println(Status);

if (Status == "ON") {

Serial.println("Nyalakan Air");

digitalWrite(RELAY_PIN, HIGH); // Menggunakan RELAY_PIN yang sudah didefinisikan sebelumnya

} else if (Status == "OFF") { Serial.println("Matikan Air");

digitalWrite(RELAY_PIN, LOW); // Menggunakan RELAY_PIN yang sudah didefinisikan sebelumnya

} else {

Serial.println("Silahkan hanya isi dengan ON atau OFF");

}

unsigned long t0 = millis(); // Deklarasi t0 di dalam loop float volume = 0; // Deklarasi volume di dalam loop if (Serial.available())

{

if (Serial.read() == 'r')

volume = 0; // reset the volume if we receive 'r' }

float frequency = GetFrequency(); // we obtain the frequency of the pulses in Hz

float flow_L_m = frequency / factor_conversion * calibration_factor_waterflow; //

calculate the flow in L/m with calibration factor

unsigned long dt = millis() - t0; // calculate the time variation t0 = millis();

volume = volume + (flow_L_m / 60) * (dt / 1000); // volume(L)=flow(L/s)*time(s) lcd.clear();

Serial.print("Flow: ");

Serial.print(flow_L_m, 3);

Serial.print("L/min\tVolume: ");

Serial.print(volume, 3);

Serial.println("L");

Firebase.setString(firebaseData, "/value/debit", String(volume)); // Tidak mencoba mengirim ke Firebase

lcd.setCursor(0, 1);

lcd.print(" DBT : " + String(volume) + "L");

delay(2000);

// Turbidity sensor reading

read_ADC = analogRead(TURBIDITY_SENSOR_PIN);

if (read_ADC > 4094) read_ADC = 4094;

ntu = map(read_ADC, 0, 4094, 300, 0);

Serial.print("Turbidity: ");

Serial.print(ntu);

Serial.println(" NTU");

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Turbidity: ");

lcd.setCursor(0, 1);

lcd.print(String(ntu) + " NTU");

// Update Firebase

Firebase.setString(firebaseData, "/value/turbidity", String(ntu));

delay(2000);

// TDS sensor reading float averageVoltage = 0;

float temperature = 25.0;

float tdsValue = 0;

static unsigned long analogSampleTimepoint = millis();

if (millis() - analogSampleTimepoint > 40U) { analogSampleTimepoint = millis();

analogBuffer[analogBufferIndex] = analogRead(TDS_SENSOR_PIN);

analogBufferIndex++;

if (analogBufferIndex == SCOUNT) { analogBufferIndex = 0;

} }

static unsigned long printTimepoint = millis();

if (millis() - printTimepoint > 800U) { printTimepoint = millis();

for (copyIndex = 0; copyIndex < SCOUNT; copyIndex++) { analogBufferTemp[copyIndex] = analogBuffer[copyIndex];

}

averageVoltage = getMedianNum(analogBufferTemp, SCOUNT) * (float)VREF / 4094.0;

float compensationCoefficient = 1.0 + 0.02 * (temperature - 25.0);

float compensationVoltage = averageVoltage / compensationCoefficient;

tdsValue = (133.42 * compensationVoltage * compensationVoltage * compensationVoltage - 255.86 * compensationVoltage * compensationVoltage + 857.39

* compensationVoltage) * 0.5;

tdsValue *= calibrationFactor_tds;

Serial.print("TDS Value: ");

Serial.print(tdsValue, 0);

Serial.println(" ppm");

lcd.setCursor(0, 0);

lcd.print("TDS: " + String(tdsValue) + " PPM");

// Update Firebase

Firebase.setString(firebaseData, "/value/tds", String(tdsValue));

// Wait for 2 seconds delay(2000);

}

// Wait for 2 seconds before the next reading delay(2000);

}

int getMedianNum(int bArray[], int iFilterLen) { int bTab[iFilterLen];

for (byte i = 0; i < iFilterLen; i++) { bTab[i] = bArray[i];

}

int i, j, bTemp;

for (j = 0; j < iFilterLen - 1; j++) { for (i = 0; i < iFilterLen - j - 1; i++) { if (bTab[i] > bTab[i + 1]) {

bTemp = bTab[i];

bTab[i] = bTab[i + 1];

bTab[i + 1] = bTemp;

} } }

if ((iFilterLen & 1) > 0) {

bTemp = bTab[(iFilterLen - 1) / 2];

} else {

bTemp = (bTab[iFilterLen / 2] + bTab[iFilterLen / 2 - 1]) / 2;

}

return bTemp;

}

Lampiran 2 datasheet TDS V1.0

Lampiran 3 datasheet Turbidity SEN0189

Lampiran 4 datasheet Waterflow YFB6

Lampiran 5 Dokumentasi Kalibrasi Sensor

Lampiran 6 Biodata Penulis

BIODATA PENULIS LAPORAN AKHIR

1. Identitas Diri

Nama Lengkap : Geovanny Edvan Marcelino

Jenis Kelamin : Laki-laki

Tempat dan Tanggal Lahir : Medan, 18 Desember 2003 Jurusan / Program Studi : Elektro/Elektronika

NIM : 2105041036

Alamat Rumah : Jl. SMRAJA gsahata no.12 No Telepon / HP : +6281440053917

Alamat E-mail : [email protected]

Judul Laporan Akhir : Rancang Bangun Prototype Smart Water Monitoring Pelanggan Air PDAM Berbasis IoT Nama Dosen Pembimbing : Samaria Chrisna H.S, S.T., M.T.

2. Riwayat Pendidikan

No Jenjang Pendidikan Nama Sekolah Tempat Tahun Ijazah

1 SD St. Antonius V Medan 2015

2 SMP Trisakti 1 Medan Medan 2018

Dokumen terkait