// Nama : EKI ZHEN MUTTAQIN
// NIM : 2102020127
// Kelas : A4
// ALARM PENDETEKSI KETINGGIAN AIR
// project IoT menggunakan ESP32 dan sensor HC-SR04 Ultrasonic
//define variabel
#define trigerPin 12
#define echoPin 13
#define ledPin 14
#define speakerPin 15
#define pitch 262
#define CM_TO_INCH 0.393701
long duration;
int distance;
float distanceInch;
// Define latitude, longitude, elevation, status
float latitude = -6.200000;
float longitude = 106.816666;
float elevation = 10.0;
String status = "AMAN";
//menghubungkan ke wifi
#include <WiFi.h>
const char* ssid = "Wokwi-GUEST";
const char* pass = "";
WiFiClient alfa;
//memakai library thingspeak
#include <ThingSpeak.h>
unsigned long ChannelID = 2589088;
const char * WriteAPI = "LKYLR1PXMNGVKIG5";
void setup() {
//setup untuk sensor
Serial.begin(115200);
pinMode(trigerPin, OUTPUT);
pinMode(echoPin, INPUT);
//setup untuk led
pinMode(ledPin, OUTPUT);
//setup untuk speaker
pinMode(speakerPin, OUTPUT);
//scan WiFi
Serial.println("Scan WiFi...");
int networks = WiFi.scanNetworks();
if (networks == 0) {
Serial.println("No WiFi Networks!");
} else {
Serial.print(networks);
Serial.println("Networks Found!");
for (int i = 0; i < networks; i++)
Serial.println(WiFi.SSID(i));
delay(10);
}
//menyambungkan ke wifi
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println("WiFi Connected!");
Serial.println(WiFi.localIP());
//memulai program thingspeak
ThingSpeak.begin(alfa);
}
void loop() {
//looping sensor (membuat sensor wave)
digitalWrite(trigerPin, LOW);
delayMicroseconds(2);
digitalWrite(trigerPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigerPin, LOW);
//membuat durasi
duration = pulseIn(echoPin, HIGH);
//mengkalkulasi jarak
distance = round((duration / 2) * 0.0343);
// Convert to inches (jika masih diperlukan, tetap gunakan float)
distanceInch = distance * CM_TO_INCH;
// Consider max water level height = 50 cm
if (distance > 50 ) {
digitalWrite(ledPin, HIGH);
tone(speakerPin, pitch);
delay(1000);
noTone(speakerPin);
digitalWrite(ledPin, LOW);
delay(100);
status = "WARNING!";
} else {
digitalWrite(ledPin, LOW);
noTone(speakerPin);
status = "AMAN";
}
// Update ThingSpeak fields
ThingSpeak.setField(1, distance);
ThingSpeak.setField(2, latitude);
ThingSpeak.setField(3, longitude);
ThingSpeak.setField(4, elevation);
ThingSpeak.setField(5, status);
// Write data to ThingSpeak
int x = ThingSpeak.writeFields(ChannelID, WriteAPI);
//menampilkan data
Serial.print("Ketinggian Air (cm): ");
Serial.println(50 - distance);
Serial.print("Status: ");
Serial.println(status);
delay(2000);
}