/*
* This ESP32 code is created by esp32io.com
*
* This ESP32 code is released in the public domain
*
* For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-ultrasonic-sensor
*/
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
#define TRIG_PIN 18 // ESP32 pin GIOP23 connected to Ultrasonic Sensor's TRIG pin
#define ECHO_PIN 5 // ESP32 pin GIOP22 connected to Ultrasonic Sensor's ECHO pin
#define LED 2
#define LED2 4
float duration_us, distance_cm;
#include <LiquidCrystal_I2C.h>
// SSID dan Password WiFi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
// Telegram BOT
#define BOTtoken "6341882486:AAFcySmgPpcPy_DCBxnIZ5BSyY4rPYS1YSc"
#define CHAT_ID "1226480150"
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken,client);
void setup() {
// begin serial port
// begin serial port
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("Connecting to Wifi.....");
bot.sendMessage(CHAT_ID, "Welcome to VIN087 Bot", "");
// configure the trigger pin to output mode
pinMode(TRIG_PIN, OUTPUT);
// configure the echo pin to input mode
pinMode(ECHO_PIN, INPUT);
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
LCD.init();
LCD.backlight();
LCD.setCursor(0, 0);
}
}
void loop() {
// generate 10-microsecond pulse to TRIG pin
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// measure duration of pulse from ECHO pin
duration_us = pulseIn(ECHO_PIN, HIGH);
// calculate the distance
distance_cm = 0.017 * duration_us;
// ligt up led if distance under limit
if (distance_cm < 30)
{
digitalWrite(LED, HIGH);
bot.sendMessage(CHAT_ID, "Jarak terlalu dekat");
delay(10);
}else{digitalWrite(LED, LOW);
bot.sendMessage(CHAT_ID, "Jarak aman");
}
// print the value to Serial Monitor
Serial.print("Jarak air: ");
Serial.print(distance_cm);
Serial.println(" cm ");
Blink(LED2);
delay(500);
LCD.setCursor(0,0);
LCD.print("Jarak: ");
LCD.setCursor(6,0);
LCD.print(distance_cm);
LCD.setCursor (13,0);
LCD.print ("cm");
}
void Blink(int x){
digitalWrite(x, HIGH);
delay(10);
digitalWrite(x, LOW);
}