Pertemuan 12
Modul Keamanan - RFID MFRC-522, Keypad 4x4 & LCD I2C
Peringatan keselamatan: Modul RFID MFRC-522 wajib disuplai tegangan 3.3V, bukan 5V - memasangnya ke 5V berisiko merusak modul secara permanen.
Tujuan Pembelajaran
- Memahami cara kerja RFID sebagai identifikasi tanpa kontak.
- Memahami cara pembacaan keypad matriks 4x4.
- Mampu menampilkan status/informasi lewat LCD 1602 I2C.
- Mampu menggabungkan ketiganya menjadi prototipe sistem akses sederhana.
Penjelasan Konsep
RFID MFRC-522
RFID (Radio Frequency Identification) memungkinkan mikrokontroler membaca UID (kode unik) dari kartu/tag RFID tanpa kontak fisik, memakai gelombang radio jarak dekat. Modul MFRC-522 berkomunikasi dengan mikrokontroler lewat protokol SPI (butuh pin MOSI, MISO, SCK, plus pin SS dan RST yang bisa diatur bebas). Setiap kartu/tag punya UID unik yang bisa dicocokkan dengan daftar UID yang "diizinkan" dalam program - dasar dari sistem akses seperti kunci pintu otomatis atau absensi.
Keypad Membran 4x4
Keypad 4x4 punya 16 tombol tapi hanya butuh 8 pin (4 baris + 4 kolom) berkat teknik matrix scanning - mikrokontroler mengaktifkan satu baris pada satu waktu lalu memeriksa kolom mana yang terhubung, sehingga bisa tahu tombol mana yang ditekan tanpa butuh 16 pin terpisah. Library "Keypad" menyederhanakan proses scanning ini.
LCD 1602 I2C
Modul LCD 1602 I2C bisa menampilkan 2 baris x 16 karakter teks, dan berkomunikasi lewat I2C (hanya 2 kabel data: SDA & SCL) berkat modul konverter I2C di baliknya - jauh lebih hemat pin dibanding LCD paralel biasa.
Menggabungkan ketiganya
Kombinasi RFID/Keypad (input identifikasi) + LCD (tampilan status) adalah pola dasar sistem akses/keamanan: tunjukkan kartu atau masukkan PIN, sistem mencocokkan, lalu LCD menampilkan "Akses Diterima" atau "Akses Ditolak".
Kesalahan umum
- Memasang MFRC-522 ke 5V - modul ini hanya toleran 3.3V; kesalahan ini adalah salah satu penyebab kerusakan modul paling sering terjadi di kelas jenis ini, dibahas lebih detail di peringatan bawah.
- Alamat I2C LCD salah - jika alamat di kode (
0x27pada contoh) tidak sesuai modul yang dipakai (sebagian modul memakai0x3F), LCD tidak menampilkan apa pun. Gunakan sketch "I2C Scanner" untuk memastikan alamat yang benar. - Lupa
lcd.init()ataulcd.backlight()- layar tetap gelap/kosong meski wiring dan alamat sudah benar. - Pin keypad tertukar baris dan kolom - menyebabkan tombol yang ditekan terbaca sebagai tombol lain; cek urutan pin sesuai dengan pinout fisik keypad, bukan asal tebak.
- Menyambungkan RFID dan modul SPI lain dengan pin SS yang sama - menyebabkan konflik komunikasi; setiap perangkat SPI butuh pin SS/CS yang berbeda meski jalur MOSI/MISO/SCK boleh dipakai bersama.
Komponen yang Dibutuhkan
- 1x Arduino Uno atau ESP32
- 1x Modul RFID MFRC-522 (+ kartu/tag RFID)
- 1x Keypad Membran 4x4
- 1x LCD 1602 I2C
- Kabel jumper
Diagram / Skema Pengkabelan
Modul RFID MFRC-522 (SPI, contoh untuk Arduino Uno):
SDA(SS) -> D10
SCK -> D13
MOSI -> D11
MISO -> D12
RST -> D9
VCC -> 3.3V (PENTING: MFRC-522 bekerja di 3.3V, bukan 5V)
GND -> GND
Keypad 4x4:
8 pin (4 baris + 4 kolom) -> 8 pin digital bebas, mis. D2-D9 (atur sesuai sisa pin yang tersedia)
LCD 1602 I2C:
VCC -> 5V
GND -> GND
SDA -> pin SDA (Arduino Uno: A4)
SCL -> pin SCL (Arduino Uno: A5)
Peringatan: berbeda dari kebanyakan modul lain di kelas ini, MFRC-522 wajib disuplai 3.3V, bukan 5V - memasang ke 5V berisiko merusak modul. Jalur SPI (MOSI/MISO/SCK) bisa dipakai bersamaan dengan modul SPI lain asalkan pin SS/CS berbeda.
Contoh Kode Program
// Membaca UID kartu RFID dan menampilkannya di LCD I2C
// Membutuhkan library "MFRC522" dan "LiquidCrystal I2C"
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define PIN_SS 10
#define PIN_RST 9
MFRC522 rfid(PIN_SS, PIN_RST);
LiquidCrystal_I2C lcd(0x27, 16, 2); // sesuaikan alamat I2C hasil scan
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Tap kartu RFID");
}
void loop() {
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) {
return;
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("UID Terbaca:");
lcd.setCursor(0, 1);
String uid = "";
for (byte i = 0; i < rfid.uid.size; i++) {
uid += String(rfid.uid.uidByte[i], HEX);
}
lcd.print(uid);
Serial.println("UID: " + uid);
rfid.PICC_HaltA();
delay(2000);
lcd.clear();
lcd.print("Tap kartu RFID");
}Tugas / Latihan
- Jalankan sketch di atas, tap beberapa kartu/tag RFID berbeda, catat UID masing-masing.
- Buat program sederhana yang mencocokkan UID yang terbaca dengan 1 UID "yang diizinkan" (tersimpan sebagai variabel), lalu tampilkan "Akses Diterima" atau "Akses Ditolak" di LCD.
- Coba pelajari library Keypad, buat program yang menampilkan angka yang ditekan di keypad ke LCD.
- (Tantangan) Gabungkan ketiganya menjadi sistem 2 lapis: tunjukkan kartu RFID yang valid dulu, baru sistem meminta PIN 4 digit lewat keypad sebagai lapisan verifikasi kedua sebelum menampilkan "Akses Diterima".