Telemetri Deteksi Temperatur Pada Ruang Combustion Chamber PT. Indonesia Power
Dosen Pengampu:
Aminuddin R
Disusun Oleh:
Khaerul Umam (3.32.20.2.12)
Rafif Naufal Nugroho (3.32.20.2.19)
Kelas EK-3C
D3-TEKNIK ELEKTRONIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
LATAR BELAKANG
Kenaikan Temperatur Udara pada Area Combuster Camber dapat Membahayakan SDM dan menggangu Kinerja Alat Instrumen pendukung. Tekanan panas berlebih di tubuh baik akibat proses metabolisme tubuh maupun paparan panas dari lingkungan kerja dapat menimbukan masalah kesehatan dari yang ringan seperti heat rash, heat syncope, heat cramps, heat exhaustion, transient heat fatigue hingga yang serius yaitu fainting dan heat stroke. Tujuan dibuatnya alat ini adalah untuk mempermudah pemantauan ruang combustion chamber dan memberikan informasi secara real time serta dapat dipantau dengan smartphone secara mudah.
KOMPONEN YANG DIGUNAKAN
Komponen Masukan: Sensor Suhu DS18B20
Komponen Pemroses: ESP32
Komponen Keluaran: LED dan Buzzer
Telemetri: IFTT, Google Sheet, firebase dan MIT APP Inventor
CARA KERJA
Gambaran secara umum, system ini menggunakan sensor ds18b20 berjumlah 3 sebagai media untuk mendeteksi terjadinya temperature high pada ruang combustion. System diaktifkan menggunakan sumber 5v, pada awal system akan menghidupkan LCD, ds18b20 dan ESP32. Kemudian ESP32 akan terkoneksi dengan internet melalui Wifi yang sudah diatur, Selanjutnya hasil pembacaan sensor ds18b20 akan di proses kemudian dikirimkan datanya melalui ifttt yang nantinya akan dikirimkan ke spreadtsheet, dan mengirimkan data fire base untuk dilanjutkan ke MIT APP dan lcd monitor. Dengan menggunakan spreadsheet system ini bisa menghasilkan data logger secara realtime yang dapat diakses oleh penggunanya. Lain halnya dengan spreadsheet, firebase digunakan untuk mengirimkan data kepada MIT APP untuk memantau suhu dengan menggunakan smartphone dan memberikan alarm pada smartphone apabila terjadi suhu dalam keadaan high temperature. Jika suhu lebih dari 80 C makan led warna biru dan buzzer menyala dan jika suhu kurang dari 80 C led hijau menyala dan buzzer mati serta indicator value pada App menyesuaikan suhu juga, hijau=aman//merah=bahaya.
POWER POINT PRESENTASI LINK
#include <Wire.h> //library I2C
#include <LiquidCrystal_I2C.h> //library LCD
#include <HTTPClient.h> //library htttpclient
#define ONE_WIRE_BUS 13 //penempatan input sensor ds18b20
#define FIREBASE_HOST "h/" //host firebase
#define WIFI_SSID "" //wifi yang digunakan
#define WIFI_PASSWORD "a" // kata sandi wifi
OneWire oneWire(ONE_WIRE_BUS); //deklarasi OneWire
DallasTemperature sensor(&oneWire); //deklarasi sensor ds18b20
LiquidCrystal_I2C lcd(0x27,20,4); //deklarasi lcd 20x4
String server = ""; // alamat web ifttt
String eventName = ""; // nama file spreadsheet
String IFTTTUrl=""; //alamat ifttt yang akan diakses
//pendeklarasian input
int value1;
int value2;
int value3;
int hijau = 12;
int merah = 14;
int buzzer = 27;
int datasensor;
int hightemp = 60;
int lcd1,lcd2,lcd3;
//alamat sensor ds18b20
uint8_t sensor1[8] = { 0x28, 0x1C, 0x2A, 0x49, 0xF6, 0x96, 0x3C, 0x26 };
uint8_t sensor2[8] = { 0x28, 0xE5, 0x56, 0x96, 0xF0, 0x01, 0x3C, 0x69 };
uint8_t sensor3[8] = { 0x28, 0x47, 0x10, 0x96, 0xF0, 0x01, 0x3C, 0x2E };
void setup() {
Serial.begin(115200);//serial monitor
Wire.begin();
sensor.begin();
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("connecting");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);}
Serial.println();
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println("Viola, Connected !!!");
Serial.println();
pinMode (hijau,OUTPUT);
pinMode (merah,OUTPUT);
pinMode (buzzer,OUTPUT);
lcd.begin(20,4);
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(" TELEMETRI DETEKSI ");
lcd.setCursor(0,1);
lcd.print(" TEMPERATUR PADA ");
lcd.setCursor(0,2);
lcd.print(" RUANG COMBUSTION ");
lcd.setCursor(0,3);
lcd.print("PLTGU TANJUNG PRIOK");
delay(5000);
lcd.clear();
lcd.setCursor(0,1);
lcd.print(" DIBUAT OLEH ");
lcd.setCursor(0,2);
lcd.print(" ------ ---- ");
delay(5000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" KHAERUL UMAM (12) ");
lcd.setCursor(0,1);
lcd.print("RAFIF NAUFAL N. (19)");
lcd.setCursor(0,2);
lcd.print("-TEKNIK ELEKTRONIKA-");
lcd.setCursor(0,3);
lcd.print(" ------ ----------- ");
delay(5000);
lcd.clear();}
void loop() {
Bacasensor();
FireBase();
LCD();
kirim_data();
indikator_sensor1();}
=========================================================================
void Bacasensor(){
sensor.requestTemperatures();
value1 = sensor.getTempCByIndex(0);
value2 = sensor.getTempCByIndex(1);
value3 = sensor.getTempCByIndex(2);
lcd1 = sensor.getTempCByIndex(0);
lcd2 = sensor.getTempCByIndex(1);
lcd3 = sensor.getTempCByIndex(2);
delay(50);}
=========================================================================
void FireBase(){
if (isnan(value1) || isnan(value2) || isnan(value3)) {
Serial.println("Gagal membaca sensor DS18b20");
return;}
// Memberikan status suhu dan kelembaban kepada firebase
if (Firebase.setFloat(firebaseData, "/Hasil_Pembacaan/suhu1", value1)){
Serial.println("Suhu terkirim");}
else{Serial.println("Suhu tidak terkirim");
Serial.println("Karena: " + firebaseData.errorReason());}
if (Firebase.setFloat(firebaseData, "/Hasil_Pembacaan/suhu2", value2)){
Serial.println("Suhu terkirim");}
else{Serial.println("Suhu tidak terkirim");
Serial.println("Karena: " + firebaseData.errorReason());}
if (Firebase.setFloat(firebaseData, "/Hasil_Pembacaan/suhu3", value3)){
Serial.println("Suhu terkirim");}
else{Serial.println("Suhu tidak terkirim");
Serial.println("Karena: " + firebaseData.errorReason());}
// Menampilkan suhu dan kelembaban pada serial monitor
Serial.print("Temperatures: ");
Serial.print(value1);
Serial.println(" C");
Serial.print(value2);
Serial.println(" C");
Serial.print(value3);
Serial.println(" C");
}
=========================================================================
void LCD()
{
lcd.clear();
lcd.setCursor (0,1);
lcd.print ("T1:");
lcd.print(lcd1);
lcd.setCursor (5,1);
lcd.print (" C");
lcd.setCursor (13,1);
lcd.print ("T2:");
lcd.print(lcd2);
lcd.setCursor (18,1);
lcd.print (" C");
lcd.setCursor (6,2);
lcd.print ("T3:");
lcd.print(lcd3);
lcd.setCursor (11,2);
lcd.print (" C");
lcd.setCursor (0,0);
lcd.print ("-----TEMPERATUR-----");
lcd.setCursor (0,3);
lcd.print ("-----COMBUSTION-----");
delay (500);
}
=========================================================================
void indikator_sensor1(){
if((value1<hightemp)&&(value2<hightemp)&&(value3<hightemp)){
digitalWrite(merah,LOW);
digitalWrite(hijau,HIGH);
digitalWrite(buzzer,LOW);}
else if((value1>=hightemp)&&(value2<hightemp)&&(value3<hightemp)){
digitalWrite(merah,HIGH);
digitalWrite(hijau,LOW);
digitalWrite(buzzer,HIGH);}
else if((value2>=hightemp)&&(value1<hightemp)&&(value3<hightemp)){
digitalWrite(merah,HIGH);
digitalWrite(hijau,LOW);
digitalWrite(buzzer,HIGH);}
else if((value3>=hightemp)&&(value2<hightemp)&&(value1<hightemp)){
digitalWrite(merah,HIGH);
digitalWrite(hijau,LOW);
digitalWrite(buzzer,HIGH);}
}
=========================================================================
void kirim_data(){
sendDataToSheet();
delay(5000);}
void sendDataToSheet(void){
String url = server + "/trigger/" + eventName + "/with/key/" + IFTTT_Key + "?value1=" + String((int)value1) + "&value2="+String((int)value2) +"&value3=" + String((int)value3) ;
Serial.println(url);
HTTPClient http;
Serial.print("[HTTP] begin...\n");
http.begin(url);
Serial.print("[HTTP] GET...\n");
int httpCode = http.GET();
if(httpCode > 0) {Serial.printf("[HTTP] GET... code: %d\n", httpCode);
if(httpCode == HTTP_CODE_OK) {String payload = http.getString();
Serial.println(payload);}}
else {Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());}
http.end();}
=========================================================================
Komentar
Posting Komentar