#include <WiFi.h>
#include "ThingSpeak.h"
// Pin configuration
const int echoPin = 13;
const int trigPin = 15;
unsigned long lastSendTime = 0;
const unsigned long sendInterval = 20000;
// WiFi credentials
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
// ThingSpeak channel details
const int myChannelNumber = 2436303;
const char* myApiKey = "WUVRTGPUOPHQL7N6";
const char* server = "api.thingspeak.com";
WiFiClient client;
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Connect to WiFi
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected !");
Serial.println("Local IP: " + String(WiFi.localIP()));
// Set WiFi mode to STA (station) mode
WiFi.mode(WIFI_STA);
// Initialize ThingSpeak client
ThingSpeak.begin(client);
}
void loop() {
int distance = measuredistance();
// Send data to ThingSpeak if the interval has passed
unsigned long currentTime = millis();
if (currentTime - lastSendTime >= sendInterval) {
sendToThingSpeak(distance);
lastSendTime = currentTime; // Update the last send time
}
// Print temperature and humidity to serial monitor
Serial.println("dist: " + String(distance) + " cm");
// Delay for 10 seconds before the next iteration
delay(10000);
}
int measuredistance(){
// Trigger ultrasonic sensor to send a pulse
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Measure the time taken for the pulse to return
int duration = pulseIn(echoPin, HIGH);
int dis = duration * 0.034 / 2;
return dis;
}
void sendToThingSpeak(int distance) {
ThingSpeak.setField(1, distance);
int status = ThingSpeak.writeFields(myChannelNumber, myApiKey);
if (status == 200) {
Serial.println("Data sent to ThingSpeak successfully.");
} else {
Serial.println("Error sending data to ThingSpeak. Status code: " + String(status));
}
}