Sitemap
Aidil Rasyd

Aidil Rasyd

Sensor Jarak Ultrasonik Buzzer ESP32 Dengan Bot Telegram

3 min readMar 30, 2026

Nama Tim: ZERO

List Anggota Tim: Aidil Rasyd ,Dzaki Ainur Ridho, Alif Tegar Cahyadi, Randa, Asher Atha Nathanael, Refli Kareza, Evta Fernanda, Muhammad Satrio Kencana, Fiijannatin Aliyah

List Alat: Ultrasonik, Buzzer, Esp32-S3, Board, dan Kabel 6 buah

Penjelasan singkat
Sistem ini merupakan pendeteksi jarak berbasis IoT (Internet of Things) yang terintegrasi dengan Bot Telegram. Mikrokontroler ESP32-S3 bertugas sebagai otak utama yang membaca data dari Sensor Ultrasonik. Sensor ini akan terus-menerus mengukur jarak objek yang ada di depannya dan akan terus menampilkan hasil jarak serial monitor pada Bot telegram. Buzzer akan mengeluarkan suara jika mendeteksi objek pada jarak 10 cm atau kurang.

Sistem ini sangat cocok diaplikasikan untuk sensor parkir pintar atau pemantauan batas aman suatu area.

Get Aidil Rasyd’s stories in your inbox

Join Medium for free to get updates from this writer.

Pembuktian Alat disertai gambar foto alat dan SS hasil

Press enter or click to view image in full size
Alat Sensor Jarak
Output Serial Monitor Terintegrasi dengan Bot Telegram
Press enter or click to view image in full size
Program Arduino IDE
Press enter or click to view image in full size
Serial Monitor Arduino IDE

List Code

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>

#define trigPin 5
#define echoPin 18
#define buzzerPin 6

const char* ssid = "*******masukan nama hospot wifi*****";
const char* password = "*****masukan password hospot wifi*******";

#define BOTtoken "*******masukan bot token telegram******"
#define CHAT_ID "********masukan id bot*********"

WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

long duration;
float distance;

unsigned long lastTimeBotRan;
unsigned long lastSendTime = 0;

int botRequestDelay = 1000;
int sendInterval = 2000; // ⏱ kirim tiap 5 detik

// 🔹 Fungsi baca jarak
float bacaJarak() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);
distance = duration * 0.0343 / 2;

return distance;
}

// 🔹 Handle pesan Telegram (opsional, masih bisa dipakai)
void handleNewMessages(int numNewMessages) {
for (int i = 0; i < numNewMessages; i++) {
String chat_id = String(bot.messages[i].chat_id);
String text = bot.messages[i].text;

if (chat_id != CHAT_ID) {
bot.sendMessage(chat_id, "Unauthorized user", "");
continue;
}
}
}

void setup() {
Serial.begin(9600);

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);

WiFi.begin(ssid, password);
client.setInsecure();

while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting...");
}
Serial.println("WiFi Connected");
}

void loop() {
float jarak = bacaJarak();

Serial.print("Jarak: ");
Serial.print(jarak);
Serial.println(" cm");

// 🔊 Buzzer hanya saat sangat dekat
if (jarak > 0 && jarak <= 10) {
digitalWrite(buzzerPin, HIGH);
} else {
digitalWrite(buzzerPin, LOW);
}

// 📱 AUTO KIRIM JARAK TIAP 5 DETIK
if (millis() - lastSendTime > sendInterval) {
String pesan = "📏 Jarak sekarang: " + String(jarak) + " cm";
bot.sendMessage(CHAT_ID, pesan, "");
lastSendTime = millis();
}

// 🚨 ALERT KHUSUS KALAU SANGAT DEKAT
if (jarak > 0 && jarak <= 10) {
bot.sendMessage(CHAT_ID, "⚠️ Objek sangat dekat!", "");
delay(2000); // anti spam alert
}

// 🔹 Tetap bisa baca pesan masuk (opsional)
if (millis() > lastTimeBotRan + botRequestDelay) {
int numNewMessages = bot.getUpdates(bot.last_message_received + 1);

while (numNewMessages) {
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received + 1);
}
lastTimeBotRan = millis();
}

delay(200);
}

--

--