Komponen · 5 mnt baca

Cara Memakai RFID RC522: Membaca Kartu dengan Arduino dan Kunci Pintu Berkartu

Bagaimana cara kerja modul RFID RC522? Kartu dan gantungan kunci 13,56 MHz, pengkabelan SPI 3,3 V, library MFRC522, membaca UID, mengecek kartu yang diizinkan, kunci pintu servo, serta pemakaian di ESP32 dan Pico.

RFID (Radio Frequency IDentification) adalah teknologi yang mengenali kartu atau gantungan kunci lewat gelombang radio tanpa menyentuh pembacanya. Kartu transportasi, kartu akses kantor, label anti-maling di toko, dan microchip hewan peliharaan semuanya memakai RFID. RC522 adalah modul pembaca murah yang bekerja di 13,56 MHz, biasanya dijual bersama kartu putih dan gantungan kunci biru. Modul ini menjadi dasar banyak proyek, dari kunci pintu berkartu sampai sistem absensi.

Modul pembaca RFID RC522
Modul RFID RC522: jalur tembaga di board adalah antena pembacanya; di sebelahnya ada kartu dan gantungan kunci yang bisa dibaca.

Bagaimana cara kerja RFID?

Antena tembaga di board pembaca membuat medan magnet 13,56 MHz. Di dalam kartu atau gantungan kunci ada kumparan tipis dan chip kecil, tetapi tidak ada baterai. Ketika kartu mendekati medan itu, energi yang terinduksi di kumparan memberi daya ke chip, lalu chip mengirim identitas dan datanya kembali ke pembaca dengan mengubah medan itu sedikit sekali. Itulah sebabnya kartu bisa bekerja bertahun-tahun tanpa pernah dicas, tetapi dengan RC522 jarak bacanya hanya sekitar 3–5 sentimeter.

Kartu di kit biasanya MIFARE Classic 1K: memori 1 KB-nya dibagi menjadi 16 sektor, masing-masing terdiri dari 4 blok berukuran 16 byte. Setiap kartu punya UID (pengenal unik) yang ditulis di pabrik, biasanya sepanjang 4 byte. Sebagian besar proyek sederhana mengenali kartu dengan membaca UID ini, bukan dengan menulis data ke kartu.

Spesifikasi RC522

FiturNilai
Frekuensi kerja13,56 MHz
Catu daya3,3 V (bukan 5 V)
Konsumsi arus13–26 mA
Jarak bacaSekitar 3–5 cm (tergantung kartunya)
Kartu yang didukungMIFARE Classic 1K/4K, Ultralight, NTAG (ISO 14443A)
AntarmukaSPI (chip-nya juga mendukung I2C dan UART)

Pengkabelan RC522 (SPI)

RC522 berkomunikasi dengan board lewat SPI. Pin SCK, MOSI, dan MISO harus masuk ke pin SPI tetap di setiap board, sedangkan SDA (SS) dan RST bisa masuk ke pin digital mana pun asalkan sesuai dengan kodenya. Kamu bisa melihat pin SPI board-mu di alat Pinout.

Pin RC522Arduino UnoArduino MegaESP32Raspberry Pi Pico
SDA (SS)D1053GPIO 5GP17
SCKD1352GPIO 18GP18
MOSID1151GPIO 23GP19
MISOD1250GPIO 19GP16
IRQTidak dihubungkanTidak dihubungkanTidak dihubungkanTidak dihubungkan
GNDGNDGNDGNDGND
RSTD95GPIO 22GP20
3.3V3.3V3.3V3V33V3
Jangan pernah menghubungkan RC522 ke pin 5V; modul ini bekerja di 3,3 V dan 5 V bisa merusaknya secara permanen. Banyak orang menghubungkannya langsung ke pin data 5 V Uno dan biasanya tetap berfungsi, tetapi chip-nya secara resmi tidak tahan 5 V. Untuk proyek yang akan berjalan lama, level shifter lebih aman; ESP32 dan Pico sudah bekerja di 3,3 V, jadi tidak punya masalah ini.

