Lire badge RFID

Utilice un lector de RFID con la Raspberry Pi.

Actualizado el 11 julio 2019 - 0 Comentarios - , , ,

ⓘ Este artículo puede haber sido traducido total o parcialmente utilizando herramientas automáticas. Pedimos disculpas por cualquier error que esto pueda causar.

Este tutorial es la segunda parte de un archivo dedicado a descubrir la electrónica con la Raspberry Pi. Si no lo has leído, te aconsejo que consultes el primer tutorial para controlar un LED con la Raspberry Pi.

Ya sea para sistemas de identificación, gestión de inventarios, pagos o domótica, los chips RFID se utilizan cada vez más.

En este tutorial veremos cómo leer tarjetas RFID con la Raspberry Pi y un lector RFID RC522.

Al final del tutorial, podrás leer una placa RFID, comprobar si es la esperada y encender un LED verde o rojo, según el resultado. ¡Todo lo que tiene que hacer es adaptar este ejemplo básico al proyecto de su elección!

El equipo necesario

Para completar este tutorial, necesitará los siguientes materiales:

Ensamble el lector RFID RC522

Cuando recibe el módulo RFID RC522, puede ver que viene con un juego de 2 x 8 pines. Por lo tanto, el primer paso será soldar 8 de estos pines en el lector RFID. ¡Que no cunda el pánico, soldar es muy fácil!

Por lo tanto, debe insertar los PIN en las ranuras provistas en la tarjeta RFID y soldarlos con su plancha.

Módulo RFID RC522 soldado
Es probable que encuentre conectores rectos y curvos. Te aconsejo que uses la curva, más práctica.

Si nunca ha soldado, le recomiendo esta excelente guía para aprender a soldar de François de framboise314.fr.

Conecte el lector RFID y los LED a la Raspberry Pi

Antes de pasar a escribir el código que nos permitirá leer las placas RFID y controlar los LED, primero debemos conectar todos los componentes a la Raspberry Pi.

Como recordatorio, la conexión y desconexión de los componentes siempre debe realizarse con la Raspberry Pi apagada.

Conecte el lector RFID RC522 a la Raspberry Pi

El primer componente que vamos a conectar es el lector RFID.

Para controlar el lector RFID usaremos una biblioteca externa. Desafortunadamente, esto está escrito con los puertos GPIO ingresados directamente en el código. Esto significa que no podemos configurarlos de manera diferente y que, por lo tanto, nos vemos obligados a usar exactamente los mismos puertos que los proporcionados en la biblioteca.

Aquí hay una tabla que enumera los puertos del lector y el puerto GPIO de la Raspberry Pi al que deberá conectarlo.

Puertos GPIO / puertos RC522 a juego
Conecte los puertos del RC522 a los puertos correspondientes de la Raspberry Pi.

Como recordatorio, encontrará un mapa de los puertos GPIO de la Raspberry Pi en el primer tutorial de esta serie.

Conecte los LED

Después del lector RFID, conectemos los LED a la Raspberry Pi.

Vamos a realizar un montaje muy sencillo. Cada LED tendrá su ánodo (la pata alargada) conectado a un puerto GPIO y los dos LED tendrán su ánodo conectado a la misma resistencia, a su vez conectado a un puerto de tipo GPIO Ground de la Raspberry Pi.

Por lo tanto, usamos una sola resistencia para dos LED y limitamos el número de cables.

Al final, una vez que la tarjeta RFID y los LED estén conectados al Pi, debería tener un ensamblaje parecido a este.

Tenga en cuenta que también puede conectar el RC522 directamente a la Raspberry Pi sin utilizar un breadbord.

Escriba el programa para leer una tarjeta RFID.

Contamos con un circuito funcional, solo tenemos que activar los puertos SPI de la Raspberry Pi, necesarios para utilizar el lector RFID, y escribir el programa que leerá una placa RFID.

Como en el tutorial anterior, el programa estará escrito en Python. Este tutorial no es un curso de Python y solo explicaremos brevemente el programa. Si desea obtener más información sobre Python, hemos publicado un curso de introducción a la programación con Python.

Activar el protocolo SPI de la Raspberry Pi

Antes de escribir el programa, habilitemos el protocolo SPI en nuestra Raspberry Pi para que podamos usar el módulo RFID.

Para activarlo, simplemente ejecute el comando sudo raspi-config, en tu Raspberry, luego elige Interfacing Options, SPI, Yes y por fin Finish.

Instale la biblioteca pi-rc522

Último requisito previo, vamos a instalar la biblioteca Python3 "pi-rc522" que le permite controlar el reproductor RC522.

Usaremos Pip3, un administrador de biblioteca para Python.

Solo necesita ejecutar el comando:

sudo pip3 install pi-rc522

