#include "WiFi.h"
#include "ThingSpeak.h"
const int TRIG1 = 12; //Pin Trigger sensor 1
const int ECHO1 = 14; //Pin Echo sensor 1
const int TRIG2 = 25; //Pin Trigger sensor 2
const int ECHO2 = 33; //Pin Echo sensor 2
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2776135;
const char* myApiKey = "TMRPCFCP1H0T2FSL";
WiFiClient client; //Objek untuk komunikasi WiFi
void setup() {
Serial.begin(115200); //Komunikasi serial dengan baud rate 115200
//Konfigurasi pin untuk sensor ultrasonik
pinMode(TRIG1, OUTPUT); //Pin Trigger sensor 1 sebagai OUTPUT
pinMode(ECHO1, INPUT); //Pin Echo sensor 1 sebagai INPUT
pinMode(TRIG2, OUTPUT); //Pin Trigger sensor 2 sebagai OUTPUT
pinMode(ECHO2, INPUT); //Pin Echo sensor 2 sebagai INPUT
// Koneksi ke WiFi
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi not connected");
}
Serial.println("WiFi connected!");
Serial.println("Local IP: " + String(WiFi.localIP())); // Tampilkan IP lokal ESP32
WiFi.mode(WIFI_STA); // Set WiFi mode ke station
// Inisialisasi ThingSpeak
ThingSpeak.begin(client);
}
void loop() {
//Membaca data keting---gian air dari sensor 1 dan sensor 2
float waterLevel1 = getWaterLevel(TRIG1, ECHO1);
float waterLevel2 = getWaterLevel(TRIG2, ECHO2);
//Kirim data ke ThingSpeak pada channel field
ThingSpeak.setField(1, waterLevel1);
ThingSpeak.setField(2, waterLevel2);
//Kirim data ke server ThingSpeak
int response = ThingSpeak.writeFields(myChannelNumber, myApiKey);
//Tampilkan data pada serial monitor
Serial.println("Ketinggian Air Sensor 1: " + String(waterLevel1) + " cm");
Serial.println("Ketinggian Air Sensor 2: " + String(waterLevel2) + " cm");
if (response == 200) {
Serial.println("Data pushed successfully");
} else {
Serial.println("Push error " + String(response));
}
Serial.println("---");
delay(15000);
}
float getWaterLevel(int trigPin, int echoPin) {
// Mengirimkan pulsa ultrasonik
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
//Membaca pantulan gelombang ultrasonik
long duration = pulseIn(echoPin, HIGH); //Mengukur durasi gelombang ultrasonik
float distance = (duration * 0.034) / 2; //Hitung jarak dalam cm
return distance; //Kembalikan nilai jarak
}