#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <ThingSpeak.h>
#include <DHT.h>
// WiFi settings
const char *ssid = "Wokwi-GUEST";
const char *password = "";
// ThingSpeak settings
const char *thingSpeakApiKey = "48AV4UOLZV28TNBI";
const unsigned long thingSpeakUpdateInterval = 15000; // Update interval in milliseconds (15 seconds)
#define CHANNEL_ID 2431869
// Define DHT sensor
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Define pin numbers for LCD
#define I2C_ADDR 0x27
#define LCD_COLS 16
#define LCD_ROWS 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLS, LCD_ROWS);
// Variables for ThingSpeak update
unsigned long previousThingSpeakUpdate = 0;
void setup() {
// Initialize DHT sensor
dht.begin();
// Initialize LCD
lcd.begin(LCD_COLS, LCD_ROWS);
// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Initialize ThingSpeak
//ThingSpeak.begin();
// Turn on LED for 0.5 seconds, then off for 0.5 seconds
// This part is removed as per your request
}
void loop() {
// Read humidity and temperature from DHT sensor
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Print the values to the 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("%");
// Print the values to the serial monitor
Serial.print("Humidity: ");
Serial.println(humidity);
Serial.print("Temperature: ");
Serial.println(temperature);
// Update ThingSpeak every specified interval
unsigned long currentMillis = millis();
if (currentMillis - previousThingSpeakUpdate >= thingSpeakUpdateInterval) {
// Save the last update time
previousThingSpeakUpdate = currentMillis;
// Update ThingSpeak channel with temperature and humidity values
ThingSpeak.setField(1, temperature);
ThingSpeak.setField(2, humidity);
int updateStatus = ThingSpeak.writeFields(CHANNEL_ID, thingSpeakApiKey);
if (updateStatus == 200) {
Serial.println("ThingSpeak update successful");
} else {
Serial.println("Error updating ThingSpeak. HTTP error code: " + String(updateStatus));
}
}
// Add a delay to avoid continuous rapid readings
delay(1000);
}