#include <DHTesp.h>
#include <WiFi.h>
#include <LiquidCrystal_I2C.h>
#include <WiFiClient.h>
#include <ThingSpeak.h>
#define sensor 34
#define buzzer 2
DHTesp dhtSensor;
TempAndHumidity data;
const int dhtpin = 15;
//Initialize the LCD display
LiquidCrystal_I2C lcd(0x27, 16, 3);
//Enter your WIFI SSID and password
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
WiFiClient client;
unsigned long myChannelNumber = 2476226;
const char *myWriteAPIKey = "J3HVD05V4T2J6ERP";
int statusCode;
void setup() {
// Debug console
Serial.begin(115200);
dhtSensor.setup(dhtpin, DHTesp::DHT22);
lcd.init();
lcd.backlight();
pinMode(buzzer, OUTPUT);
ThingSpeak.begin(client);
WiFi.mode(WIFI_STA);
lcd.setCursor(1, 0);
lcd.print("Gas Detector");
for (int a = 0; a <= 15; a++) {
lcd.setCursor(a, 1);
lcd.print(".");
delay(200);
}
lcd.clear();
}
//Get the ultrasonic sensor values
void GASLevel() {
int value = analogRead(sensor);
value = map(value, 0, 4095, 0, 100);
if (value >= 40) {
digitalWrite(buzzer, HIGH);
tone(buzzer, 200);
lcd.setCursor(0, 1);
lcd.print("Warning! ");
} else {
digitalWrite(buzzer, LOW);
noTone(buzzer);
lcd.setCursor(0,1);
lcd.print("Normal ");
}
Serial.println(value);
lcd.setCursor(0, 0);
lcd.print("GAS Level :");
lcd.print(value);
lcd.print(" ");
}
void dht(){
lcd.setCursor(0,2);
lcd.print("Humi:"+ String(data.temperature));
lcd.setCursor(0,3);
lcd.print("Temp:"+ String(data.humidity));
}
void loop() {
GASLevel();
dht();
delay(2000);
data = dhtSensor.getTempAndHumidity();
Serial.println("Humi:" + String(data.temperature));
Serial.println("Temp:" + String(data.humidity));
Serial.println("<-------------------->");
ThingSpeak.setField(1, data.temperature);
ThingSpeak.setField(2, data.humidity);
statusCode = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
}