ALAT PEMANTAU SUHU DAN KELEMBABAN UDARA SERTA SUHU TANAH SEBAGAI PERINGATAN DINI GUNUNG MELETUS BERBASIS IOT (KELOMPOK B2)

 ALAT PEMANTAU SUHU DAN KELEMBABAN UDARA SERTA SUHU TANAH SEBAGAI PERINGATAN DINI GUNUNG MELETUS BERBASIS IOT


Dosen Pengampu : Dr. Samuel Beta Kuntoardjo.,ING.TECH,MT,DR


KELOMPOK B2

Aira Alfario Rizahaqi Surianto (3.32.20.1.02)

Dhyaa Nanda Puspita (3.32.20.1.09)


LATAR BELAKANG

Wilayah Indonesia ada sekitar 500 gunung, dengan 129 gunung api aktif yang bisa meletus setiap saat. Dari 129 gunung api aktif tersebut, hanya 70 gunung api aktif yang dipantau oleh Pusat Vulkanologi dan Mitigasi Bencana Geologi (PVMBG). Hal ini masih banyak gunung api aktif yang belum terpantau oleh PVMBG. Aktifitas gunung berapi dapat dipantau dengan mengamati beberapa parameter salah satunya suhu dan kelembaban udara serta suhu tanah. Parameter tersebut digunakan sebagai tanda akan terjadinya erupsi. Oleh karena itu, informasi tentang status aktivitas atau kondisi gunung berapi dapat digunakan untuk menilai sejauh mana tingkat bahaya gunung berapi terhadap keselamatan manusia. Dari latar belakang tersebut, muncul gagasan yang membuat "


KOMPONEN

KOMPONEN MASUKAN     : Sensor DS18B20, Sensor DHT21 AM2301.
PEMROSE KOMPONEN     : NodeMCU ESP8266.
KOMPONEN KELUARAN    : Firebase, NodeRed, Buzzer, LED.

Power Point Presentasi ( Unduh Disini )

































Program Alat Pemantau Suhu dan Kelembaban Udara Serta Suhu Tanah Sebagai Peringatan Dini Gunung Meletus Berbasis IoT  Unduh Disini )

/* ================================================ ==================================

Program : Kelompok EK-3B/02
1. Aira Alfario Rizahaqi Surianto NIM 3.32.20.1.02
2. Dhyaa Nanda Puspita NIM 3.32.20.1.09

================================================== ===================================
Proyek Laboratorium Mikrokontroler II
file : B02-Lab-Mikro.ino
Program Alat Pendeteksi Suhu dan Kelembaban Udara serta Suhu Tanah sebagai Peringatan
Dini Gunung Meletus Berbasis IoT
-------------------------------------------------- -----------------------------------
Komponen :
- Node MCU ESP8266
- Sensor Suhu dan Kelembaban Udara DHT 21 AM2301
- Sensor Suhu Tanah DS18B20
- Bel
- LED Berwarna Merah, Kuning, dan Hijau
================================================== =================================== */

/* Daftar Pustaka */
#termasuk <Arduino.h>
#termasuk <FirebaseESP8266.h>
#termasuk <ESP8266WiFi.h>
#sertakan <SPI.h>
#termasuk <Wire.h>
#termasuk <OneWire.h>
#termasuk <DallasTemperature.h>
#termasuk <DHT.h>

/* Bagian DHT */
#menentukan DHTPIN D5
DHT dhtA(DHTPIN, DHT22);

/* Setting Sensor Suhu Tanah */
#tentukan ONE_WIRE_BUS D1
OneWire oneWire(ONE_WIRE_BUS);
DallasSensor suhu(&oneWire);
uint8_t permukaan[8] = { 0x28, 0x20, 0xA5, 0x02, 0x00, 0x00, 0x00, 0x4E }; //Alamat Sensor Suhu Tanah Permukaan
uint8_t limacm[8] = { 0x28, 0xFF, 0x64, 0x1E, 0x84, 0x1E, 0xDD, 0x0D }; //Alamat Sensor Suhu Tanah Kedalaman 5cm
uint8_t sepuluhcm[8] = { 0x28, 0xFF, 0x64, 0x1E, 0x84, 0x0B, 0x1B, 0x09 }; //Alamat Sensor Suhu Tanah Kedalaman 10cm
uint8_t duapuluhcm[8] = { 0x28, 0xFF, 0x64, 0x1E, 0x84, 0x1F, 0x5A, 0xC6 }; //Alamat Sensor Suhu Tanah Kedalaman 20cm
uint8_t limapuluhcm[8] = { 0x28, 0xAD, 0x1C, 0x48, 0xF6, 0x96, 0x3C, 0x81 }; //Alamat Sensor Suhu Tanah Kedalaman 50cm

