Lire badge RFID

Gebruik een RFID-lezer met de Raspberry Pi.

Bijgewerkt 11 juli 2019 - 0 Opmerkingen - , , ,

ⓘ Cet article peut avoir été partiellement ou totalement traduit à l'aide d'outils automatiques. Nous nous excusons des erreurs que cela pourrait engendrer.

Deze tutorial is het tweede deel van een bestand gewijd aan het ontdekken van elektronica met de Raspberry Pi. Als je het nog niet hebt gelezen, raad ik je aan om de eerste tutorial te raadplegen om een LED met de Raspberry Pi te besturen.

Of het nu gaat om identificatiesystemen, voorraadbeheer, betaling of voor domotica, RFID-chips worden steeds vaker gebruikt.

In deze tutorial zullen we zien hoe je RFID-kaarten leest met de Raspberry Pi en een RC522 RFID-lezer.

Aan het einde van de tutorial kun je een RFID-badge lezen, controleren of dit de verwachte badge is en een groene of rode LED laten branden, afhankelijk van het resultaat. Het enige dat u hoeft te doen, is dit basisvoorbeeld aanpassen aan het project van uw keuze!

De benodigde apparatuur

Om deze tutorial te voltooien, heb je de volgende materialen nodig:

Monteer de RC522 RFID-lezer

Wanneer u de RC522 RFID-module ontvangt, kunt u zien dat deze wordt geleverd met een set van 2 x 8 pinnen. De eerste stap zal daarom zijn om 8 van deze pinnen op de RFID-lezer te solderen. Geen paniek, solderen is heel eenvoudig!

U moet de pincodes daarom in de daarvoor bestemde sleuven op de RFID-kaart steken en ze solderen met uw strijkijzer.

Gelaste RC522 RFID-module
U zult waarschijnlijk rechte en gebogen connectoren vinden. Ik raad je aan om de gebogen, praktischer te gebruiken.

Als je nog nooit hebt gelast, raad ik deze uitstekende gids aan om te leren lassen van François van framboise314.fr.

Verbind de RFID-lezer en de LED's met de Raspberry Pi

Voordat we verder gaan met het schrijven van de code waarmee we RFID-badges kunnen lezen en de LED's kunnen besturen, moeten we eerst alle componenten op de Raspberry Pi aansluiten.

Ter herinnering: het aansluiten en loskoppelen van componenten moet altijd gebeuren met de Raspberry Pi uitgeschakeld.

Sluit de RC522 RFID-lezer aan op de Raspberry Pi

Het eerste onderdeel dat we gaan aansluiten, is de RFID-lezer.

Om de RFID-lezer te bedienen zullen we een externe bibliotheek gebruiken. Helaas is dit geschreven met de GPIO-poorten rechtstreeks in de code ingevoerd. Dit betekent dat we ze niet anders kunnen configureren en dat we daarom genoodzaakt zijn om exact dezelfde poorten te gebruiken als die in de bibliotheek.

Hier is een tabel met de lezerpoorten en de GPIO-poort van de Raspberry Pi waarop u deze moet aansluiten.

Bijpassende GPIO-poorten / RC522-poorten
Verbind de poorten van de RC522 met de overeenkomstige poorten op de Raspberry Pi.

Ter herinnering vind je in de eerste tutorial van deze serie een kaart van de GPIO-poorten van de Raspberry Pi.

Verbind de leds

Laten we na de RFID-lezer de LED's op de Raspberry Pi aansluiten.

We gaan een heel eenvoudige montage maken. Elke LED heeft zijn anode (de langwerpige poot) verbonden met een GPIO-poort en de twee LED's hebben hun anode verbonden met dezelfde weerstand, zelf verbonden met een GPIO Ground-type poort van de Raspberry Pi.

Zo gebruiken we een enkele weerstand voor twee leds en beperken we het aantal kabels.

Uiteindelijk, als de RFID-kaart en de LED's eenmaal op de Pi zijn aangesloten, zou je een montage moeten hebben die op deze lijkt.

Let op, je kunt de RC522 ook rechtstreeks op de Raspberry Pi aansluiten zonder een breadbord te gebruiken.

Schrijf het programma om een RFID-badge te lezen.

