-->

RFID RC522 NodeMCU ARDUINO UNTUK IoT

RFID merupakan sistem identifikasi yang menggunakan gelombang radio (Radio Frrequency Identification) sehingga untuk membacanya diperlukan RFID Reader. RFID yang dihubungkan dengan NodeMCU dapat dijadikan suatu alat kontrol berbasis internet (Internet of Things / IoT).

Pada kesempatan kali ini akan membahas tentang bagaimana cara koneksi NodeMCU dengan RFID Reader menggunakan Arduino IDE.


rfid reader passive tag pin

Komponen yang digunakan antara lain:
1.  NodeMCU
2.  RFID Reader RC522
3.  Passive tag/pin
4.  Breadboard
5.  Kabel jumper

Setelah semua komponen tersedia, kemudian rangkai komponen seperti pada gambar di bawah.





Sekarang masuk ke Arduino IDE. Percobaan menggunakan RFID RC522 ini menggunakan RFID Library. Jika Arduino IDE belum terdapat RFID Library, bisa didownload pada https://github.com/miguelbalboa/rfid

Langkah berikutnya, copy paste program di bawah.

#include <SPI.h>
#include <MFRC522.h>

constexpr uint8_t RST_PIN = 5;
constexpr uint8_t SS_PIN = 4;

MFRC522 rfid(SS_PIN, RST_PIN);

MFRC522::MIFARE_Key key;

// Inisialisasi memulai mengirim NUID
byte nuidPICC[4];

void setup() {
  Serial.begin(115200); // Memulai serial monitor
  SPI.begin(); // Memulai komunikasi SPI
  rfid.PCD_Init(); // Init MFRC522

  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;
  }

  Serial.println(F("This code scan the MIFARE Classsic NUID."));
  Serial.print(F("Using the following key:"));
  printHex(key.keyByte, MFRC522::MF_KEY_SIZE);
}

void loop() {

  // Cek untuk kartu baru
  if ( ! rfid.PICC_IsNewCardPresent())
    return;

  // Verifikasi apakah NUID sudah dibaca
  if ( ! rfid.PICC_ReadCardSerial())
    return;

  Serial.print(F("PICC type: "));
  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
  Serial.println(rfid.PICC_GetTypeName(piccType));

  // Check is the PICC of Classic MIFARE type
  if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
    piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
    piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
    Serial.println(F("Your tag is not of type MIFARE Classic."));
    return;
  }

  if (rfid.uid.uidByte[0] != nuidPICC[0] ||
    rfid.uid.uidByte[1] != nuidPICC[1] ||
    rfid.uid.uidByte[2] != nuidPICC[2] ||
    rfid.uid.uidByte[3] != nuidPICC[3] ) {
    Serial.println(F("A new card has been detected."));

    // Store NUID into nuidPICC array
    for (byte i = 0; i < 4; i++) {
      nuidPICC[i] = rfid.uid.uidByte[i];
    }
 
    Serial.println(F("The NUID tag is:"));
    Serial.print(F("In hex: "));
    printHex(rfid.uid.uidByte, rfid.uid.size);
    Serial.println();
    Serial.print(F("In dec: "));
    printDec(rfid.uid.uidByte, rfid.uid.size);
    Serial.println();
  }
  else Serial.println(F("Card read previously."));

  // Halt PICC
  rfid.PICC_HaltA();

  // Stop encryption on PCD
  rfid.PCD_StopCrypto1();
}


/**
 * Sub routine mengirim nilai HEX.
 */
void printHex(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], HEX);
  }
}

/**
 * Sub routine mengirim nilai DEX.
 */
void printDec(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], DEC);
  }
}

Kemudian Upload program dan tunggu hingga selesai (Done Uploading) dan buka serial monitor. Jangan lupa merubah Baudrate pada 115200.

Siapkan Passive Tag yang akan digunakan. Kali ini yang penulis gunakan adalah 2 Passive Tag dan 1 Passive Pin.


Passive Tag coba didekatkan kepada RFID RC522 dan perhatikan nilai yang ada pada serial monitor.
Kartu Pertama


Nilai HEX yang dihasilkan adalah BA FE B8 12

Kartu Kedua


Nilai HEX yang dihasilkan adalah 53 9C 1B 02

Pin


Nilai HEX yang dihasilkan adalah D7 70 80 34

Nilai yang dihasilkan kemudian dapat digunakan untuk identifikasi pada projek lainnya. Cukup sekian artikel singkat ini, semoga dapat bermanfaat.

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel