#define BLYNK_PRINT Serial
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "DHTesp.h"
int relaypin = 26;
int lightSensorPin = 36;
int buzzerPin = 18;
int ledPin = 5;
char auth[] = "XlT19o6qkXOFQ4pKTm7s-w5NchDmVQE_";
char pass[] = "";
char ssid[] = "Wokwi-GUEST";
char domain[] = "iot.amikom.ac.id";
const int DHT_PIN = 15;
const float GAMMA = 0.7;
const float RL10 = 50;
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(relaypin, OUTPUT);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
Blynk.begin(auth, ssid, pass, domain, 8080);
lcd.init();
lcd.backlight();
}
void loop() {
int analogValue = analogRead(lightSensorPin);
float voltage = analogValue * 5 / 4095.0;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
Serial.print("Lux: ");
Serial.println(lux);
Blynk.virtualWrite(V0, lux);
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float temperature = data.temperature;
if (temperature > 32 && lux > 100) {
lcd.setCursor(0, 0);
lcd.print("BAHAYA API!!!");
lcd.setCursor(0, 1);
lcd.print("Air Menyala");
digitalWrite(ledPin, HIGH);
digitalWrite(relaypin, HIGH);
tone(buzzerPin, 165);
} else {
lcd.setCursor(0, 0);
lcd.print("AMAN");
lcd.setCursor(0, 1);
lcd.print("TIDAK ADA API");
digitalWrite(ledPin, LOW);
digitalWrite(relaypin, LOW);
noTone(buzzerPin);
}
Serial.println("Temp: " + String(temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
Blynk.virtualWrite(V1, temperature);
Blynk.virtualWrite(V2, data.humidity);
lcd.setCursor(0, 0);
lcd.print("Temp: " + String(temperature, 2) + " C");
lcd.setCursor(0, 1);
lcd.print("Humi: " + String(data.humidity, 1) + " %");
delay(1000);
lcd.clear();
}