Nota
¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete más en Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.
¿Por qué unirse?
Soporte experto: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.
Avances exclusivos: Obtén acceso anticipado a anuncios de nuevos productos y adelantos.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.
Promociones festivas y sorteos: Participa en sorteos y promociones de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy.
2.2.7 Módulo RFID MFRC522
Introducción
La Identificación por Radiofrecuencia (RFID) se refiere a las tecnologías que utilizan comunicación inalámbrica entre un objeto (o etiqueta) y un dispositivo de interrogación (o lector) para rastrear e identificar automáticamente dichos objetos.
Algunas de las aplicaciones más comunes de esta tecnología incluyen cadenas de suministro minoristas, cadenas de suministro militares, métodos de pago automatizados, seguimiento y gestión de equipaje, seguimiento de documentos y gestión farmacéutica, entre otros.
En este proyecto, utilizaremos RFID para leer y escribir.
Componentes

Principio
RFID
La Identificación por Radiofrecuencia (RFID) se refiere a tecnologías que implican el uso de comunicación inalámbrica entre un objeto (o etiqueta) y un dispositivo de interrogación (o lector) para rastrear e identificar automáticamente dichos objetos. El alcance de transmisión de la etiqueta se limita a varios metros desde el lector. No es estrictamente necesaria una línea de visión clara entre el lector y la etiqueta.
La mayoría de las etiquetas contienen al menos un circuito integrado (IC) y una antena. El microchip almacena información y es responsable de gestionar la comunicación por radiofrecuencia (RF) con el lector. Las etiquetas pasivas no tienen una fuente de energía independiente y dependen de una señal electromagnética externa, proporcionada por el lector, para alimentar sus operaciones. Las etiquetas activas contienen una fuente de energía independiente, como una batería, lo que puede aumentar sus capacidades de procesamiento, transmisión y alcance.

MFRC522
El MFRC522 es un tipo de chip lector y escritor de tarjetas integradas. Es comúnmente utilizado en radiofrecuencia de 13.56 MHz. Lanzado por la compañía NXP, es un chip de tarjeta sin contacto de bajo voltaje, bajo costo y tamaño reducido, ideal para instrumentos inteligentes y dispositivos portátiles.
El MF RC522 utiliza un concepto avanzado de modulación y demodulación que se presenta completamente en todos los métodos de comunicación sin contacto pasiva de 13.56 MHz y sus protocolos. Además, admite el algoritmo de cifrado rápido CRYPTO1 para verificar productos MIFARE. El MFRC522 también admite la serie MIFARE de comunicación de alta velocidad sin contacto, con una tasa de transmisión de datos bidireccional de hasta 424 kbit/s. Como un nuevo miembro de la serie de tarjetas lectoras altamente integradas de 13.56 MHz, el MF RC522 es muy similar a los ya existentes MF RC500 y MF RC530, aunque presenta algunas diferencias importantes. Se comunica con la máquina host de forma serial, lo que requiere menos cableado. Puedes elegir entre los modos SPI, I2C y UART serial (similar a RS232), lo que ayuda a reducir la conexión, ahorrar espacio en la placa PCB (tamaño más pequeño) y reducir costos.
Diagrama de conexión

Procedimiento Experimental
Paso 1: Construir el circuito.

