#include <SoftwareSerial.h>
SoftwareSerial espSerial(3, 4); // ESP8266 TX -> D3, RX -> D4 (via voltage divider)
const char* SSID = "Your_WiFi_Name"; // Change to your Wi-Fi SSID
const char* PASSWORD = "Your_WiFi_Password"; // Change to your Wi-Fi Password
const char* CHANNEL_ID = "Your_Channel_ID"; // Change to your ThingSpeak Channel ID
const char* API_KEY = "Your_ThingSpeak_API_Key"; // Change to your ThingSpeak Read API Key
void setup() {
Serial.begin(9600);
espSerial.begin(115200);
Serial.println("Connecting to WiFi...");
connectToWiFi();
}
void loop() {
Serial.println("Retrieving data from ThingSpeak...");
fetchDataFromThingSpeak();
delay(15000); // Fetch data every 15 seconds
}
void connectToWiFi() {
espSerial.println("AT+RST");
delay(2000);
espSerial.println("AT+CWMODE=1");
delay(2000);
String cmd = "AT+CWJAP=\"" + String(SSID) + "\",\"" + String(PASSWORD) + "\"";
espSerial.println(cmd);
delay(5000);
Serial.println("WiFi Connected!");
}
void fetchDataFromThingSpeak() {
String cmd = "AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",80";
espSerial.println(cmd);
delay(2000);
String request = "GET /channels/" + String(CHANNEL_ID) + "/feeds/last.json?api_key=" + String(API_KEY);
cmd = "AT+CIPSEND=" + String(request.length() + 2);
espSerial.println(cmd);
delay(2000);
espSerial.println(request);
delay(2000);
Serial.println("Data Retrieved:");
while (espSerial.available()) {
Serial.write(espSerial.read());
}
espSerial.println("AT+CIPCLOSE");
delay(2000);
}