/* ESP32 WiFi Scanning example */
#include <NewPing.h>
#include <WiFi.h>
#include <ESPAsyncWebSrv.h>
const char *ssid = "vivo 1904";
const char *password = "260309hm";
const int trigPin = 14; // GPIO 14 untuk ESP32
const int echoPin = 12; // GPIO 12 untuk ESP32
const int buzzerPin = 15; // GPIO 15 untuk ESP32
NewPing sonar(trigPin, echoPin, 200);
AsyncWebServer server(80);
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
// Hubungkan ke jaringan WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Tentukan endpoint untuk mengontrol alat
server.on("/", HTTP_GET, [](AsyncWebSvrRequest *request) {
// Tampilkan status dan kontrol pada tampilan web
String html = "<html><body>";
html += "<h1>Status:</h1>";
html += "<p>Jarak dengan tikus: " + String(sonar.ping_cm()) + " cm</p>";
html += "<h2>Kendali:</h2>";
html += "<p><a href=\"/control?command=on\">Aktifkan</a></p>";
html += "<p><a href=\"/control?command=off\">Nonaktifkan</a></p>";
html += "</body></html>";
request->send(200, "text/html", html);
});
server.on("/control", HTTP_GET, [](AsyncWebSvrRequest *request) {
// Ambil nilai parameter 'command' dari URL
String command = request->arg("command");
// Lakukan sesuatu berdasarkan perintah yang diterima
if (command == "on") {
// Logika untuk mengaktifkan alat pengusir tikus
digitalWrite(buzzerPin, HIGH);
request->send(200, "text/plain", "Aktifkan");
} else if (command == "off") {
// Logika untuk menonaktifkan alat pengusir tikus
digitalWrite(buzzerPin, LOW);
request->send(200, "text/plain", "Nonaktifkan");
} else {
// Perintah tidak valid
request->send(400, "text/plain", "Perintah tidak valid");
}
});
// Mulai server
server.begin();
}
void loop() {
// Baca jarak dari sensor ultrasonik
int distance = sonar.ping_cm();
// Jika jarak kurang dari 30 cm, aktifkan pengusir
if (distance < 30) {
digitalWrite(buzzerPin, HIGH);
} else {
digitalWrite(buzzerPin, LOW);
}
delay(100); // Jeda untuk menghindari pembacaan yang terlalu cepat
}