#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <ESP8266WiFi.h>
#define LCD_ADDRESS 0x27 // Adjust this based on your LCD's I2C address
#define LCD_COLUMNS 16
#define LCD_ROWS 2
LiquidCrystal_I2C lcd(LCD_ADDRESS, LCD_COLUMNS, LCD_ROWS);
#define DHT_PIN 2 // Connect DHT sensor to pin 2
#define DHT_TYPE DHT22
#define WIFI_SSID "ICHIGO"
#define WIFI_PASSWORD "bleach1000"
#define THINGSPEAK_API_KEY "S2K8V97B8PM5VVNQ"
#define THINGSPEAK_HOST "api.thingspeak.com"
DHT dht(DHT_PIN, DHT_TYPE);
void setup() {
Serial.begin(9600);
lcd.init(); // Initialize the LCD
lcd.backlight(); // Turn on the backlight
lcd.clear();
lcd.print("Temperature:");
lcd.setCursor(0, 1);
lcd.print("Humidity:");
delay(2000);
connectWiFi();
}
void loop() {
float temperature = dht.readTemperature() + random(-20, 21) / 10.0;
float humidity = dht.readHumidity() + random(-50, 51) / 10.0;
lcd.setCursor(13, 0);
lcd.print(temperature, 1);
lcd.print("C");
lcd.setCursor(9, 1);
lcd.print(humidity, 1);
lcd.print("%");
Serial.print(F("Temperature: "));
Serial.print(temperature, 1);
Serial.print(F("°C\t"));
Serial.print(F("Humidity: "));
Serial.print(humidity, 1);
Serial.println(F("%"));
uploadToThingSpeak(temperature, humidity);
delay(2000);
}
void connectWiFi() {
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void uploadToThingSpeak(float temperature, float humidity) {
WiFiClient client;
if (!client.connect(THINGSPEAK_HOST, 80)) {
Serial.println("Connection to ThingSpeak failed");
return;
}
String data = "S2K8V97B8PM5VVNQ";
data += THINGSPEAK_API_KEY;
data += "&field1=";
data += String(temperature, 1);
data += "&field2=";
data += String(humidity, 1);
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(data.length());
client.print("\n\n");
client.print(data);
Serial.println("Data sent to ThingSpeak");
client.stop();
}