Library MFRC522 dan membaca UID kartu

Di Library Manager, cari MFRC522 lalu instal library buatan GithubCommunity (miguelbalboa). Kode di bawah menampilkan UID setiap kartu yang kamu tempelkan di Serial Monitor dalam format heksadesimal (HEX):

C++ (Arduino IDE)
1#include <SPI.h>
2#include <MFRC522.h>
3
4const int SS_PIN = 10;
5const int RST_PIN = 9;
6
7MFRC522 rfid(SS_PIN, RST_PIN);
8
9void setup() {
10  Serial.begin(9600);
11  SPI.begin();
12  rfid.PCD_Init();
13  Serial.println("Kartı okutun / scan a card");
14}
15
16void loop() {
17  if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;  // kart yok / no card
18
19  Serial.print("UID:");
20  for (byte i = 0; i < rfid.uid.size; i++) {
21    Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
22    Serial.print(rfid.uid.uidByte[i], HEX);
23  }
24  Serial.println();
25
26  rfid.PICC_HaltA();        // kartı beklemeye al / halt the card
27  rfid.PCD_StopCrypto1();
28}
Catat UID kartu dan gantungan kuncimu; di langkah berikutnya keduanya akan kamu pakai sebagai “kartu yang diizinkan”. Kalau tidak ada kartu yang terbaca, upload File > Examples > MFRC522 > DumpInfo; kalau Serial Monitor menampilkan “Firmware Version: 0x0” atau “0xFF”, masalahnya ada di pengkabelanmu.

Mengecek kartu yang diizinkan

Dengan membandingkan UID yang terbaca dengan nilai yang sudah kamu simpan, kamu bisa memutuskan apakah kartu itu diizinkan. Contoh di bawah mengecek satu kartu yang diizinkan; untuk beberapa kartu, cukup jadikan array-nya dua dimensi dan bandingkan di dalam loop:

C++ (Arduino IDE)
1// yukarıdaki tanımlar ve setup() aynen / definitions and setup() as above
2byte allowed[4] = {0xDE, 0xAD, 0xBE, 0xEF};   // kendi kartının UID'si / your card's UID
3
4bool isAllowed() {
5  if (rfid.uid.size != 4) return false;
6  for (byte i = 0; i < 4; i++) {
7    if (rfid.uid.uidByte[i] != allowed[i]) return false;
8  }
9  return true;
10}
11
12void loop() {
13  if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;
14  Serial.println(isAllowed() ? "İzin verildi / access granted" : "Reddedildi / access denied");
15  rfid.PICC_HaltA();
16  rfid.PCD_StopCrypto1();
17}

Kunci pintu berkartu dengan servo

Mari buat kunci yang memutar servo 90 derajat untuk membuka selama 3 detik ketika kartu yang diizinkan ditempelkan, dan membunyikan bip peringatan singkat dari buzzer untuk kartu yang tidak diizinkan. Untuk pengkabelan servo lihat Apa Itu Motor Servo?, dan untuk suara peringatannya Apa Itu Buzzer? Di Uno, library Servo memakai Timer1 dan tone() memakai Timer2, jadi keduanya bisa bekerja bersama tanpa masalah.

