#include <Wire.h>
#include <LiquidCrystal.h>
#include <DHT.h>
#include <ThingSpeak.h>
#include <WiFi.h>
#define DHTPIN 15 // Pin where the DHT sensor is connected
#define DHTTYPE DHT22 // Type of DHT sensor
#define SOIL_MOISTURE_PIN 34 // Pin where the soil moisture sensor is connected
const char *ssid = "Wokwi-GUEST";
const char *password = "";
// ThingSpeak parameters
char* apiKey = "YOUR_THINGSPEAK_API_KEY";
unsigned long channelID = YOUR_THINGSPEAK_CHANNEL_ID;
// Initialize DHT sensor
DHT dht(DHTPIN, DHTTYPE);
// Initialize LCD
LiquidCrystal lcd(23, 22, 21, 19, 18, 5);
// Initialize WiFi client
WiFiClient client;
void setup() {
Serial.begin(115200);
dht.begin();
lcd.begin(16, 2); // Initialize the LCD with 16 columns and 2 rows
// Connect to Wi-Fi
WiFi.begin(ssid, password);
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to WiFi");
// Initialize ThingSpeak with WiFi client
ThingSpeak.begin(client);
// Check if connected to WiFi
if (WiFi.status() == WL_CONNECTED) {
Serial.println("Connected to WiFi");
} else {
Serial.println("WiFi connection failed");
}
}
void loop() {
// Read temperature and humidity from DHT sensor
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Read soil moisture
int soilMoisture = analogRead(SOIL_MOISTURE_PIN) - 620 / 1940;
// Display temperature and humidity on LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C Humidity: ");
lcd.print(humidity);
lcd.print("%");
// Display soil moisture on LCD
lcd.setCursor(0, 1);
lcd.print("Soil Moisture: ");
lcd.print(soilMoisture);
// Update ThingSpeak channel with sensor data
ThingSpeak.setField(1, temperature);
ThingSpeak.setField(2, humidity);
ThingSpeak.setField(3, soilMoisture);
ThingSpeak.writeFields(channelID, apiKey);
delay(15000); // Adjust delay as needed (15 seconds in this case)
}