Membangun Sistem Parkir Cerdas dengan ESP32 dan Telegram Bot
Daftar Isi
Di era digital dan otomatisasi seperti sekarang, sistem akses yang aman dan cerdas sangat dibutuhkan untuk rumah, kantor, dan fasilitas publik lainnya. Salah satu solusi praktis dan efisien adalah penggunaan RFID (Radio Frequency Identification) yang dapat mengautentikasi pengguna secara cepat dan mudah.
Apa Itu Sistem Akses Otomatis?
Sistem akses otomatis adalah solusi pintar yang memungkinkan pintu, gerbang, atau penghalang dibuka secara otomatis berdasarkan verifikasi identitas pengguna. Dalam artikel ini, kita akan membangun Sistem Akses Otomatis yang memanfaatkan:
- ESP32 sebagai otak mikrokontroler
- RC522 RFID reader untuk membaca kartu
- LCD 16x2 I2C sebagai tampilan
- Servo motor untuk membuka dan menutup pintu
- Telegram bot untuk mengirimkan notifikasi real-time
Alat & Bahan
- ESP32 Dev Board (Beli Disini)
- RFID Reader RC522 + Kartu RFID / Tag (Beli Disini)
- Servo Motor (SG90) (Beli Disini)
- LCD 16x2 dengan I2C (Beli Disini)
- Kabel Jumper (Beli Disini)
- Breadboard (Beli Disini)
- Software Arduino IDE (Download Disini)
- Koneksi WiFi
- Akun Telegram
Koneksi (Wiring)
RFID RC522 ↔ ESP32
RC522 -> ESP32
SDA -> GPIO5
SCK -> GPIO18
MOSI -> GPIO23
MISO -> GPIO19
IRQ ->
GND -> GND
RST -> GPIO27
3.3V -> 3.3V
LCD I2C ↔ ESP32
LCD12C -> ESP32
SCL -> GPI22
SDA -> GPIO21
VCC -> VIN
GND -> GND
Servo ↔ ESP32
Servo -> ESP32
DIN -> GPI13
VCC -> VIN
GND -> GND
Menyiapkan Bot Telegram
- Buka Telegram, cari
@BotFather
- Gunakan perintah
/newbot
dan ikuti instruksinya - Simpan token API yang diberikan
Instalasi Library
- Buka Arduino IDE, kemudian
- Masuk ke Library Manager
(Sketch > Include Library > Manage Libraries)
- Cari CTBot, LiquidCrystal_I2C, MFRC522, ESP32Servo dan instal.
Kode Program
#include <WiFi.h>
#include <CTBot.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <MFRC522.h>
#include <ESP32Servo.h>
// RFID
#define SS_PIN 5
#define RST_PIN 27
MFRC522 mfrc522(SS_PIN, RST_PIN);
// LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Servo
Servo myServo;
#define SERVO_PIN 13
// Telegram
CTBot myBot;
String ssid = "SSID WIFI"; // Ganti dengan nama WiFi
String pass = "PASS WIFI"; // Ganti dengan password WiFi
String token = "TOKEN API"; // Ganti dengan token bot dari @BotFather
// UID kartu valid
String validUID = "a0a99c32"; // Ganti dengan UID kartu kamu
String getUIDString() {
String uidStr = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
if (mfrc522.uid.uidByte[i] < 0x10) uidStr += "0";
uidStr += String(mfrc522.uid.uidByte[i], HEX);
}
return uidStr;
}
void setup() {
Serial.begin(115200);
Wire.begin();
SPI.begin();
mfrc522.PCD_Init();
lcd.begin();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Scan Kartu RFID");
myServo.attach(SERVO_PIN);
myServo.write(0); // Posisi awal tertutup
// Koneksi WiFi dan Bot
myBot.wifiConnect(ssid, pass);
myBot.setTelegramToken(token);
if (myBot.testConnection()) {
Serial.println("Bot Telegram terkoneksi!");
} else {
Serial.println("Gagal koneksi ke Telegram.");
}
}
void loop() {
TBMessage msg;
// Jika ada kartu RFID terdeteksi
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
String uidStr = getUIDString();
Serial.println("UID: " + uidStr);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("UID:");
lcd.setCursor(0, 1);
lcd.print(uidStr);
if (uidStr == validUID) {
Serial.println("Akses Diterima");
lcd.clear();
lcd.print("Akses Diterima");
// Servo buka 90 derajat
myServo.write(90);
delay(2000); // tunggu 2 detik
myServo.write(0); // kembali ke posisi awal
// Kirim ke Telegram
myBot.sendMessage(msg.sender.id, "✅ Akses diterima: " + uidStr);
} else {
Serial.println("Akses Ditolak");
lcd.clear();
lcd.print("Akses Ditolak");
myBot.sendMessage(msg.sender.id, "❌ Akses ditolak: " + uidStr);
}
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
delay(2000);
lcd.clear();
lcd.print("Scan Kartu RFID");
}
// Periksa pesan Telegram
if (myBot.getNewMessage(msg)) {
String txt = msg.text;
if (txt == "/status") {
myBot.sendMessage(msg.sender.id, "🤖 Sistem parkir siap. Silakan tempel kartu RFID.");
} else {
myBot.sendMessage(msg.sender.id, "Perintah tidak dikenal.\nGunakan /status untuk cek.");
}
Serial.println("Pesan Telegram: " + txt);
}
delay(300);
}
Ganti SSID, Password WiFi, Token Telegram dan UID Kartu dengan milik Anda:
// Telegram
CTBot myBot;
String ssid = "SSID WIFI"; // Ganti dengan nama WiFi
String pass = "PASS WIFI"; // Ganti dengan password WiFi
String token = "TOKEN API"; // Ganti dengan token bot dari @BotFather
// UID kartu valid
String validUID = "a0a99c32"; // Ganti dengan UID kartu kamu
Dengan proyek ini, Anda telah membangun sistem kontrol akses RFID berbasis ESP32 yang terhubung ke internet dengan notifikasi Telegram. Solusi ini bisa digunakan untuk sistem parkir, pintu otomatis, ruang kantor, atau bahkan rumah pintar Anda.
Posting Komentar