#define BLYNK_TEMPLATE_ID "TMPL6p6NnxZhn"
#define BLYNK_TEMPLATE_NAME "tot2"
#define BLYNK_AUTH_TOKEN "UkQP6WaXZtOF4Xkj3n04dJx0befnYyZr"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "DHTesp.h"
const int DHT_PIN = 15;
const int relay_PIN = 2;
const int gas_PIN = 25;
const int LDR_PIN = 32;
const float GAMMA = 0.7;
const float RL10 = 50;
DHTesp dhtSensor;
int suhu;
int kelembaban;
float gas;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
void myTimerEvent(){
TempAndHumidity data = dhtSensor.getTempAndHumidity();
suhu=data.temperature;
kelembaban=data.humidity;
Blynk.virtualWrite(V0, suhu);
Blynk.virtualWrite(V1, kelembaban);
Serial.println("Temperature : " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
//Serial.println("---");
int mq2Value = analogRead(gas_PIN);
Serial.print("Gas sensor value: "); Serial.print(mq2Value);
//Blynk.virtualWrite(V2, mq2Value);
if (mq2Value<3000) {
Blynk.virtualWrite(V2, "SAFE");
Serial.println(" > Smoke: SAFE!");
} else {
Blynk.virtualWrite(V2, "DETECTED!");
Serial.println(" > Smoke: DETECTED!");
tone(12,200);
delay(1000);
}
// int mq2Value = digitalRead(gas_PIN);
// Serial.print("Digital Gas Sensor Value: "); Serial.print(mq2Value);
// if (mq2Value==HIGH) {
// Blynk.virtualWrite(V5, "SAFE");
// Serial.println(" | Smoke: -");
// } else {
// Blynk.virtualWrite(V5, "DETECTED");
// Serial.println(" | Smoke: Detected!");
// }
int nilaiADC = analogRead(LDR_PIN);
float voltage = nilaiADC * 5/4095.0;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
Blynk.virtualWrite(V6, lux);
Serial.print("Intensitas : " + String(lux) + " lux");
if(lux>50){
Blynk.virtualWrite(V6, "LIGHT!");
Serial.println(" > LIGHT!");
}else {
Blynk.virtualWrite(V6, "DARK");
Serial.println(" > DARK");
}
}
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(relay_PIN, OUTPUT);
digitalWrite(relay_PIN, LOW); // Relay OFF
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(1000L, myTimerEvent);
Serial.println("Sistem Monitoring Ruangan Kelas - Berbasis IoT");
}
void loop() {
Blynk.run();
timer.run(); // Initiates BlynkTimer
//sensorMQ2();
}
void sensorDHT22(){
}
void buzzerOut(){
}
void sensorMQ2(){
int gasValue = analogRead(gas_PIN);
Blynk.virtualWrite(V2, gas);
Serial.println("Gas (PPM): " + String(gas_PIN) + "PPM");
Serial.println("---");
delay(1000); // Jeda 1 detik antar pembacaan
}
void sensorLDR(){
}
void tampilanOLED(){
}
void relayOut(){
}
BLYNK_WRITE(V4) {
int relayState = param.asInt(); // 1 = ON, 0 = OFF
digitalWrite(relay_PIN, relayState);
}