We hebben een functioneel circuit, we hoeven alleen de SPI-poorten van de Raspberry Pi te activeren, nodig om de RFID-lezer te gebruiken, en het programma te schrijven dat een RFID-badge zal lezen.

Net als in de vorige tutorial wordt het programma geschreven in Python. Deze tutorial is geen Python-cursus en we zullen het programma slechts kort uitleggen. Als je meer wilt weten over Python, hebben we een cursus Inleidend programmeren met Python gepubliceerd.

Activeer het SPI-protocol van de Raspberry Pi

Voordat we het programma schrijven, moeten we het SPI-protocol op onze Raspberry Pi inschakelen, zodat we de RFID-module kunnen gebruiken.

Om het te activeren, voert u gewoon de opdracht uit sudo raspi-config, op je framboos en kies Interfacing Options, SPI, Yes en tenslotte Finish.

Installeer de pi-rc522-bibliotheek

Als laatste vereiste gaan we de Python3 "pi-rc522" -bibliotheek installeren waarmee je de RC522-speler kunt bedienen.

We zullen Pip3 gebruiken, een bibliotheekbeheerder voor Python.

U hoeft alleen de opdracht uit te voeren:

sudo pip3 install pi-rc522

Schrijf het programma om de identificatie van een RFID-badge te lezen

Elke RFID-badge heeft een unieke identificatie. Door deze identificatie te lezen en te vergelijken met een lijst met geautoriseerde identificaties, kunnen we weten of een badge geautoriseerd is.

We gaan daarom een programma schrijven waarmee we de unieke identificatie van een RFID-badge kunnen lezen.

Zoals we in de vorige tutorial hebben gedaan, zullen we het programma in de map schrijven /home/pi/electronic (als je dat nog niet hebt gedaan, maak dan de map aan).

Maak in deze map een bestand read_rfid_uid.py en zet de volgende code erin:

#!/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

Nadat het bestand is opgeslagen, is het geautoriseerd voor uitvoering met het commando:

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

We kunnen het programma nu starten door het aan te roepen met het commando:

/home/pi/electronic/read_rfid_uid.py

Elke keer dat u een RFID-badge voor de lezer passeert, wordt de unieke identificatiecode weergegeven!

Schrijf een programma dat aangeeft of een badge geldig is of niet.

Nu we de unieke identificatie van een badge kunnen lezen, hoeven we alleen maar de vorige code aan te passen om de gelezen identifier te vergelijken met een identifier die in het programma is geschreven.

We gaan daarom het vorige programma een beetje aanpassen, zodat het de gelezen uid vergelijkt met degene die in het programma is geschreven, en afhankelijk van het resultaat de rode of groene led laten branden.

Kopieer het vorige bestand naar een nieuw bestand verify_rfid.py en wijzig het voor de onderstaande code:

Bewerk de regel RFID_UID om de identificatie van uw RFID-tag te plaatsen!

#!/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

Het enige wat u hoeft te doen is het programma starten en testen!

U kunt de code vervolgens aanpassen voor uw eigen projecten, zoals het maken van een slim slot of zelfs een jukebox met RFID-tags!

Ter informatie: u kunt alle code voor deze tutorial downloaden op de Github van Raspbian France.

In de volgende tutorial zullen we zien hoe je een servomotor bestuurt met de Raspberry Pi!

Notez cet article.
Delen
Nieuwsbrief
Auteur :
Raspberry Pi FR
Word lid van de Raspberry Pi-gemeenschap
Van een computer van $ 35 zijn al 10 miljoen exemplaren verkocht
KOOP DE NIEUWE RASPBERRY PI 4
Gerelateerde tutorials
Bedien een 3D-printer op afstand met de Raspberry Pi en Octopi. Raspberry Pi Imager, de stichting brengt een officiële tool uit om een OS op de Raspberry te installeren! Installeer Android op de Raspberry Pi Lees de Linux-partitie van een Raspberry SD-kaart van Windows en Mac. Raspberry Pi, hoe op te starten vanaf een USB-stick of een externe harde schijf.
Geen reacties

Delen
Aanmelden nieuwsbrief
Abonneer u op de nieuwsbrief.
Vond je dit artikel leuk?
Schrijf je in en blijf op de hoogte!