Helo temen-temen anakkendali.com
RFID merupakan singkatan dari Radio Frekuensi Identifikasi, yang banyak digunakan pada era digital saat ini seperti alat pembayaran non tunai / e-money, RFID juga digolongkan berdasarkan frekuensinya, ada yang frekuensi rendah, sedang dan tinggi. PN532 setara dengan frekuensi sedang karena memiliki frekuensi 13.56Mhz sama dengan RC522. Kali ini kita akan belajar tutorial cara mengakses RFID PN532 dengan menggunakan ESP32.
Pada dasarnya semua jenis mikrokontroler sama saja, hanya perlu dirangkai dan diprogram untuk dapat bekerja sesuai dengan harapan kita, sama halnya juga dengan ESP32 untuk mengakses RFID RC522 hanya perlu dirangkai dan diprogram saja.
Rangkian Skematik ESP32 dan Modul PN532
PN532 mempunyai alternatif komunikasi untuk dapat mengaksesnya, yaitu Serial, I2C, dan SPI. Dan berikut adalah tabel skematik untuk rangkaian SPI
ESP32 | PN532 |
VCC | VCC |
GND | GND |
18 | SCK |
19 | MISO |
23 | MOSI |
27 | SS |
Perhatikan pada modul PN532, pastikan tombol switch selectornya sudah pada posisi komunikasi SPI sehingga sapat bekerja dengan baik saat kita memprogram esp32 untuk mengakses pn532 dengan komunikasi SPI.
Untuk komunikasi Serial dan I2C (RST, IRQ) saya sendiri belum pernah berhasil menggunakan library ini, silahkan nanti kalian coba sendiri, semoga berhasil.
Code ESP32 RFID PN532
#include <SPI.h> #include <Adafruit_PN532.h> #define PN532_SCK (18) #define PN532_MISO (19) #define PN532_MOSI (23) #define PN532_SS (27) Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS); String idcard; void setup() { // put your setup code here, to run once: Serial.begin(9600); nfc.begin(); uint32_t versiondata = nfc.getFirmwareVersion(); if (! versiondata) { Serial.print("Didn't find PN53x board"); while (1); // halt } Serial.print("Found chip PN5"); Serial.println((versiondata >> 24) & 0xFF, HEX); Serial.print("Firmware ver. "); Serial.print((versiondata >> 16) & 0xFF, DEC); Serial.print('.'); Serial.println((versiondata >> 8) & 0xFF, DEC); nfc.SAMConfig(); } void loop() { // put your main code here, to run repeatedly: uint8_t success; uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer to store the returned UID uint8_t uidLength; success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength); if (success) { // Display some basic information about the card idcard = ""; for (byte i = 0; i <= uidLength - 1; i++) { idcard += (uid[i] < 0x10 ? "0" : "") + String(uid[i], HEX); } Serial.print("ID CARD : "); Serial.print(idcard); Serial.println(""); } }
Hasil dari program diatas dapat dilihat pada gambar dibawah ini.
Code ESP32 Kontrol Relay RFID PN532
Sekarang tambahkan modul relay pada projek kalian, dan hubungkan input relay ke salah satu GPIO ESP32, dan yang saya pilih adalah GPIO 26, sehingga kode nya seperti ini.
#include <SPI.h> #include <Adafruit_PN532.h> #define PN532_SCK (18) #define PN532_MISO (19) #define PN532_MOSI (23) #define PN532_SS (27) Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS); String id_allowed [] = {"a3c62e02", "89223cc2"}; String idcard; void setup() { // put your setup code here, to run once: Serial.begin(9600); nfc.begin(); uint32_t versiondata = nfc.getFirmwareVersion(); if (! versiondata) { Serial.print("Didn't find PN53x board"); while (1); // halt } Serial.print("Found chip PN5"); Serial.println((versiondata >> 24) & 0xFF, HEX); Serial.print("Firmware ver. "); Serial.print((versiondata >> 16) & 0xFF, DEC); Serial.print('.'); Serial.println((versiondata >> 8) & 0xFF, DEC); nfc.SAMConfig(); pinMode(26, OUTPUT); digitalWrite(26, 1); } void loop() { // put your main code here, to run repeatedly: uint8_t success; uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer to store the returned UID uint8_t uidLength; success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength); if (success) { // Display some basic information about the card idcard = ""; for (byte i = 0; i <= uidLength - 1; i++) { idcard += (uid[i] < 0x10 ? "0" : "") + String(uid[i], HEX); } Serial.print("ID Kartu Anda : "); Serial.print(idcard); Serial.println(""); for (byte i = 0; i < 3; i++) { if (idcard == id_allowed [i]) { Serial.println("ID kartu Anda Diterima"); digitalWrite(26, 0); delay(2000); digitalWrite(26, 1); } } } delay(1000); }
Hasilnya seperti pada gambar dibawah ini.
Penjelasan Program
Program yang pertama adalah code dasar untuk mengakses RFID PN532 dengan modul ESP32, dan adapun yang saya gunakan adalah tipe Wemos D1 Mini ESP32, jika kalian punya tipe lain, sama saja dalam mengakses nya. Dan untuk program kedua adalah menambahkan daftar Kartu ID Card yang bisa diakses untuk menyalakaan satu buah relay. Jadi buat kalian yang dulu pernah nanya bagaimana caranya agar bisa menambahkan daftar kartu lebih dari satu RFID hanya dengan Mikrokontroler saja tanpa database seperto SD Card atau MySQL begitulah caranya.
Dan Untuk Tutorial menambahkan data ID Kartu ke EEPROM mungkin akan saya buat pada tutorial selanjutnya.
Keyword
ESP32 PN532 RFID,
Belajar ESP32 IoT RFID,
Tutorial PN532 ESP32,
Tutorial ESP32 PN532 RFID,
RFID Interface ESP32,
Menambahkan Kartu RFID Arduino,
Menambahkan Kartu EEPROM,
Menyimpan Data Kartu RFID EEPROM,