C++ (Arduino IDE)
1#include <SPI.h>
2#include <MFRC522.h>
3#include <Servo.h>
4
5MFRC522 rfid(10, 9);       // SS, RST
6Servo lock;
7const int BUZZER_PIN = 8;
8byte allowed[4] = {0xDE, 0xAD, 0xBE, 0xEF};
9
10void setup() {
11  SPI.begin();
12  rfid.PCD_Init();
13  lock.attach(6);
14  lock.write(0);                          // kilitli / locked
15}
16
17void loop() {
18  if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;
19  bool ok = rfid.uid.size == 4 && memcmp(rfid.uid.uidByte, allowed, 4) == 0;
20  if (ok) {
21    lock.write(90);                       // kilidi aç / unlock
22    delay(3000);
23    lock.write(0);                        // tekrar kilitle / lock again
24  } else {
25    tone(BUZZER_PIN, 400, 600);           // reddedildi sesi / denied beep
26  }
27  rfid.PICC_HaltA();
28  rfid.PCD_StopCrypto1();
29}
Kunci yang hanya mengecek UID cukup untuk belajar dan proyek hobi, tetapi bukan keamanan yang sesungguhnya: UID MIFARE Classic bisa disalin dengan alat murah. Untuk pintu sungguhan, minta PIN selain kartu, atau verifikasi informasi yang disimpan di sektor terenkripsi.

RC522 dengan ESP32 dan Raspberry Pi Pico

Library MFRC522 yang sama berjalan di ESP32; pakai pin VSPI dan deklarasikan objeknya sebagai MFRC522 rfid(5, 22);. Karena ESP32 bekerja di 3,3 V, board ini pasangan yang pas untuk RC522, dan berkat Wi-Fi kamu bisa mencatat kartu yang ditempelkan ke internet. Di Pico dengan MicroPython, salin file mfrc522.py (misalnya library buatan danjperron) ke Pico lalu pakai seperti ini:

Python
1from mfrc522 import MFRC522      # mfrc522.py Pico'da olmalı / mfrc522.py must be on the Pico
2import time
3
4reader = MFRC522(spi_id=0, sck=18, miso=16, mosi=19, cs=17, rst=20)
5
6while True:
7    reader.init()
8    stat, tag_type = reader.request(reader.REQIDL)
9    if stat == reader.OK:
10        stat, uid = reader.SelectTagSN()
11        if stat == reader.OK:
12            print("UID:", "".join("{:02X}".format(b) for b in uid))
13    time.sleep_ms(200)

Jenis RFID: kartu apa saja yang bisa dibaca RC522?

JenisFrekuensiJarak bacaPemakaian umum
RFID LF125 kHzSekitar 10 cmKartu akses lama, microchip hewan peliharaan (EM4100)
RFID HF / NFC13,56 MHz1–10 cmKartu transportasi, MIFARE, NFC di ponsel
RFID UHF860–960 MHzBeberapa meterLabel gudang, logistik, dan ritel

RC522 hanya membaca kartu HF 13,56 MHz. Kartu 125 kHz yang dipakai di banyak pintu masuk gedung (sering bertanda “EM”) tidak bisa dibaca RC522; kartu itu butuh pembaca 125 kHz seperti RDM6300. NFC adalah jenis RFID 13,56 MHz yang bisa dibaca ponsel; RC522 bisa membaca UID stiker NTAG.

Ide proyek dengan RFID

  • Kunci pintu atau laci berkartu: kunci yang terbuka dengan kartu yang diizinkan dan memberi peringatan untuk kartu yang tidak diizinkan.
  • Sistem absensi: pasangkan setiap kartu dengan nama dan catat waktu kedatangan ke kartu SD atau internet.
  • Layar sambutan: tampilkan “Welcome” dan nama orangnya di LCD ketika kartu ditempelkan; untuk layarnya, lihat Cara Memakai Layar LCD I2C.
  • Kotak cerita: pasangkan file suara yang berbeda ke setiap kartu dan buat mainan audio untuk anak-anak dengan DFPlayer.
  • Pemberi makan hewan pintar: keluarkan makanan ketika label di kalung hewan peliharaan terbaca.
  • Permainan kartu: buat kuis atau permainan memori dengan kartu.

