#include <WiFi.h>
#include <ESP32Servo.h>
// Pin konfigurasi untuk sensor ultrasonik
#define TRIG_PIN1 12
#define ECHO_PIN1 13
#define TRIG_PIN2 14
#define ECHO_PIN2 27
// Ganti ke pin ESP32 yang tersedia di Wokwi
const int sensorPinE18 = 25;
const int sensorPinLJ12 = 26;
// Servo motor pin
Servo servo1;
Servo servo2;
// WiFi config
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// ThingSpeak
const char* server = "api.thingspeak.com";
const char* apiKey = "JJS2NGL2JOLBNW68"; // Gunakan API Key Anda
WiFiClient client;
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN1, OUTPUT);
pinMode(ECHO_PIN1, INPUT);
pinMode(TRIG_PIN2, OUTPUT);
pinMode(ECHO_PIN2, INPUT);
pinMode(sensorPinE18, INPUT);
pinMode(sensorPinLJ12, INPUT);
servo1.attach(2);
servo2.attach(4);
servo1.write(0);
servo2.write(0);
connectToWiFi();
}
void loop() {
float distance1 = readUltrasonicDistance(TRIG_PIN1, ECHO_PIN1);
float distance2 = readUltrasonicDistance(TRIG_PIN2, ECHO_PIN2);
Serial.println("Data Sensor Ultrasonik:");
Serial.print(" Jarak Sensor 1: ");
Serial.print(distance1);
Serial.println(" cm");
Serial.print(" Jarak Sensor 2: ");
Serial.print(distance2);
Serial.println(" cm");
// Kirim ke ThingSpeak (nonaktifkan jika hanya uji di Wokwi)
// sendDataToThingSpeak(distance1, distance2);
int sensorValueE18 = digitalRead(sensorPinE18);
int sensorValueLJ12 = digitalRead(sensorPinLJ12);
if (sensorValueE18 == LOW) {
servo1.write(180);
Serial.println("Objek Terdeteksi oleh E18-D50NK, Servo1 ke 180 derajat");
delay(3000);
servo1.write(0);
Serial.println("Servo1 kembali ke 0 derajat");
}
if (sensorValueLJ12 == LOW) {
servo2.write(180);
Serial.println("Logam Terdeteksi oleh LJ12A3, Servo2 ke 180 derajat");
delay(3000);
servo2.write(0);
Serial.println("Servo2 kembali ke 0 derajat");
}
delay(500);
}
float readUltrasonicDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
return duration * 0.034 / 2;
}
void connectToWiFi() {
Serial.print("Connecting to WiFi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected");
}
void sendDataToThingSpeak(float distance1, float distance2) {
if (client.connect(server, 80)) {
String postStr = "api_key=" + String(apiKey) +
"&field1=" + String(distance1) +
"&field2=" + String(distance2) + "\r\n\r\n";
String headers = "POST /update HTTP/1.1\n" +
String("Host: api.thingspeak.com\n") +
"Connection: close\n" +
"X-THINGSPEAKAPIKEY: " + String(apiKey) + "\n" +
"Content-Type: application/x-www-form-urlencoded\n" +
"Content-Length: " + String(postStr.length()) + "\n\n";
client.print(headers);
client.print(postStr);
Serial.println("Data terkirim ke ThingSpeak");
} else {
Serial.println("Gagal terhubung ke server ThingSpeak");
}
client.stop();
}