RC522 RFID lezer aansluiten op een Raspberry Pi en uitlezen met Python

In dit stappenplan gaan we aan de slag met een RC522 RFID lezer die verschillende tags kan lezen, de RFID lezer is op internet te koop vanaf € 4,00. Via de SPI interface is deze redelijk eenvoudig aan te sluiten op een Raspberry Pi.

In de fysieke beveiliging van objecten wordt vaak gebruik gemaakt van dergelijke paslezers op deuren. Wanneer een pasje of tag wordt aangeboden voor een lezer wordt gecontroleerd of deze geautoriseerd, waarna wel of geen toegang wordt verleend.

Natuurlijk zijn er veel meer toepassingen denkbaar. Zo kun je bijvoorbeeld met een Raspberry Pi en een RFID lezer een compleet urenregistratie systeem maken. Je kunt een RFID lezer ook gebruiken om bijvoorbeeld een Raspberry Pi af te sluiten of een andere actie uit te laten voeren.

Gebruikte componenten

RC522 RFID Mifare RFID lezer SPI
4x Dupont verbindingskabel (female/female)

Door gebruik te maken van de bovenstaande links steun je raspberrytips, bedankt!

Raspberry Pi 3 model B
Raspbian Stretch (2018-03-13 kernel 4.9.)

RFID RC522 RASPBERRY PI

Aansluitschema

De RFID lezer sluit je volgens onderstaand schema aan op de Raspberry Pi.

RFID RC522 raspberry pi 3

RFID pin RPI pin Functie Kabel
SDA 24 CE0 Groen
SCK 23 SCLK Blauw
MOSI 19 SPI MOSI Paars
MISO 21 SPI MISO Grijs
IRQ
Gnd 6 Gnd Zwart
RST 22 GPIO 25 Bruin
3.3V 1 3.3V Rood

SPI activeren

Voor de communicatie met de RFID lezer maken we gebruik we de SPI interface, deze dien je via raspi-config te activeren.

raspi-config

Ga in het menu naar ‘Advanced Options’, selecteer de optie ‘SPI’ en activeer de interface.

Herstart hierna je Raspberry Pi:

sudo reboot -h 0

SPI Python libraries

Voordat Python met de SPI interface en RFID lezer kan communiceren hebben we een aantal Python libraries nodig, alleerst de Python Developer library.

sudo apt-get install python-dev

Hierna gaan we SPI-Py downloaden vanaf GitHub:

git clone https://github.com/lthiery/SPI-Py.git

Nadat library is gecloond vanaf GitHub moeten we SPI-Py toevoegen aan Python:

sudo python setup.py install

Python script voor de RC522 RFID lezer

We hebben nu via Python toegang tot de SPI interface. Als laatste hebben we een script nodig dat de tags kan uitlezen, hiervoor maken we gebruik van MFRC522-python. Download het script vanaf GitHub:

git clone https://github.com/mxgxw/MFRC522-python.git

Ga naar de map (MFRC522-python) waarin de GitHub bestanden zijn geplaatst:

cd MFRC522-python

Gebruikt het Read.py script om de tags te lezen:

python Read.py

RFID RC522 raspberry pi lezer

Wanneer je een tag voor de RFID lezer plaatst zal het UID van de aangeboden tag worden weergegeven in het venster.

Origineel artikel geplaatst op 05-08-2016 laatste update 29-03-2018 om 10:41

