// Shaiful Danish Bin Shaiful Razmiza, 52224122335.
// Include necessary libraries
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <PubSubClient.h> // MQTT library
// Blynk credentials
#define BLYNK_TEMPLATE_ID "TMPL6DQyQJdru"
#define BLYNK_TEMPLATE_NAME "ps3"
#define BLYNK_AUTH_TOKEN "mNZCOLlq3UvZIBXDzy8_VCXCEAqaqgtc"
// Wi-Fi credentials
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST"; // Wi-Fi SSID
char pass[] = ""; // Wi-Fi Password
// MQTT Broker settings
const char* mqtt_server = "broker.hivemq.com"; // Public MQTT broker
const int mqtt_port = 1883;
const char* mqtt_topic = "esp32/ldrStatus";
// Pin Definitions
const int ledPin = 5; // Green LED
const int buzzerPin = 8; // Buzzer
const int ldrSensor = 42; // LDR pin
WiFiClient espClient; // Wi-Fi client
PubSubClient client(espClient); // MQTT client
void setup() {
Serial.begin(9600);
// Initialize Wi-Fi and Blynk
WiFi.begin(ssid, pass);
Blynk.begin(auth, ssid, pass);
// MQTT setup
client.setServer(mqtt_server, mqtt_port);
reconnectMQTT();
// Pin setup
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ldrSensor, INPUT);
}
void loop() {
// Blynk and MQTT tasks
Blynk.run();
if (!client.connected()) {
reconnectMQTT();
}
client.loop();
// LDR Sensor Reading
int ldrValue = analogRead(ldrSensor);
Serial.print("LDR Value: ");
Serial.println(ldrValue);
// Publish LDR value to MQTT topic
char ldrValueString[10];
itoa(ldrValue, ldrValueString, 10);
client.publish(mqtt_topic, ldrValueString);
// Control Green LED based on LDR Value
if (ldrValue > 150) {
digitalWrite(ledPin, HIGH); // Turn on Green LED
tone(buzzerPin, 500);
} else {
digitalWrite(ledPin, LOW); // Turn off Green LED
noTone(buzzerPin);
}
delay(1000);
}
// Reconnect to MQTT Broker
void reconnectMQTT() {
while (!client.connected()) {
Serial.println("Connecting to MQTT...");
if (client.connect("ESP32_Client")) {
Serial.println("Connected to MQTT Broker!");
} else {
Serial.print("Failed with error code: ");
Serial.print(client.state());
delay(2000);
}
}
}