/* Setting Wi-Fi */
#define WIFI_SSID "Heyhey" //Nama WiFi
#define WIFI_PASSWORD "12345678" //Kata sandi WiFi

/* Akses Firebase */
#define FIREBASE_HOST "project-bmkg-v1-default-rtdb.firebaseio.com" //Alamat firebase
#define FIREBASE_AUTH "d1Ha5vXkFBzYhwFcMdUpqEidsAHFK3hycrBdw2wF" //API Firebase

FirebaseData fbdo;
autentikasi FirebaseAuth;
konfigurasi FirebaseConfig;

batal printResult(FirebaseData &data); //Program untuk mengirim ke Firebase

Jalur string = "/AWSPrototype"; //Alamat Database di Firebase
unsigned long dataMillis = 0;
int jumlah = 0;

/* Pengenalan Peringatan */
const int BZZ = D0, LEDM = D6, LEDK = D7, LEDH = D8; //Pengenalan Indikator di alat

membatalkan penyiapan() {
  Serial.mulai(9600); //Inisiasi komunikasi serial pada baudrate 9600
  Serial.println();
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD); //Menyambungkan NodeMCU ESP8266 dengan Wifi
  Serial.print("Menghubungkan ke WiFi");

  pinMode(DHTPIN, INPUT); //Mengenalkan pin DHT (D5) sebagai masukan
  pinMode(BZZ, OUTPUT); //Mengenalkan pin Buzzer (D0) sebagai luaran
  pinMode(LEDM, OUTPUT); //Mengenalkan pin LED Merah (D6) sebagai luaran
  pinMode(LEDK, KELUARAN); //Mengenalkan pin LED Kuning (D7) sebagai luaran
  pinMode(LEDH, OUTPUT); //Mengenalkan pin LED Hijau (D8) sebagai luaran

  while (WiFi.status() != WL_CONNECTED) { //Inisiasi pengkoneksian wifi
    digitalWrite(LEDM, RENDAH);
    penundaan (1000);
    Serial.print(".");
    digitalWrite(LEDM, TINGGI);
  }
  Serial.println();
  Serial.print("Terhubung ke "); //Menampilkan pada komunikasi serial wifi yang tersambung pada alat
  Serial.println(WIFI_SSID);
  Serial.print("Alamat IP: "); //Menampilkan pada komunikasi serial ip dari ESP8266
  Serial.println(WiFi.localIP());

  config.host = FIREBASE_HOST; //Menyambungkan alamat firebase dengan kunci API firebase
  config.signer.tokens.legacy_token = FIREBASE_AUTH;

  Firebase.sambungkan kembaliWiFi(benar);
  Firebase.begin(&config, &auth);

  /*Inisiasi test Led*/
  digitalWrite(LEDM, TINGGI); //Indikasi ketika alat sudah tersambung dengan internet
  penundaan (333);
  digitalWrite(LEDK, TINGGI);
  penundaan (333);
  digitalWrite(LEDH, TINGGI);
  penundaan (333);
  digitalWrite(LEDM, RENDAH);
  digitalWrite(LEDK, RENDAH);
  digitalWrite(LEDH, RENDAH);

  sensor.begin(); //Memulai pembacaan sensor DS18B20
  dhtA.begin(); //Memulai pembacaan sensor DHT21
}

