#include <DHT.h>
#include <WiFi.h>
#include <ThingSpeak.h>
#define DHTPIN 14
#define DHTTYPE DHT22
#define TRIG_PIN 5
#define ECHO_PIN 23
#define LED_PIN 15
const char* ssid = "Wokwi-GUEST";
const char* pass = "";
DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;
unsigned long myChannelNumber = 2703118; // Replace with your channel number
const char * myWriteAPIKey = "0B7EVPF931H0D8Z0"; // Replace with your write API key
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(LED_PIN, OUTPUT);
// Initialize WiFi
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
ThingSpeak.begin(client);
}
void loop() {
// Read temperature
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Read distance
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
long distance = (duration * 0.034) / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println("cm");
Serial.print("Temperature:");
Serial.print(temperature);
Serial.println("°C");
Serial.print("Humidity: ");
Serial.println(humidity);
Serial.print("%");
// Update LED state based on conditions
String ledStatus = "OFF";
if (distance > 200 & temperature > 38) {
digitalWrite(LED_PIN, HIGH); // Turn LED ON
ledStatus = "ON";
} else {
digitalWrite(LED_PIN, LOW); // Turn LED OFF
ledStatus = "OFF";
}
Serial.print("Led is:");
Serial.println(ledStatus);
// Send data to ThingSpeak
ThingSpeak.setField(1, humidity);
ThingSpeak.setField(2, temperature);
ThingSpeak.setField(3, distance);
ThingSpeak.setField(3,ledStatus);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (x == 200) {
Serial.println("Data sent successfully.");
} else {
Serial.println("Failed to send data.");
}
delay(15000);
}