fbpixel
Etiquetas: , , ,

El módulo de RFID es un lector de tarjeta inteligente que permite entre otros, para activar un mecanismo cuando la tarjeta correcta se presenta al lector. Vamos a utilizar aquí el módulo RC522, que es el más común.

Hardware

  • Computer
  • ArduinoUNO
  • Cable USB
  • Módulo RFID
  • Dupont Cable M/F x7

Esquema

El módulo de RFID RC522 utiliza el protocolo SPI para comunicarse con Arduino. SPI usos de comunicación específica Boche de Arduino.Le pin del microcontrolador es el siguiente (RC522 lado izquierdo, lado derecho Arduino UNO):  
– Vcc (Power) <-> 3V3 (o 5V  Dependiendo de la versión del módulo)
– RST (reset) <-> 9  
– GND (tierra) <-> GND  
– MISO (Maestro Esclavo Input-Output) <-> 12 
– MOSI (Maestro Esclavo de entrada salida) <-> 11 
– SCK (Serial Clock) <-> 13  
– SS/SDA (esclavo seleccionar) <-> 10

arduino-rfid-rc522_bb Uso de un módulo RFID con Arduino

Cuidado: Dependiendo de la versión del módulo RFID, el voltaje de alimentación puede ser diferente (3.3V o 5V). Compruebe el voltaje de suministro de su módulo.

Código

Para utilizar el módulo RFID sujeta utilizamos SPI y MFRC522 bibliotecas que se utiliza de la siguiente

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

// INPUT
#define SS_PIN 10
#define RST_PIN 9
 
MFRC522 rfid(SS_PIN, RST_PIN);

// Init array that will store new NUID
byte nuidPICC[4];

void setup() {
 Serial.begin(9600);
 SPI.begin(); // Init SPI bus
 rfid.PCD_Init(); // Init MFRC522
 
 Serial.println(F("Scan RFID NUID..."));
}

void loop() {
      readRFID();
      delay(200);
}

//
void readRFID()
{ 
  // Look for new card
  if ( ! rfid.PICC_IsNewCardPresent()) 
  return;

    // Verify if the NUID has been readed
  if (  !rfid.PICC_ReadCardSerial())
  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.print(F("RFID tag in dec: "));
    printDec(rfid.uid.uidByte, rfid.uid.size);
    Serial.println();
  }
   
  // Halt PICC
  rfid.PICC_HaltA();

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


/**
 * Helper routine to dump a byte array as dec values to Serial.
 */
void printDec(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], DEC);
  }
}

 

Aplicaciones

  • Apertura cerradura con tarjeta magnética

Fuentes

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código