kekosongan loop() {
  kembali :
  penundaan (1000);
  int i=0;
  float h = dhtA.readHumidity(); //Pembacaan Kelembaban Udara oleh Sensor DHT 21
  float t = dhtA.readTemperature(); //Pembacaan Suhu Udara oleh Sensor DHT 21
  sensors.requestTemperatures(); //Meminta Sensor DS18B20 untuk mengukur suhu
  sensors.setResolution(12); //Pengatur resolusi Sensor DS18B20 ke 12 bit

  /* Mencari Suhu Tanah dengan kedalaman tertentu */
  float temp1 = sensors.getTempC(permukaan);
  float temp2 = sensors.getTempC(limacm);
  float temp3 = sensors.getTempC(sepuluhcm);
  float temp4 = sensors.getTempC(duapuluhcm);
  float temp5 = sensors.getTempC(limapuluhcm);

  /*mengirimkan data ke Firebase */
  Serial.println(".................................................") ;
  Serial.println("Mengirimkan Data :");
  Serial.print("kelembapan: ");
  Serial.println(h);
  Serial.print("suhu: ");
  Serial.println(t);
  Serial.print("suhu permukaan tanah: ");
  Serial.println(temp1);
  Serial.print("suhu 5cm: ");
  Serial.println(temp2);
  Serial.print("suhu 10cm: ");
  Serial.println(temp3);
  Serial.print("suhu 20cm: ");
  Serial.println(temp4);
  Serial.print("suhu 50cm: ");
  Serial.println(temp5);

  /* Logika Kondisi Lapangan */
  if (((temp1 >= 31.0) && (temp1 <= 34.0)) || ((temp2 >= 31.0) && (temp2 <= 34.0)) || ((temp3 >= 31.0) && (temp3 <= 34.0) ) || ((temp4 >= 31.0) && (temp4 <= 34.0)) || ((temp5 >= 31.0) && (temp5 <= 34.0))) {
    digitalWrite(LEDM, RENDAH);
    digitalWrite(LEDK, TINGGI);
    digitalWrite(LEDH, RENDAH);
    digitalWrite(BZZ, RENDAH);
    Serial.println("===KEADAAN WASPADA==="); //Ketika suhu tanah dalam posisi tengah (Waspada) dengan kondisi 31oC <= Suhu Tanah <= 34oC
  } 
  lain jika ((temp1 > 34) || (temp2 > 34) || (temp3 > 34) || (temp4 > 34) || (temp5 > 34)) {
    digitalWrite(LEDM, TINGGI);
    digitalWrite(LEDK, RENDAH);
    digitalWrite(LEDH, RENDAH);
    Serial.println("===KEADAAN SIAGA==="); //Ketika suhu tanah dalam posisi tertinggi (Siaga) dengan kondisi Suhu Tanah > 34oC

    while ((temp1 > 34) || (temp2 > 34) || (temp3 > 34) || (temp4 > 34) || (temp5 > 34)) {
      Serial.println("=== KEADAAN SIAGA BENCANA!! ===");
      do { //Program untuk menyalakan notifikasi Buzzer nyala mati sebanyak 5x
      digitalWrite(BZZ, TINGGI);
      penundaan (500);
      digitalWrite(BZZ, RENDAH);
      penundaan (500);
      saya ++;
    }
    sementara (i<5);
    pergi pengiriman; //Menuju ke pengiriman program
    kebagian kembali; //Menuju ke program kembali
    }
  }
  lain jika ((temp1 < 31.0) || (temp2 < 31.0) || (temp3 < 31.0) || (temp4 < 31.0) || (temp5 < 31.0)) {
    digitalWrite(LEDM, RENDAH);
    digitalWrite(LEDK, RENDAH);
    digitalWrite(LEDH, TINGGI);
    Serial.println("===KEADAAN AMAN==="); //Ketika suhu tanah dalam posisi terrendah (Aman) dengan kondisi Suhu Tanah < 31oC
  }

  kalau tidak {
    Serial.println("ERROR!, CEK ALAT ANDA"); //Ketika nilai suhu tidak terdeteksi, alat dalam keadaan error
    digitalWrite(LEDH, TINGGI);
    digitalWrite(LEDM, RENDAH);
    penundaan (500);
    digitalWrite(LEDM, TINGGI);
    digitalWrite(LEDH, RENDAH);
    penundaan (500);
  }

  pengiriman : //Program pengiriman ke database Firebase yang jika berhasil maka akan dikirim 
  if (Firebase.setFloat(fbdo, path + "/Kelembapan Udara", h)) {
    Serial.println("DATA KELEMBABAN UDARA BERHASIL TERKIRIM");
  }
  if (Firebase.setFloat(fbdo, path + "/Suhu Udara", t)) {
    Serial.println("DATA SUHU UDARA BERHASIL TERKIRIM");
  }
  if (Firebase.setFloat(fbdo, path + "/Suhu Permukaan Tanah", temp1)) {
    Serial.println("DATA SUHU PERMUKAAN BERHASIL TERKIRIM");
  }
  if (Firebase.setFloat(fbdo, path + "/Suhu Tanah 5cm", temp2)) {
    Serial.println("DATA SUHU 5CM BERHASIL TERKIRIM");
  }
  if (Firebase.setFloat(fbdo, path + "/Suhu Tanah 10cm", temp3)) {
    Serial.println("DATA SUHU 10CM BERHASIL TERKIRIM");
  }
  if (Firebase.setFloat(fbdo, path + "/Suhu Tanah 20cm", temp4)) {
    Serial.println("DATA SUHU 20CM BERHASIL TERKIRIM");
  }
  if (Firebase.setFloat(fbdo, path + "/Suhu Tanah 50cm", temp5)) {
    Serial.println("DATA SUHU 50CM BERHASIL TERKIRIM");
  } kalau tidak {
    Serial.println("MAAF DATA TIDAK TERKIRIM");
    Serial.println("ALASAN: " + fbdo.errorReason());
    Serial.println(".................................................");
    Serial.println();
  }
}

Video Proyek (Klik Disini)





Komentar