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
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