#include <WiFi.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>
#include <LiquidCrystal_I2C.h>
#include <HTTPClient.h>
// WiFi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// ThingSpeak base URL
const char* server = "http://api.thingspeak.com";
// API Key
String apiKey = "15ZIZI45ESPRUAOO";
// Objects
Adafruit_BMP085 bmp;
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pins
int greenLED = 26;
int yellowLED = 25;
int redLED = 33;
int buzzer = 17;
void setup() {
Serial.begin(115200);
Wire.begin(21, 22);
// BMP180
if (!bmp.begin()) {
Serial.println("BMP180 not found! Check wiring!");
while (1);
}
lcd.init();
lcd.backlight();
pinMode(greenLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
pinMode(redLED, OUTPUT);
pinMode(buzzer, OUTPUT);
WiFi.begin(ssid, password);
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Connected!");
}
void loop() {
float pressure = bmp.readPressure() / 100.0;
Serial.print("Pressure: ");
Serial.println(pressure);
// LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Pressure:");
lcd.setCursor(0, 1);
lcd.print(pressure);
lcd.print(" hPa");
// Reset
digitalWrite(greenLED, LOW);
digitalWrite(yellowLED, LOW);
digitalWrite(redLED, LOW);
digitalWrite(buzzer, LOW);
// Logic
if (pressure >= 1020) {
digitalWrite(greenLED, HIGH);
}
else if (pressure >= 1001) {
digitalWrite(yellowLED, HIGH);
}
else {
digitalWrite(redLED, HIGH);
digitalWrite(buzzer, HIGH);
}
// 🔥 Send to ThingSpeak (FIXED)
if (WiFi.status() == WL_CONNECTED) {
WiFiClient client;
HTTPClient http;
String url = String(server) + "/update?api_key=" + apiKey + "&field1=" + String(pressure);
Serial.println(url); // debug
http.begin(client, url);
int httpCode = http.GET();
Serial.print("HTTP Code: ");
Serial.println(httpCode);
if (httpCode == 200) {
Serial.println("Data sent OK");
} else {
Serial.println("Failed to send");
}
http.end();
} else {
Serial.println("WiFi disconnected");
}
delay(15000);
}