#define BLYNK_TEMPLATE_ID "TMPL6UempZylo"
#define BLYNK_TEMPLATE_NAME "Smart Trash Bin"
#define BLYNK_AUTH_TOKEN "RDGuthkN-DzYPvdxtFSz-9ZpbONHUFa6"
#define BLYNK_PRINT Serial
#include <ESP32Servo.h>
#include <DHT.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <WiFiClient.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define DHTPIN 5
#define DHTTYPE DHT22
#define TRIG_PIN_SENSOR1 2
#define TRIG_PIN_SENSOR2 19
#define ECHO_PIN_SENSOR1 4
#define ECHO_PIN_SENSOR2 18
#define SERVO_PIN 22
#define DISTANCE_THRESHOLD 10
DHT dht (DHTPIN, DHTTYPE);
Servo servo;
BlynkTimer timer;
float duration_us, distance_cm;
float jarak_us, jarak_cm;
int servo_mode, manualtrashbin;
BLYNK_WRITE(V3) {
int pinvalue = param.asInt();
servo_mode = pinvalue;
}
BLYNK_WRITE(V4) {
int pinvalue = param.asInt();
manualtrashbin = pinvalue;
}
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN_SENSOR1, OUTPUT);
pinMode(ECHO_PIN_SENSOR1, INPUT);
pinMode(TRIG_PIN_SENSOR2, OUTPUT);
pinMode(ECHO_PIN_SENSOR2, INPUT);
servo.attach(SERVO_PIN);
servo.write(0);
dht.begin();
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
float temp = dht.readTemperature();
float hum = dht.readHumidity();
digitalWrite(TRIG_PIN_SENSOR1, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN_SENSOR1, LOW);
duration_us = pulseIn(ECHO_PIN_SENSOR1, HIGH);
distance_cm = 0.017 * duration_us;
jarak_us = pulseIn(ECHO_PIN_SENSOR2, HIGH);
jarak_cm = 0.017 * jarak_us;
if (servo_mode == 1) {
if (jarak_cm > DISTANCE_THRESHOLD) {
servo.write(0);
// Blynk.logEvent("sucess_thrown", "Terimakasih telah membuang sampah pada tempatnya !");
// Serial.println("Terimakasih telah membuang sampah pada tempatnya !");
Serial.println("Dua-duanya bisa woiiiii");
}
else {
servo.write(90);
}
}
else {
if (manualtrashbin == 1) {
servo.write(0);
// Blynk.logEvent("sucess_thrown", "Terimakasih telah membuang sampah pada tempatnya !");
// Serial.println("Terimakasih telah membuang sampah pada tempatnya !");
}
else {
servo.write(90);
}
}
Blynk.virtualWrite(V0, temp);
Blynk.virtualWrite(V1, hum);
Blynk.virtualWrite(V2, distance_cm);
if (hum >= 60) {
// Blynk.logEvent("hum_warning", "Peringatan kelembapan pada tempat sampah !");
// Serial.println("Peringatan kelembapan pada tempat sampah !");
}
if (temp < 10 || temp > 24) {
// Blynk.logEvent("temp_warning", "Peringatan temperatur pada tempat sampah !");
// Serial.println("Peringatan temperatur pada tempat sampah !");
}
delay(1000);
}