Kesalahan umum dan cara mengatasinya

  • Tidak ada kartu yang terbaca dan versinya 0x0: kabel SPI terpasang di pin yang salah; cek terutama MOSI dan MISO.
  • Menghubungkan modul ke 5V: RC522 bekerja di 3,3 V; 5 V bisa merusaknya.
  • Mencoba membaca kartu 125 kHz: RC522 tidak bisa melihat kartu seperti ini; pakai kartu 13,56 MHz.
  • Kartu terlalu jauh atau di atas permukaan logam: dekatkan kartu sampai 1–3 cm; permukaan logam mengganggu medannya.
  • Kartu yang sama terbaca berulang-ulang: PICC_HaltA() tidak dipanggil; hentikan kartu setelah dibaca.
  • Kabel panjang: sinyal SPI melemah di kabel yang panjang; buat kabel kurang dari 20 cm.

RFID menjawab pertanyaan “siapa kamu?” dengan sekali tempel, yang menambah banyak hal pada proyek keamanan dan otomasi. Di aplikasi BlueGrays kamu akan menemukan proyek membaca nilai RFID, pembaca kartu dengan LCD, dan kunci pintu RFID dengan servo langkah demi langkah lengkap dengan skema rangkaian dan kode.

Pertanyaan umum

Dari jarak berapa RC522 bisa membaca kartu?

Dengan kartu dan gantungan kunci bawaan kit, biasanya terbaca dari jarak 3–5 cm. Jenis kartu, ukuran antena, dan logam di sekitarnya semuanya memengaruhi jarak. Untuk jangkauan yang lebih jauh, kamu butuh pembaca UHF yang bekerja di frekuensi berbeda.

Kartu apa saja yang dibaca RC522? Apakah bisa membaca kartu 125 kHz?

RC522 hanya membaca kartu ISO 14443A 13,56 MHz, seperti MIFARE Classic 1K/4K, Ultralight, dan label NTAG. RC522 tidak bisa membaca kartu EM 125 kHz yang umum di pintu masuk gedung; untuk kartu itu dipakai pembaca 125 kHz seperti RDM6300.

Apakah RC522 bisa bekerja di 5V?

Tidak, RC522 harus diberi daya dari 3,3 V. Menghubungkannya ke pin 5V bisa merusak modul. Pin datanya biasanya tahan dengan sinyal 5 V dari Uno, tetapi karena chip-nya secara resmi tidak tahan 5 V, level shifter disarankan untuk proyek permanen.

Apakah UID kartu bisa berubah atau disalin?

UID kartu biasa ditulis di pabrik dan tidak berubah. Namun ada kartu “magic” yang UID-nya bisa diubah, dan UID MIFARE Classic bisa disalin ke kartu seperti itu. Itulah sebabnya sistem yang hanya memercayai UID tidak memberi keamanan yang sesungguhnya.

Bisakah aku menulis data ke kartu dengan RC522?

Bisa. Di kartu MIFARE Classic, setiap sektor dilindungi kunci; di kartu baru, kunci bawaannya adalah FF FF FF FF FF FF. Dengan contoh ReadAndWrite di library MFRC522, kamu bisa menulis data ke blok lalu membacanya kembali. Blok terakhir setiap sektor menyimpan kunci-kuncinya, jadi jangan tulis data sembarangan di sana.

Bisakah ponselku dipakai sebagai kartu di RC522?

Biasanya tidak bisa diandalkan. iPhone tidak membuka NFC untuk emulasi kartu, dan ponsel Android mengirim UID acak yang berubah di setiap tempelan. Untuk sistem berbasis ponsel, lebih baik membaca label NFC dengan ponsel lalu mengirim hasilnya ke board lewat Wi-Fi atau Bluetooth.

Lihat semua proyek
Membaca Nilai RFID
#53Pemula
Premium

Membaca Nilai RFID

Gantungan kunci akses gedung atau kartu aksesmu menyimpan nomor ID rahasia, dan proyek ini membacanya. Dekatkan kartu ke pembaca RFID dan Arduino menulis nomor kartunya ke layar komputermu. Langkah pe

