#include <WiFi.h>
#include <Ultrasonic.h>
#include <ThingSpeak.h>
#define TRIG_PIN 16 // Pin TRIG
#define ECHO_PIN 4 // Pin ECHO
#define THINKSPEAK_API_KEY "YN990QJE4JRX9AGR" // API Key ThinkSpeak
#define THINKSPEAK_CHANNEL_ID 2574689 // ID Channel ThinkSpeak
const char* ssid = "Wokwi-GUEST"; // SSID WiFi
const char* password = ""; // Password WiFi
const char* server = "api.thingspeak.com";
float distance=0;
float duration=0;
WiFiClient client;
Ultrasonic ultrasonic(TRIG_PIN, ECHO_PIN);
void setup() {
Serial.begin(9600);
Serial.println("Monitoring Sensor");
connectToWiFi();
}
void loop() {
// delay(200); // Tunggu 2 detik sebelum membaca sensor
// unsigned int distance = ultrasonic.read(CM); // Baca jarak dari sensor
digitalWrite(TRIG_PIN,LOW);
delayMicroseconds(10);
digitalWrite(TRIG_PIN,HIGH);
duration = pulseIn(ECHO_PIN,HIGH);
distance =( 0.017 * duration);
if (sendDataToThingSpeak(distance)) {
Serial.println("Data terkirim ke ThingSpeak");
} else {
Serial.println("Gagal mengirim data ke ThingSpeak");
}
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(10000); // Tunggu 10 detik sebelum membaca sensor lagi
}
void connectToWiFi() {
Serial.print("Connecting to WiFi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected");
}
bool sendDataToThingSpeak(unsigned int distance) {
if (!client.connect(server, 80)) {
Serial.println("Gagal terhubung ke server ThingSpeak");
return false;
}
String postStr = "api_key=";
postStr += THINKSPEAK_API_KEY;
postStr += "&field1=";
postStr += String(distance);
postStr += "\r\n\r\n";
String headers = "POST /update HTTP/1.1\n";
headers += "Host: api.thingspeak.com\n";
headers += "Connection: close\n";
headers += "X-THINGSPEAKAPIKEY: " + String(THINKSPEAK_API_KEY) + "\n";
headers += "Content-Type: application/x-www-form-urlencoded\n";
headers += "Content-Length: ";
headers += String(postStr.length());
headers += "\n\n";
client.print(headers);
client.print(postStr);
client.stop();
return true;
}