// UAS_SYAFA FELISA_2241170054
#include <WiFi.h>
#include <ThingSpeak.h>
#include "DHT.h"
// Konfigurasi WiFi
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
// Konfigurasi ThingSpeak
WiFiClient client;
unsigned long myChannelNumber = 2786072;
const char* myWriteAPIKey = "PU4CSU33C7698L8E";
// Konfigurasi DHT22
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Konfigurasi HC-SR04
#define TRIG_PIN_1 23
#define ECHO_PIN_1 22
#define TRIG_PIN_2 19
#define ECHO_PIN_2 18
// Fungsi untuk mengukur jarak menggunakan HC-SR04
float measureDistance(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.0343) / 2; // Konversi ke cm
return distance;
}
// Fungsi untuk menghubungkan ke WiFi
void connectToWiFi() {
Serial.print("Menghubungkan ke WiFi");
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nWiFi Terhubung!");
}
void setup() {
// Inisialisasi Serial Monitor
Serial.begin(115200);
// Inisialisasi sensor
dht.begin();
pinMode(TRIG_PIN_1, OUTPUT);
pinMode(ECHO_PIN_1, INPUT);
pinMode(TRIG_PIN_2, OUTPUT);
pinMode(ECHO_PIN_2, INPUT);
// Hubungkan ke WiFi
connectToWiFi();
// Inisialisasi ThingSpeak
ThingSpeak.begin(client);
}
void loop() {
// Baca data dari DHT22
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Validasi data DHT22
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Gagal membaca data dari sensor DHT22");
return;
}
// Baca data dari HC-SR04
float distance1 = measureDistance(TRIG_PIN_1, ECHO_PIN_1);
float distance2 = measureDistance(TRIG_PIN_2, ECHO_PIN_2);
// Simulasi perbedaan jarak (contoh: tambahkan offset pada Sensor 2)
distance2 += 10.0; // Misalnya, jarak Sensor 2 lebih jauh 10 cm
// Cetak data sensor ke Serial Monitor
Serial.println("\nData Sensor:");
Serial.printf("Suhu: %.2f°C\n", temperature);
Serial.printf("Kelembaban: %.2f%%\n", humidity);
Serial.printf("Ketinggian Air (Sensor 1): %.2f cm\n", distance1);
Serial.printf("Ketinggian Air (Sensor 2): %.2f cm\n", distance2);
// Kirim data ke ThingSpeak
ThingSpeak.setField(1, temperature);
ThingSpeak.setField(2, humidity);
ThingSpeak.setField(3, distance1);
ThingSpeak.setField(4, distance2);
int httpResponseCode = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (httpResponseCode == 200) {
Serial.println("Data berhasil dikirim ke ThingSpeak!");
} else {
Serial.printf("Gagal mengirim data, kode error: %d\n", httpResponseCode);
}
// Tunggu 20 detik sebelum pengukuran berikutnya
delay(20000);
}