#include <WiFi.h>
#include <HTTPClient.h>
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* server = "api.thingspeak.com";
const char* apiKey = "FE1DK2U91FW75GOI";
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int redPin = 15;
const int greenPin = 2;
const int bluePin = 17;
const int pirPin = 5;
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Buzzer pin
const int buzzerPin = 13;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
dht.begin();
pinMode(pirPin, INPUT);
lcd.init();
lcd.backlight();
// Initialize LED and buzzer pins
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print("°C ");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println("%");
if (temperature > 50 || humidity > 64) {
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
digitalWrite(buzzerPin, HIGH);
} else if (temperature > 25 && temperature <= 50 && humidity < 64) {
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, LOW);
digitalWrite(buzzerPin, LOW);
} else if (temperature > 5 && temperature <= 25 && humidity < 64) {
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, HIGH);
digitalWrite(buzzerPin, LOW);
} else {
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
digitalWrite(buzzerPin, LOW);
}
int motionDetected = digitalRead(pirPin);
if (motionDetected) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Unauth. entry");
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
digitalWrite(redPin, HIGH);
digitalWrite(buzzerPin, HIGH);
}
else {
lcd.clear();
}
// Send data to ThingSpeak
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url = "http://";
url += server;
url += "/update?api_key=";
url += apiKey;
url += "&field1=";
url += String(temperature);
url += "&field2=";
url += String(humidity);
http.begin(url);
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
} else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
http.end();
}
delay(2000);
}