Paso 2: Configurar SPI (consulta el Appendix para más detalles. Si ya configuraste SPI, omite este paso).
Para usuarios de C
Paso 3: Dirígete a la carpeta del código.
cd ~/davinci-kit-for-raspberry-pi/c/2.2.7/
Paso 4: Compila el código.
make read
make write
Nota
Hay dos ejemplos para leer o escribir el ID de la tarjeta, y puedes elegir uno de ellos según tu necesidad.
Paso 5: Ejecuta el archivo ejecutable.
sudo ./read
sudo ./write
Nota
Si no funciona después de ejecutarlo, o si aparece un mensaje de error: «wiringPi.h: No such file or directory», consulta:ref:C code is not working?.
Explicación del Código
InitRc522();
Esta función se utiliza para inicializar el módulo RFID RC522.
uint8_t read_card_data();
Esta función se utiliza para leer los datos de la tarjeta; si la lectura es exitosa, devolverá «1».
uint8_t write_card_data(uint8_t *data);
Esta función permite escribir datos en la tarjeta y devuelve «1» si la escritura es exitosa. *data es la información que se escribirá en la tarjeta.
Para usuarios de Python
Paso 2: Activar el entorno virtual.
Nota
Antes de activarlo, debes asegurarte de haber creado un entorno virtual; consulta: Creación de un Entorno Virtual.
Cada vez que reinicies la Raspberry Pi o abras una nueva terminal, deberás ejecutar el siguiente comando nuevamente para activar el entorno virtual.
source myenv/bin/activate
Una vez activado el entorno virtual, verás el nombre del entorno antes del indicador de la línea de comandos, lo cual indica que estás trabajando dentro del entorno virtual.
Paso 3: Instalar las bibliotecas.
La biblioteca spidev
ayuda a gestionar las interacciones con el SPI y es un componente clave en este tutorial, ya que la necesitamos para que la Raspberry Pi interactúe con el RFID RC522.
Ejecuta el siguiente comando para instalar spidev
en tu Raspberry Pi a través de pip
.
sudo pip3 install spidev
Continúa con la instalación de la biblioteca MFRC522. La biblioteca MFRC522 contiene dos archivos: MFRC522.py
y SimpleMFRC522.py
.
Entre ellos, MFRC522.py
es la implementación de la interfaz del RFID RC522;
esta biblioteca maneja todo el trabajo pesado de la comunicación con el RFID a
través de la interfaz SPI de la Pi.
SimpleMFRC522.py
toma el archivo MFRC522.py
y lo simplifica enormemente,
permitiéndote manejar solo unas pocas funciones en lugar de muchas.
sudo pip3 install mfrc522
Paso 4: Salir del entorno virtual.
Cuando hayas terminado tu trabajo y desees salir del entorno virtual, simplemente ejecuta:
deactivate
Esto te devolverá al entorno global de Python del sistema.
Paso 5: Ve a la carpeta del código.
cd ~/davinci-kit-for-raspberry-pi/python/2.2.7
Paso 6: Ejecuta el archivo ejecutable.
sudo python3 2.2.7_read.py
sudo python3 2.2.7_write.py
Nota
Después de ejecutar
2.2.7_read.py
, se imprimirá elid
y eltexto
de tu tarjeta en la terminal.Después de ejecutar
2.2.7_write.py
, primero debes escribir un mensaje, presionarEnter
para confirmar y,
finalmente, colocar tu tarjeta en el módulo RFID MFRC522 para completar la escritura.
código
Nota
Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes de eso, debes ir a la ruta del código fuente, como davinci-kit-for-raspberry-pi/python
.
# lectura
import time
from mfrc522 import SimpleMFRC522
import RPi.GPIO as GPIO
reader = SimpleMFRC522()
def main():
while True:
print("Reading...Please place the card...")
id, text = reader.read()
print("ID: %s\nText: %s" % (id,text))
time.sleep(3)
def destroy():
GPIO.cleanup()
if __name__ == '__main__':
try:
main()
# Cuando se presiona 'Ctrl+C', se ejecutará la función destroy().
except KeyboardInterrupt:
destroy()
# escritura
from mfrc522 import SimpleMFRC522
import RPi.GPIO as GPIO
reader = SimpleMFRC522()
def main():
while True:
text = input('Please write new data:')
print("Please place the card to complete writing")
reader.write(text)
print("Data writing is complete")
def destroy():
GPIO.cleanup()
if __name__ == '__main__':
try:
main()
# Cuando se presiona 'Ctrl+C', se ejecutará la función destroy().
except KeyboardInterrupt:
destroy()
Explicación del Código
reader = SimpleMFRC522()
Instancia la clase SimpleMFRC522()
.
reader.read()
Esta función se utiliza para leer los datos de la tarjeta. Si la lectura es exitosa, devolverá el id y el texto.
reader.write(text)
Esta función se utiliza para escribir información en la tarjeta; presiona la tecla Enter
para finalizar la escritura. text
es la información que se escribirá en la tarjeta.
Imagen del Fenómeno
