#include <ThingSpeak.h>
#include <WiFi.h> // Use WiFi library for ESP32
//----------- Enter your Wi-Fi Details---------//
char ssid[] = "vivo Y31"; //SSID
char pass[] = "123456789"; //Password
//---------------------------------------------//
const int trigger = 6; // You can use the same GPIO pins as long as they are valid for ESP32
const int echo = 5;
long T;
float distanceCM;
WiFiClient client;
unsigned long myChannelField = 2665781; // Channel ID
const int ChannelField = 1; // Which To Field Write
const char * myWriteAPIKey = "ZVC41TCF1B402TXT"; // Write API Key
void setup()
{
Serial.begin(115200);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
WiFi.begin(ssid, pass);
Serial.println("Connecting to WiFi...");
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.print(".");
}
Serial.println("\nConnected to WiFi");
ThingSpeak.begin(client); // Initialize ThingSpeak
}
void loop()
{
if (WiFi.status() != WL_CONNECTED)
{
Serial.println("WiFi not connected, attempting to reconnect...");
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.print(".");
}
Serial.println("\nReconnected to WiFi.");
}
// Trigger the ultrasonic sensor
digitalWrite(trigger, LOW);
delay(1);
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
// Measure the pulse duration and calculate the distance
T = pulseIn(echo, HIGH);
distanceCM = T * 0.034 / 2;
Serial.print("Distance in cm: ");
Serial.println(distanceCM);
// Write the data to ThingSpeak
ThingSpeak.writeField(myChannelField, ChannelField, distanceCM, myWriteAPIKey);
// Wait 15 seconds (ThingSpeak's minimum update rate is once every 15 seconds)
delay(15000);
}