#define BLYNK_TEMPLATE_ID "TMPL6FTViaIbM"
#define BLYNK_TEMPLATE_NAME "First Impression"
#define BLYNK_AUTH_TOKEN "JVikINZqPvEJ_WVEXadvwIzDgvPzQu6E"
#include<Arduino.h>
#include<WiFi.h>
#include<WiFiClient.h>
#include<BlynkSimpleEsp32.h>
#include<DHT.h>
#define AUTH BLYNK_AUTH_TOKEN
#define WIFI_AP "Wokwi-GUEST"
#define WIFI_PASS ""
#define DHT22PIN 25
#define BUZZERPIN 4
#define MQ135PIN 33
#define LEDG 27
#define LEDR 26
float temperature, humidity, ppm;
bool high_ppm = 0;
DHT dht22(DHT22PIN, DHT22);
void setup() {
Serial.begin(115200);
Serial.println("IoT Project");
pinMode(BUZZERPIN, OUTPUT);
pinMode(MQ135PIN, INPUT);
dht22.begin();
Blynk.begin(AUTH, WIFI_AP, WIFI_PASS);
}
void loop(){
Blynk.run();
//baca data dari sensor
temperature = dht22.readTemperature();
humidity = dht22.readHumidity();
ppm = analogRead(MQ135PIN);
ppm = ppm * 0.24; //kalibrasi mq-135
//nulis data ke serial
Serial.print("Suhu : ");
Serial.println(temperature);
Serial.print("Kelembapan : ");
Serial.println(humidity);
Serial.print("PPM : ");
Serial.println(ppm);
Serial.println("========");
//kalo ppm nya tinggi, notif ke hp, buzzer nyala
if(ppm > 800){
high_ppm = 1;
analogWrite(BUZZERPIN, 500);
Blynk.logEvent("high_ppm");
}else if(ppm < 780 && high_ppm){
analogWrite(BUZZERPIN, 0);
}
//kalo ppm nya tinggi, notif ke hp, lampu nyala
if(temperature > 35){
digitalWrite(LEDR, 1);
digitalWrite(LEDG, 0);
Blynk.logEvent("high_temperature");
}else{
digitalWrite(LEDR, 0);
digitalWrite(LEDG, 1);
}
//ngirim data ke Blynk
Blynk.virtualWrite(V0, temperature);
Blynk.virtualWrite(V1, humidity);
Blynk.virtualWrite(V2, ppm);
//delay karena ga semua komponen bisa kerja cepat
delay(2000);
}