//Dianisa T_3F_D4TE
//Librari yang digunakan
#include <WiFi.h>
#include "ThingSpeak.h"
#include "DHT.h"
// Konfigurasi WiFi
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2789149; // Nomor ID channel
const char* myApiKey = "RHGE2Q577HD0P7C4"; // Write API Key
// Konfigurasi Pin Sensor Ultrasonik
#define TRIG1 18
#define ECHO1 19
#define TRIG2 21
#define ECHO2 22
// Konfigurasi Pin dan Tipe Sensor DHT
#define DHTPIN 4 // Pin data DHT22
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;
void setup() {
Serial.begin(115200);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
// Menunggu koneksi WiFi
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi belum terhubung");
}
Serial.println("WiFi Tersambung!");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
// Konfigurasi Pin Sensor Ultrasonik
pinMode(TRIG1, OUTPUT);
pinMode(ECHO1, INPUT);
pinMode(TRIG2, OUTPUT);
pinMode(ECHO2, INPUT);
// Inisialisasi DHT
dht.begin();
}
void loop() {
// Membaca ketinggian air dari sensor 1
float tinggi1 = bacaKetinggian(TRIG1, ECHO1);
// Membaca ketinggian air dari sensor 2
float tinggi2 = bacaKetinggian(TRIG2, ECHO2);
// Membaca temperatur dan kelembaban dari DHT22
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Mengirim data ke ThingSpeak
ThingSpeak.setField(1, tinggi1);
ThingSpeak.setField(2, tinggi2);
ThingSpeak.setField(3, temperature);
ThingSpeak.setField(4, humidity);
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
// Menampilkan data di Serial Monitor
Serial.println("Tinggi Air Titik 1: " + String(tinggi1) + " cm");
Serial.println("Tinggi Air Titik 2: " + String(tinggi2) + " cm");
Serial.println("Temperatur: " + String(temperature) + " °C");
Serial.println("Kelembaban: " + String(humidity) + " %");
if (x == 200) {
Serial.println("Data Terkirim");
} else {
Serial.println("Gagal Mengirim Data, kode error: " + String(x));
}
Serial.println("---");
delay(15000); // Kirim data setiap 15 detik
}
// Fungsi untuk membaca jarak dari sensor ultrasonik
float bacaKetinggian(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = duration * 0.034 / 2; // Mengonversi waktu ke jarak dalam cm
return distance;
}