#include <WiFi.h>
#include "DHT.h"
#include "ThingSpeak.h"
#define DHTPIN 15 // DHT data pin connected to GPIO15
#define DHTTYPE DHT22 // Or use DHT11 if you have that sensor
#define LDRPIN 34 // LDR sensor connected to GPIO34 (analog input)
DHT dht(DHTPIN, DHTTYPE);
const char* ssid = "Wokwi-GUEST"; // Default Wi-Fi for Wokwi
const char* password = ""; // No password
unsigned long myChannelNumber = 3088490;
const char* myWriteAPIKey = "2XSBMFOWYKJALAX4";
WiFiClient client;
void setup() {
Serial.begin(115200);
dht.begin();
// Connect to Wi-Fi
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\n✅ WiFi connected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// Initialize ThingSpeak
ThingSpeak.begin(client);
}
void loop() {
// Read sensors
int ldrValue = analogRead(LDRPIN); // LDR analog reading
float temperature = dht.readTemperature(); // Temperature in °C
// Check if temperature is valid
if (isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
delay(2000);
return;
}
// Print readings
Serial.print("LDR Value: ");
Serial.print(ldrValue);
Serial.print(" | Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
// Send to ThingSpeak (Field1 = LDR, Field2 = Temperature)
ThingSpeak.setField(1, ldrValue);
ThingSpeak.setField(2, temperature);
int statusCode = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (statusCode == 200) {
Serial.println("✅ Data sent successfully to ThingSpeak!");
} else {
Serial.print("❌ Error sending data. HTTP Code: ");
Serial.println(statusCode);
}
// Update ThingSpeak every 20 seconds (minimum allowed)
delay(20000);
}