#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include "ThingSpeak.h"
LiquidCrystal_I2C LCD(0x27, 16, 2);
// Define DHT sensor pin and type
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// WiFi credentials
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// ThingSpeak settings
const unsigned long myChannelNumber = 2537020;
const char* myApiKey = "FVBXKY9XGO8SK3IQ";
const char* server = "api.thingspeak.com";
// Initialize WiFi client
WiFiClient client;
void setup() {
// Start serial communication
Serial.begin(115200);
// Initialize DHT sensor
dht.begin();
// Initialize LCD
LCD.init();
LCD.backlight();
// Set pin mode for LED
pinMode(2, OUTPUT);
// Connect to WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi not connected");
}
Serial.println("WiFi connected!");
Serial.println("Local IP: " + String(WiFi.localIP()));
// Initialize ThingSpeak
ThingSpeak.begin(client);
}
void loop() {
// Read temperature and humidity from DHT sensor
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Display values on LCD
LCD.setCursor(0, 0);
LCD.print("Temp: ");
LCD.print(temperature);
LCD.print(" C");
LCD.setCursor(0, 1);
LCD.print("Hum: ");
LCD.print(humidity);
LCD.print(" %");
// Print values to Serial Monitor
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" C, ");
Serial.print("Humidity: ");
Serial.println(humidity);
// Control LED based on temperature and humidity
if (temperature > 30.0 && humidity <= 85.0) {
digitalWrite(2, HIGH);
} else {
digitalWrite(2, LOW);
}
// Send data to ThingSpeak
if (WiFi.status() == WL_CONNECTED) {
ThingSpeak.setField(1, temperature);
ThingSpeak.setField(2, humidity);
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
if (x == 200) {
Serial.println("Data sent to ThingSpeak successfully");
} else {
Serial.println("Failed to send data to ThingSpeak");
}
}
// Wait 20 seconds before next update
delay(2000);
}