Escriba el programa para leer el identificador de una placa RFID

Cada tarjeta RFID tiene un identificador único. Es leyendo este identificador y comparándolo con una lista de identificadores autorizados que podemos saber si una insignia está autorizada.

Por tanto, vamos a escribir un programa que nos permita leer el identificador único de una placa RFID.

Como hicimos en el tutorial anterior, escribiremos el programa en la carpeta /home/pi/electronic (si aún no lo ha hecho, cree la carpeta).

En esta carpeta, cree un archivo read_rfid_uid.py y poner el siguiente código en él:

#!/usr/bin/env python3.5
#-- coding: utf-8 --

import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time


GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte

rc522 = RFID() #On instancie la lib

print('En attente d'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge

#On va faire une boucle infinie pour lire en boucle
while True :
    rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée
    (error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos

    if not error : #Si on a pas d'erreur
        (error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps

        if not error : #Si on a réussi à nettoyer
            print('Vous avez passé le badge avec l'id : {}'.format(uid)) #On affiche l'identifiant unique du badge RFID
            time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes

Una vez guardado el archivo, se autoriza su ejecución con el comando:

sudo chmod +x /home/pi/electronic/read_rfid_uid.py

Ahora podemos iniciar el programa llamándolo con el comando:

/home/pi/electronic/read_rfid_uid.py

Cada vez que pase una tarjeta RFID frente al lector, se mostrará su identificador único.

Escribe un programa que muestre si una insignia es válida o no.

Ahora que podemos leer el identificador único de una placa, todo lo que tenemos que hacer es adaptar el código anterior para comparar el identificador leído con un identificador escrito en el programa.

Por tanto vamos a modificar un poco el programa anterior para que compare el uid leído con el escrito en el programa, y encienda el led rojo o verde según el resultado.

Copie el archivo anterior a un archivo nuevo verify_rfid.py y modificarlo para el código siguiente:

Edita la línea RFID_UID para poner el identificador de su etiqueta RFID!

#!/usr/bin/env python3.5
#-- coding: utf-8 --

import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time


GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte

LED_RED = 3 #Définit le numéro du port GPIO qui alimente la led rouge
LED_GREEN = 5 #Définit le numéro du port GPIO qui alimente la led verte
RFID_UID = [21, 35, 5, 43, 57] #Définit l'UID du badge RFID

#Définit la fonction permettant d'allumer une led
def turn_led_on (led) :
    GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO
    GPIO.output(led, GPIO.HIGH) #Allume la led

#Définit la fonction permettant d'éteindre une led
def turn_led_off (led) :
    GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO
    GPIO.output(led, GPIO.LOW) #Eteind la led

#Définit la fonction permettant d'allumer la rouge et éteindre la verte
def turn_red_on () :
    turn_led_off(LED_GREEN) #Eteind la led verte
    turn_led_on(LED_RED) #Allume la led rouge

#Définit la fonction permettant d'allumer la verte et éteindre la rouge
def turn_green_on () :
    turn_led_off(LED_RED) #Eteind la led rouge
    turn_led_on(LED_GREEN) #Allume la led verte


rc522 = RFID() #On instancie la lib

print('En attente d'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge

#On va faire une boucle infinie pour lire en boucle
while True :
    rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée
    (error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos

    if not error : #Si on a pas d'erreur
        (error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps

        if not error : #Si on a réussi à nettoyer
            if RFID_UID == uid :
                print('Badge {} autorisé !'.format(uid))
                turn_green_on()
            else :
                print('Badge {} interdit !'.format(uid))
                turn_red_on()

            time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes

¡Todo lo que tienes que hacer es iniciar el programa y probar!

A continuación, puede adaptar el código para sus propios proyectos, como crear una cerradura inteligente o incluso una máquina de discos con etiquetas RFID.

Para obtener información, puede obtener todo el código para este tutorial en el Github de Raspbian France.

En el siguiente tutorial, veremos cómo controlar un servomotor con la Raspberry Pi.

Compartir
Boletin informativo
Autor:
Raspberry Pi FR
Únete a la comunidad de Raspberry Pi
Un ordenador de 35$ ya vendió 10 millones de copias
COMPRAR LA NUEVA RASPBERRY PI 4
Tutoriales relacionados
¡Raspbian France cambia de nombre y se convierte en Raspberry Pi FR! Dale una IP local fija a tu Raspberry Pi. Cree un clúster de Raspberry Pi con Docker Swarm Cómo hacer un enrutador Tor con la Raspberry Pi. Enciende y apaga un LED con Raspberry Pi y Python.
No hay comentarios
Compartir
Inscríbase al boletín
Suscríbete a la newsletter.
Did you like this article ?
Subscribe and stay informed!