#include <WiFi.h>
#include <DHTesp.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const char *ssid = "Wokwi-GUEST";
const char *password = "";
const char *thingSpeakApiKey = "O27HUY9TEU4T1ZOO";
const char *thingSpeakAddress = "api.thingspeak.com";
const int DHT_PIN = 15;
DHTesp dht;
WiFiClient client;
// void setup() {
// Serial.begin(115200);
// delay(1000);
// Serial.println("Connecting to Wi-Fi...");
// WiFi.begin(ssid, password);
// while (WiFi.status() != WL_CONNECTED) {
// delay(500);
// Serial.print(".");
// }
// Serial.println("");
// Serial.println("Wi-Fi connected");
// dht.setup(DHT_PIN, DHTesp::DHT22);
// }
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("Initializing LCD...");
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("LCD initialized");
delay(1000); // Delay after LCD initialization
Serial.println("Connecting to Wi-Fi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Wi-Fi connected");
dht.setup(DHT_PIN, DHTesp::DHT22);
}
void loop() {
float humidity = dht.getHumidity();
float temperature = dht.getTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
delay(2000);
return;
}
// Serial.print("Temperature: ");
// Serial.print(temperature);
// Serial.print(" °C\tHumidity: ");
// Serial.print(humidity);
// Serial.println(" %");
// Display temperature and humidity on LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(humidity);
lcd.print(" %");
delay(2000);
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C\tHumidity: ");
Serial.print(humidity);
Serial.println(" %");
if (client.connect(thingSpeakAddress, 80)) {
String data = "GET /update?api_key=";
data += thingSpeakApiKey;
data += "&field1=";
data += String(temperature);
data += "&field2=";
data += String(humidity);
data += "\r\n\r\n";
client.print(data);
Serial.println("Sent data to ThingSpeak");
} else {
Serial.println("Failed to connect to ThingSpeak");
}
delay(20000); // Send data every 20 seconds
}