Módulo RFID Rc522 con Arduino

El Módulo Lector RFID-RC522 RF utiliza 3.3V como voltaje de alimentación y se controla a través del protocolo SPI, por lo que es compatible con casi cualquier micro controlador, Arduino o tarjeta de desarrollo. El RC522 utiliza un sistema avanzado de modulación y demodulación para todo tipo de dispositivos pasivos de 13.56Mhz


#include <MFRC522.h>

//Configuracion RFID
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key; 

void setup() {
  Serial.begin(9600);  
  while (!Serial);  // For Yun/Leo/Micro/Zero/...
  //SETUP RFID
  SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522 
  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;
  }
  Serial.print(F("Lector RFID inicializado"));
  //printHex(key.keyByte, MFRC522::MF_KEY_SIZE);
  Serial.println();
  delay(1000);
}

void loop() { 
  //LOOP PARA RFID
  //mensaje = "";
 // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
  if ( ! rfid.PICC_IsNewCardPresent())
    return;

  // Verify if the NUID has been readed
  if ( ! rfid.PICC_ReadCardSerial())
    return;

  Serial.print(F("Tipo de tarjeta: "));
  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
  Serial.println(rfid.PICC_GetTypeName(piccType));

    Serial.print("Codigo de la tarjeta: ");
    Serial.println(leer_rfid(rfid.uid.uidByte, rfid.uid.size));
    delay(1000);

  // Halt PICC
  rfid.PICC_HaltA();

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

//FUNCIONES DE RFID
String leer_rfid(byte *buffer, byte bufferSize) {
  String lectura="";
  for (byte i = 0; i < bufferSize; i++) {
    //Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    lectura = lectura + buffer[i];
    //Serial.print(buffer[i], HEX);
  }
  return lectura;
}