14 gedachten over “RC522 RFID lezer aansluiten op een Raspberry Pi en uitlezen met Python”

  1. Erg goed geschreven artikel, erg goed om een start te maken met RFID

    Kleine toevoeging, als je het cardnummer van een myfare card wil bepalen. De bytes van het UUID worden “gereversed” en hierna geconverteerd naar een uInt.

    Beantwoorden
  2. Net alles aangesloten om dit uit te proberen.
    Ik heb een PI-TOP Ceed.
    na het runnen van het script begint de monitor te flikkeren en na nog. 5 seconden schakelt de Pi-TOP automatisch uit.
    Het lijkt erop dat de voeding van de PI-TOP te licht is voor dit.
    Ik zal binnenkort de tag reader apart voeden.
    kijken of dan alles beter werkt.

    daarbij komt ook nog dat ik deze regel
    Ga naar regel 189 en wijzig .cs_change = 1 in .cs_change = 0

    niet naar 0 hoefde te zetten.
    deze stond al op 0

    of heeft iemand anders een idee wat het kan zijn??
    waarom mijn PI over zijn nek gaat.

    Beantwoorden
  3. Ik vermoed dat ik het weet.
    De reader is maar iets van 10 cm van de PI-TOP Ceed.
    vlak bij het printje dat bij de Ceed wordt meegeleverd. ( de hub)
    Ik vermoed dat bij het starten van het script een dusdanig electro magnetisch veld ontstaat dat de hub hiervan last heeft.
    Ik heb met wat alu-folie een soort van kooi van faraday geprobeerd te maken.
    het gaat al beter maar is nog niet afdoende.

    Dus ik denk dat het ligt aan het opgewekte magnetisch veld.

    De reader zend na het starten van het script een magnetisch veld uit.
    dit wordt opgepikt door de spoel die in een tag zit.
    de spoel zet dit magnetisch veld om in een lichte spanning voldoende om de chip te activeren en zo zijn ID uit te zenden naar de reader.
    Als je een tag kaart pakt en je schijnt met een lamp tegen de kaart aan en je bekijkt de andere kant zie je de spoel lopen en ook het chipje zitten.

    Ik ga verder met uitzoeken.
    en natuurlijk probeer ik ook een andere reader.
    ik had er twee besteld. ( voorgevoel ????)

    wordt dus vervolgd.

    ( waar het lange kerstweekend al niet goed voor is)

    🙂

    Beantwoorden
  4. Mijn tweede reader gaf hetzelfde probleem.
    ik heb de kooi van faraday wat beter gemaakt en het probleem bleef wat langer weg.
    Dus ik verdenk echt het EM veld tov de hub in de Ceed.
    ik ga binnenkort de opstelling anders maken.
    zonder de Ceed en een andere PI ik heb er genoeg liggen.
    gewoon op een normale monitor.
    maar ik vond het zo wel makkelijk om zo het experiment te maken.

    wordt dus weer vervolgd

    Beantwoorden
  5. Het laatste gedeelte van mijn experiment betreffende RFID.
    ik had het bij het juiste eind.
    de HUB in de PI TOP was inderdaad RF gevoelig.
    Na het maken van een volledig afgesloten kooi van faraday was het hele probleem opgelost.
    Hoe nu verder met mijn experiment…..
    Nou eenvoudig.
    je pakt een andere RPI en een normale monitor en je gaat verder waar je was.

    Alles werkt prima.
    Ik ga nu het een en ander uitbreiden.
    Ik wil twee readers aansluiten op een enkele RPI.

    Daarvoor kan ik alle aansluitingen blijven gebruiken en dus dubbel aansluiten.
    zover ik het heb nagemeten. moet ik PIN RST op de reader aansluiten op een andere GPIO. Dit zal denk ik GPIO 24 worden.
    Dan alleen nog het script een beetje aanpassen en kijken of hij dan beide readers kan lezen.
    Het doel zal uiteindelijk een in – uit klok systeem worden.
    De ene reader voor in klokken de ander voor uit klokken.
    als je bent in-geklokt moet je eerst uit-klokken via de andere reader voor je weer kan in-klokken.

    De data die hier wordt gemaakt in een kaal tekst bestand die het in en uit- klokken bijhoudt met tijd via een RTC module, wordt dan elke nacht via email verzonden naar de betreffende contacten.
    om op deze manier inzicht te krijgen wie hoe laat in en uit gaat.

    @ Richard
    Mocht je tegen die tijd meer willen weten laat het dan weten dan kan ik het via jou prachtige medium verspreiden.

    Beantwoorden
  6. Goed geschreven artikel.
    Ik ben mijn eigen project bezig en dit heeft me opweg geholpen om een RFID te integreren in een Python project.

    Ik heb het probleem dat mijn bijhorende TAG, die bij de RFID-RC522 mee kwam, niet gelezen wordt door RFID lezer.
    Wanneer ik alles start met ‘python Read.py’, zie ik de melding staan ‘Welcome to …’
    Maar er gebeurt niets wanneer ik de tag voor de lezer hou.

    Iemand een idee waar een mogelijk probleem zit?

    Mvg
    Olivier

    Beantwoorden
  7. Allen

    Ik heb een keer mijn RFID lezer met de Arduino gekoppeld (volgens: https://github.com/miguelbalboa/rfid) en dan werkt alles goed. Ik krijg zelfs de versie (v2.0) van de RFID-lezer te zien. Dit bewijst dat de RFID lezer/kaartjes niet stuk zijn. Maar wanneer ik het op de Raspberry PI wil doen gebeurt er niets. Ik zal nu eens het voorstel van Daan onderzoeken.

    Mvg
    Olivier De Groef

    Beantwoorden
  8. Allen

    Ok.

    De RFID lezer is nu aangesloten op een raspberry PI 3 met de “pi-rc522”-library en met de “Read.py” kan ik nu mijn RFID lezer gebruiken en de TAGS worden uitgelezen. Maar!

    Ik krijg de sector-data in deze vorm terug: 164,97,51,… Dit zijn de decimale waarden voor de hex-waarden (A4,61,33,….)

    Iemand een idee hoe ik deze hex-waarden omzet naar leesbare tekens.
    Ik beschrijf de TAG met de “TagInfo”-App van NXP op Android.

    Mvg
    Olivier

    Beantwoorden
  9. Bij een `python Read.py` krijg ik hel volgende:

    Traceback (most recent call last):
    File “Read.py”, line 24, in
    import RPi.GPIO as GPIO
    ImportError: No module named RPi.GPIO

    Wat moet ik doen?

    Beantwoorden

Plaats een reactie