4.7(47)
61
Pembaca Kartu RFID RC522 ESP32 (dengan LCD)
#123Menengah

Pembaca Kartu RFID RC522 ESP32 (dengan LCD)

Di proyek ini, kita menyambungkan modul RFID RC522 berbasis MFRC522 ke ESP32 lewat SPI dan membaca UID kartu/tag. Ini menjadi dasar untuk aplikasi seperti kunci pintu, sistem keanggotaan, dan kontrol akses. Kita menampilkan UID yang terbaca di layar LCD; versi ini tidak membandingkannya dengan daftar kartu yang diizinkan. PERINGATAN: RC522 hanya bekerja di 3.3V; memberinya 5V akan membakar modulnya!

4.8(21)
39
Kunci Pintu RFID ESP32 (RC522 + Servo + OLED + Buzzer + LED)
#137Mahir
Premium

Kunci Pintu RFID ESP32 (RC522 + Servo + OLED + Buzzer + LED)

Kita membuat kunci pintu pintar dengan ESP32, modul RFID RC522, motor servo SG90, layar OLED SSD1306, buzzer aktif, dan 2 LED. Ketika sebuah kartu dipindai, UID-nya dibandingkan dengan daftar kartu resmi yang disimpan di kode; jika resmi, motor servo berputar untuk membuka kunci (LED hijau + 2 bunyi bip pendek), dan pintu otomatis terkunci lagi setelah 5 detik. Untuk kartu tidak resmi, LED merah menyala, peringatan diberikan dengan 3 bunyi bip cepat, dan UID yang terbaca ditampilkan di layar.

4.8(9)
15
Brankas Elektronik Pintar
#92Mahir
Premium

Brankas Elektronik Pintar

Brankas kecil untuk barang berhargamu yang terbuka dengan kode. Kamu mengetik kode empat digitmu di keypad; jika benar, motor servo membuka kunci, lampu hijau menyala, dan layar menampilkan keadaan br

4.7(42)
63
Kunci Sandi dengan Keypad 4x4 dan LCD
#64Mahir
Premium

Kunci Sandi dengan Keypad 4x4 dan LCD

Kunci pintu elektronik kecil yang menahan siapa pun yang tidak tahu kodenya. Kamu menekan tombol pagar lalu mengetik kodenya di keypad; jika benar, layar menulis akses diberikan, LED hijau menyala, da

4.8(59)
75
Sistem Alarm Gerakan ESP32 (PIR + Buzzer + LED + Telegram)
#145Mahir
Premium

Sistem Alarm Gerakan ESP32 (PIR + Buzzer + LED + Telegram)

Sistem alarm keamanan pintar yang menyalakan buzzer dan LED ketika sensor PIR mendeteksi gerakan, sekaligus mengirim notifikasi instan ke pemilik lewat Telegram. Cooldown 30 detik membatasi seberapa sering alarm berulang; mekanisme ini tidak memvalidasi deteksi PIR atau menghilangkan pemicu palsu. Cocok untuk rumah, garasi, gudang, atau ruang kerja. Dengan ESP32-CAM bisa ditambahkan notifikasi berfoto; dengan ESP32 DevKit V1 klasik, notifikasinya berupa teks.

0.0(0)
9
Layar LCD I2C ESP32 (16x2)
#119Menengah
Premium

Layar LCD I2C ESP32 (16x2)

Di proyek ini, kita menampilkan teks dengan menyambungkan layar LCD karakter 16x2 ke ESP32 lewat protokol I2C. Berkat I2C, kita bisa mengendalikan layar hanya dengan dua pin data (SDA dan SCL), sehingga tidak perlu memboroskan 6+ pin seperti pada sambungan paralel klasik. Kode mencetak pesan tetap di baris pertama dan penghitung yang naik setiap detik di baris kedua. Selain itu, kita menjalankan pemindai I2C di awal untuk mencetak alamat layar ke Serial Monitor (biasanya 0x27).

4.9(23)
40