#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
#include <ESP32Servo.h>
#include <Simpletimer.h>
Simpletimer timer{};
const int trigpin_ts = 25;
const int echopin_ts = 26;
long durasi_ts;
int jarak_ts;
const int trigpin_ds = 27;
const int echopin_ds = 14;
long durasi_ds;
int jarak_ds;
int data_ds;
const int servopin_ts = 12;
Servo servo_ts;
const int servopin_ds = 13;
Servo servo_ds;
// SSID dan Password WiFi
const char* ssid = "Wokwi-GUEST"; //hotspot wifi pribadi
const char* password = "";//password hostpot pribadi
// Telegram BOT
#define BOTtoken "6991949881:AAElrWtS1ZbPzwew5u1LCALeZspidG9Uexk"
#define CHAT_ID "5292731147"
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
void setup() {
// atur mode pin menjadi output
pinMode(trigpin_ts, OUTPUT);
pinMode(echopin_ts, INPUT);
pinMode(trigpin_ds, OUTPUT);
pinMode(echopin_ds, INPUT);
//atur pin servo ts dan ds
servo_ts.attach(servopin_ts, 500, 2400);
servo_ds.attach(servopin_ds, 500, 2400);
servo_ts.write(0);
servo_ds.write(0);
// Serial monitor
Serial.begin(115200);
// Hubungkan ke Wi-Fi
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
client.setCACert(TELEGRAM_CERTIFICATE_ROOT);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Sedang menghubungkan ke WiFi..");
}
// IP Address
Serial.println(WiFi.localIP());
timer.register_callback(cekDisinfektan);
}
void cekDisinfektan(){
data_ds=analogRead(34);
Serial.println(data_ds);
if(data_ds>4090){
bot.sendMessage(CHAT_ID, "Disinfektan habis","");
}
}
void loop() {
//baca sensor ultrasonik tong sampah
//jika jarak krang dari 10cm servo ts aktif buka tutup
digitalWrite(trigpin_ts,LOW);
delayMicroseconds(10);
digitalWrite(trigpin_ts,HIGH);
durasi_ts = pulseIn(echopin_ts,HIGH);
jarak_ts =(0.03408 * durasi_ts)/2;
Serial.print(jarak_ts);
Serial.println(" cm");
if (jarak_ts<10){
servo_ts.write(90); //buka tong sampah
delay(500);
servo_ds.write(90);//semprotan disinfektan aktif
delay(1000);
servo_ds.write(0);
delay(1000);
servo_ds.write(90);//semprotan disinfektan mati
delay(1000);
servo_ds.write(0);
delay(500);
servo_ts.write(0);//tutup tong sampah
}
//baca sensor ultrasonik disinfektan
//jika jarak kurang dari 10cm servo ds aktif
digitalWrite(trigpin_ds, HIGH);
delayMicroseconds(10);
digitalWrite(trigpin_ds, LOW);
durasi_ds = pulseIn(echopin_ds, HIGH);
jarak_ds = (0.03408 * durasi_ds)/2;
Serial.print(jarak_ds);
Serial.println(" cm");
if (jarak_ds<10){
servo_ts.write(90); //buka tong sampah
delay(500);
servo_ds.write(90);//semprotan disinfektan aktif
delay(1000);
servo_ds.write(0);
delay(1000);
servo_ds.write(90);//semprotan disinfektan mati
delay(1000);
servo_ds.write(0);
delay(500);
servo_ts.write(0);//tutup tong sampah
}
timer.run(60000);
}