#include <DHT.h>
#include <LiquidCrystal.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);
LiquidCrystal lcd(21, 22, 19, 18, 2, 4); // Adjust pins as needed
WiFiClient client;
unsigned long myChannelNumber = 2610899; // Replace with your channel number
const char * myWriteAPIKey = "NW66GDJF3I729357"; // Replace with your write API key
void setup() {
Serial.begin(9600);
dht.begin();
lcd.begin(16, 2);
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);
lcd.print("Initializing...");
}
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;
// Check for valid readings
//if (isnan(temperature)) {
// Serial.println("Failed to read from DHT sensor!");
//} else {
//}
Serial.print("Distance: ");
Serial.print(distance);
Serial.println("cm");
Serial.print("Temperature:");
Serial.print(temperature);
Serial.println("°C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print("%");
// Update LED state based on conditions
if (distance > 200 & temperature > 38) {
digitalWrite(LED_PIN, HIGH); // Turn LED ON
} else {
digitalWrite(LED_PIN, LOW); // Turn LED OFF
}
// Display results on LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temperature);
lcd.print("C");
lcd.setCursor(0, 0);
lcd.print("D:");
lcd.print(distance);
lcd.print("cm");
lcd.setCursor(0, 1);
lcd.print("H:");
lcd.print(humidity);
// Send data to ThingSpeak
ThingSpeak.setField(1, temperature);
ThingSpeak.setField(2, humidity);
ThingSpeak.setField(3, distance);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (x == 200) {
Serial.println("Data sent successfully.");
} else {
Serial.println("Failed to send data.");
}
delay(2000);
}