#include <WiFi.h>
#include <DHT.h>
#include <ESP32Servo.h>
#include <HTTPClient.h>
#define DHTPIN 15
#define DHTTYPE DHT22
#define MQ2PIN 32
#define RELAYPIN 13
#define SERVOPIN 16
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// ThingSpeak settings
const char* server = "https://api.thingspeak.com/update?api_key=55CTGUZTCLJ4HROK&field1=";
const char* apiKey = "N1PWR2SNEQP1VGR9"; // Ganti dengan API Key Anda
DHT dhtku(DHTPIN, DHTTYPE);
Servo servoku;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected to WiFi");
dhtku.begin();
pinMode(MQ2PIN, INPUT);
pinMode(RELAYPIN, OUTPUT);
digitalWrite(RELAYPIN, LOW);
// Inisialisasi servo
servoku.attach(16);
servoku.write(0); // Servo di posisi awal (0 derajat)
}
void loop() {
// Membaca data dari sensor
float temperature = dhtku.readTemperature();
float gasValue = analogRead(32);
// Menampilkan data di Serial Monitor
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Gas Value: ");
Serial.println(gasValue);
// Logika kontrol kipas
if (temperature > 30 || gasValue > 300) {
digitalWrite(RELAYPIN, HIGH); // Aktifkan kipas
servoku.write(90); // Gerakkan servo ke posisi 90 derajat
Serial.println("Fan ON, Servo at 90 degrees");
} else {
digitalWrite(RELAYPIN, LOW); // Matikan kipas
servoku.write(0); // Kembalikan servo ke posisi 0 derajat
Serial.println("Fan OFF, Servo at 0 degrees");
}
// Mengirim data ke ThingSpeak
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url = String(server) + "?api_key=" + apiKey + "&field1=" + String(temperature) + "&field2=" + String(gasValue);
http.begin(url);
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
Serial.print("Data sent to ThingSpeak. HTTP Response Code: ");
Serial.println(httpResponseCode);
} else {
Serial.print("Error sending data. HTTP Response Code: ");
Serial.println(httpResponseCode);
}
http.end();
} else {
Serial.println("WiFi not connected, skipping ThingSpeak update.");
}
delay(2000); // Delay 2 detik
}