Lire badge RFID

Usa un lettore RFID con Raspberry Pi.

Aggiornato 11 Luglio 2019 - 0 Commenti - , , ,

ⓘ Questo articolo potrebbe essere stato tradotto parzialmente o completamente utilizzando strumenti automatici. Ci scusiamo per eventuali errori che ciò potrebbe causare.

Questo tutorial è la seconda parte di un file dedicato alla scoperta dell'elettronica con il Raspberry Pi. Se non l'hai letto, ti consiglio di consultare il primo tutorial per controllare un LED con il Raspberry Pi.

Che si tratti di sistemi di identificazione, gestione dell'inventario, pagamento o automazione domestica, i chip RFID vengono utilizzati sempre di più.

In questo tutorial vedremo come leggere le card RFID con il Raspberry Pi e un lettore RFID RC522.

Alla fine del tutorial, sarai in grado di leggere un badge RFID, verificare se è quello previsto e accendere un LED verde o rosso, a seconda del risultato. Tutto quello che devi fare è adattare questo esempio di base al progetto che preferisci!

L'attrezzatura necessaria

Per completare questo tutorial, avrai bisogno dei seguenti materiali:

Assembla il lettore RFID RC522

Quando ricevi il modulo RFID RC522, puoi vedere che viene fornito con un set di 2 x 8 pin. Il primo passo sarà quindi saldare 8 di questi pin sul lettore RFID. Niente panico, la saldatura è semplicissima!

È quindi necessario inserire i PIN negli slot previsti sulla scheda RFID e saldarli con il ferro.

Modulo RFID RC522 saldato
Probabilmente troverai connettori dritti e curvi. Ti consiglio di usare quello curvo, più pratico.

Se non hai mai saldato, ti consiglio questa eccellente guida per imparare a saldare da François da framboise314.fr.

Collega il lettore RFID e i LED al Raspberry Pi

Prima di passare alla scrittura del codice che ci permetterà di leggere i badge RFID e controllare i LED, dobbiamo prima collegare tutti i componenti al Raspberry Pi.

Come promemoria, collegare e scollegare i componenti deve sempre essere fatto con il Raspberry Pi spento.

Collega il lettore RFID RC522 al Raspberry Pi

Il primo componente che collegheremo è il lettore RFID.

Per controllare il lettore RFID utilizzeremo una libreria esterna. Sfortunatamente, questo è scritto con le porte GPIO inserite direttamente nel codice. Ciò significa che non possiamo configurarli diversamente e che siamo quindi costretti a utilizzare esattamente le stesse porte di quelle previste nella libreria.

Ecco una tabella che elenca le porte del lettore e la porta GPIO del Raspberry Pi a cui dovrai collegarlo.

Porte GPIO corrispondenti / porte RC522
Collega le porte dell'RC522 alle porte corrispondenti sul Raspberry Pi.

Come promemoria, troverai una mappa delle porte GPIO del Raspberry Pi nel primo tutorial di questa serie.

Collega i LED

Dopo il lettore RFID, colleghiamo i LED al Raspberry Pi.

Faremo un assemblaggio molto semplice. Ogni LED avrà il suo anodo (la gamba allungata) collegato a una porta GPIO ei due LED avranno il loro anodo connesso allo stesso resistore, a sua volta connesso a una porta di tipo GPIO Ground del Raspberry Pi.

Pertanto, utilizziamo un singolo resistore per due LED e limitiamo il numero di cavi.

Alla fine, una volta che la scheda RFID ei LED sono collegati al Pi, dovresti avere un assemblaggio simile a questo.

Nota, puoi anche collegare l'RC522 direttamente al Raspberry Pi senza utilizzare un breadbord.

Scrivi il programma per leggere un badge RFID.

Abbiamo un circuito funzionante, non ci resta che attivare le porte SPI del Raspberry Pi, necessarie per utilizzare il lettore RFID, e scrivere il programma che leggerà un badge RFID.

Come nel precedente tutorial, il programma sarà scritto in Python. Questo tutorial non è un corso Python e spiegheremo solo brevemente il programma. Se vuoi saperne di più su Python, abbiamo pubblicato un corso introduttivo alla programmazione con Python.

Attiva il protocollo SPI del Raspberry Pi

Prima di scrivere il programma, abilitiamo il protocollo SPI sul nostro Raspberry Pi in modo da poter utilizzare il modulo RFID.

Per attivarlo, è sufficiente eseguire il comando sudo raspi-config, sul tuo Raspberry, quindi scegli Interfacing Options, SPI, Yes e infine Finish.

Installa la libreria pi-rc522

Ultimo prerequisito, installeremo la libreria Python3 "pi-rc522" che permette di controllare il lettore RC522.

Useremo Pip3, un gestore di librerie per Python.

Hai solo bisogno di eseguire il comando:

sudo pip3 install pi-rc522

Scrivi il programma per leggere l'identificatore di un badge RFID

Ogni badge RFID ha un identificatore univoco. È leggendo questo identificatore e confrontandolo con un elenco di identificatori autorizzati che possiamo sapere se un badge è autorizzato.

Scriveremo quindi un programma che ci consenta di leggere l'identificatore univoco di un badge RFID.

Come abbiamo fatto nel tutorial precedente, scriveremo il programma nella cartella /home/pi/electronic (se non l'hai già fatto, crea la cartella).

In questa cartella, crea un file read_rfid_uid.py e inserisci il codice seguente:

#!/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 volta salvato il file, se ne autorizza l'esecuzione con il comando:

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

Possiamo ora avviare il programma chiamandolo con il comando:

/home/pi/electronic/read_rfid_uid.py

Ogni volta che passi un badge RFID davanti al lettore, verrà visualizzato il suo identificativo univoco!

Scrivi un programma che mostri se un badge è valido o meno.

Ora che possiamo leggere l'identificatore univoco di un badge, tutto ciò che dobbiamo fare è adattare il codice precedente per confrontare l'identificatore letto con un identificatore scritto nel programma.

Modificheremo quindi un po 'il programma precedente in modo che confronti l'uid letto con quello scritto nel programma e accendiamo il led rosso o verde a seconda del risultato.

Copia il file precedente in un nuovo file verify_rfid.py e modificalo per il codice seguente:

Modifica la linea RFID_UID per inserire l'identificativo del tuo tag 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

Tutto quello che devi fare è avviare il programma e testarlo!

Puoi quindi adattare il codice per i tuoi progetti, come creare una serratura intelligente o persino un jukebox utilizzando tag RFID!

Per informazioni, puoi ottenere tutto il codice per questo tutorial sul GitHub di Raspbian France.

Nel prossimo tutorial vedremo come controllare un servomotore con il Raspberry Pi!

Condividi
Newsletter
Autore:
Raspberry Pi FR
Unisciti alla comunità Raspberry Pi
Un computer da 35 euro ha già venduto 10 milioni di copie
ACQUISTA IL NUOVO RASPBERRY PI 4
Tutorial correlati
Accendi e spegni un LED con Raspberry Pi e Python. Attiva la porta seriale TTL del Raspberry Pi e verifica che funzioni. Creare un cluster Raspberry Pi con Docker Swarm Fai lampeggiare il LED verde integrato del Raspberry Pi. Impara a programmare con Python 3 e Raspberry Pi, corso introduttivo.
Nessun commento
Condividi
Iscriviti alla Newsletter
Iscriviti alla newsletter.
Ti è piaciuto questo articolo ?
Iscriviti e resta informato!