#include <WiFi.h>
#include <FirebaseESP32.h>
#include "DHT.h"
FirebaseData firebaseData;
FirebaseAuth auth;
FirebaseConfig config;
// Definisi untuk Firebase
#define FIREBASE_HOST "https://aq-farm-default-rtdb.asia-southeast1.firebasedatabase.app/" // ganti dengan URL Firebase Anda
#define FIREBASE_API_KEY "ghRa1JW2FfgQeY8RYnHZBSYj1mJmqr9e45liJYa9" // ganti dengan Secret Firebase
// Definisi untuk WiFi
const char* ssid = "Wokwi-GUEST"; // ganti dengan SSID WiFi Anda
const char* password = ""; // ganti dengan password WiFi Anda
// Definisi untuk sensor DHT22
#define DHTPIN 18 // Pin untuk DHT22
#define DHTTYPE DHT22 // Tipe sensor DHT
DHT dht(DHTPIN, DHTTYPE);
// Definisi untuk sensor Ultrasonik (HC-SR04)
const int trigPin = 14; // Pin trig untuk Ultrasonik
const int echoPin = 13; // Pin echo untuk Ultrasonik
void setup() {
Serial.begin(115200);
// Setup sensor DHT22
dht.begin();
// Setup sensor Ultrasonik
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Koneksi ke WiFi
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi..");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to WiFi");
// Konfigurasi Firebase
config.host = FIREBASE_HOST;
config.api_key = FIREBASE_API_KEY;
// Mulai Firebase dengan konfigurasi dan autentikasi (auth bisa dikosongkan jika tidak perlu)
Firebase.begin(&config, &auth);
// Opsional: Set timeouts, reconnect, dll.
Firebase.reconnectWiFi(true);
}
void loop() {
// Baca data dari sensor DHT22 (suhu dan kelembaban)
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Baca data dari sensor Ultrasonik (jarak)
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2; // Hitung jarak dalam cm
// Kirim data ke Firebase
if (Firebase.setFloat(firebaseData, "/sensor/temperature", temperature)) {
Serial.println("Temperature data sent.");
} else {
Serial.println("Failed to send temperature data.");
Serial.println(firebaseData.errorReason());
}
if (Firebase.setFloat(firebaseData, "/sensor/distance", distance)) {
Serial.println("Distance data sent.");
} else {
Serial.println("Failed to send distance data.");
Serial.println(firebaseData.errorReason());
}
// Tunda sebelum mengulangi loop
delay(2000);
}