AZ-Delivery RFID RC522 Handleiding
- 1 Inleiding
- 2 Specificaties
- 3 De pinout van de lezer
- 4 Hoe de Arduino IDE in te stellen
- 5 De bibliotheek voor Arduino IDE
- 6 Sketch voorbeeld
- 7 De lezer verbinden met Raspberry Pi
- 8 De bibliotheek voor Python
- 9 Python-script
- 10 Veiligheidsinstructies
- 11 Referenties
- 12 Download handleiding
- 13 In andere talen

Inleiding
Toepassingsgebieden
Onderwijs: Gebruik in scholen, universiteiten en opleidingsinstituten om de basisprincipes van elektronica, programmeren en embedded systemen te onderwijzen. Onderzoek en ontwikkeling: Gebruik in onderzoeks- en ontwikkelingsprojecten om prototypes en experimenten te maken op het gebied van elektronica en informatica. Prototype ontwikkeling: Gebruik bij de ontwikkeling en het testen van nieuwe elektronische circuits en apparaten. Hobby- en makerprojecten: Gebruikt door elektronicahobbyisten en -liefhebbers om doe-het-zelfprojecten te ontwikkelen en te implementeren.
Vereiste kennis en vaardigheden
Basisbegrip van elektronica en elektrotechniek. Kennis van programmeren, vooral in de C/C++ programmeertaal. Vermogen om schema's te lezen en eenvoudige circuits te ontwerpen. Ervaring met het werken met elektronische componenten en solderen.
Bedrijfsomstandigheden
Het product mag alleen worden gebruikt met de spanningen die in het gegevensblad zijn gespecificeerd om schade te voorkomen. Er is een gestabiliseerde DC-voedingsbron vereist voor gebruik. Bij het aansluiten op andere elektronische componenten en circuits moeten de maximale stroom- en spanningslimieten worden nageleefd om overbelasting en schade te voorkomen.
Omgevingsomstandigheden
Het product moet in een schone, droge omgeving worden gebruikt om schade door vocht of stof te voorkomen. Bescherm het product tegen direct zonlicht (UV).
Beoogd gebruik
Het product is ontworpen voor gebruik in onderwijs-, onderzoeks- en ontwikkelingsomgevingen. Het wordt gebruikt om elektronische projecten en applicaties te ontwikkelen, te programmeren en prototypes te maken. Het sensorproduct is niet bedoeld als een afgewerkt consumentenproduct, maar eerder als een hulpmiddel voor technisch onderlegde gebruikers, waaronder ingenieurs, ontwikkelaars, onderzoekers en studenten.
Onjuist voorzienbaar gebruik
Het product is niet geschikt voor industrieel gebruik of veiligheidsrelevante toepassingen. Gebruik van het product in medische apparatuur of voor lucht- en ruimtevaartdoeleinden is niet toegestaan.
RFID betekent radiofrequentie-identificatie. RFID gebruikt elektromagnetische velden om gegevens over korte afstanden over te brengen. RFID-tags worden in veel industrieën gebruikt, bijvoorbeeld een RFID-tag die tijdens de productie aan een auto is bevestigd, kan worden gebruikt om de voortgang ervan door de assemblagelijn te volgen, RFID-tags op farmaceutische producten kunnen worden gevolgd via magazijnen, het implanteren van RFID-microchips in vee en huisdieren maakt een positieve identificatie van dieren mogelijk, enz.
Een RFID-systeem bestaat uit twee delen: een tag en een lezer. RFID-tags zijn ingebed met een zender en een ontvanger. De RFID-component op de tags heeft twee delen: een microchip die informatie opslaat en verwerkt, en een antenne om een signaal te ontvangen en te verzenden. De tag bevat het specifieke serienummer voor één specifiek object en hoeft niet in de directe gezichtslijn van de lezer te staan om te worden gevolgd.
Om de informatie te lezen die op een tag is gecodeerd, zendt een radiozender-ontvanger, een lezer genaamd, een signaal naar de tag uit met behulp van een antenne. De tag reageert met de informatie die in het geheugen is geschreven. De lezer verzendt de leesresultaten vervolgens naar een microcontroller.
Specificaties
- Chip: MFRC522
- Werkfrequentie: 13,56 MHz
- Voedingsspanning: 3,3 V
- Stroom: 13 - 26mA
- Leesbereik: Ongeveer 30 mm
- Communicatie: SPI-interface
- Maximale gegevensoverdrachtsnelheid: 10 Mbit/s
- Afmetingen: 40 x 60 mm [1,6 x 2,4 inch]
De lezer is een near-field apparaat, geen echte radio. De manier waarop de lezer werkt, is niet door het verzenden en ontvangen van radiosignalen, maar door het detecteren van kleine veranderingen in de impedantie van het afgestemde antennecircuit die worden veroorzaakt door de RFID-tag die het afgestemde circuit moduleert. Beweeg de RFID-tag uit het nabije veld van de antenne en er is geen effect om te meten. De lezer is niet echt een ontvanger, maar een versterkte versie van de fluctuaties van de gemiddelde uitgangsspanning in het afgestemde circuit.
De pinout van de lezer

De voedingsspanning is 3,3 V! Sluit geen 5V aan op deze pin, anders kunt u het apparaat beschadigen!
De lezer gebruikt de SPI-interface om met een microcontroller te communiceren.
Interrupt IRQ pin bevindt zich de hele tijd in de HIGH staat, en wanneer de interruptgebeurtenis plaatsvindt, verandert de staat ervan gedurende een korte periode in LOW. De interruptgebeurtenis vindt plaats wanneer de RFID-tag wordt gedetecteerd in het near-field van de lezer.
Hoe de Arduino IDE in te stellen
Als u de Arduino IDE nog niet hebt geïnstalleerd, kunt u dit als volgt doen. Ga naar de link: https://www.arduino.cc/en/Main/Software en download het installatiebestand voor uw besturingssysteemplatform.

Voor Windows dubbelklikt u op het gedownloade ".exe" bestand en volgt u de instructies in het installatievenster.
Voor Linux downloadt u het bestand met de extensie ".tar.xz", dat u vervolgens moet uitpakken. Wanneer u het uitpakt, gaat u naar de uitgepakte map en opent u de terminal in die map. U moet twee ".sh" scripts uitvoeren, eerst "arduino-linux setup.sh", en ten tweede "install.sh".
Om het eerste script in de terminal uit te voeren, voert u de volgende opdracht uit:
sh arduino-linux-setup.sh user_name
user_name - is de naam van de supergebruiker in het Linux-besturingssysteem. Hierna wordt u gevraagd om het wachtwoord voor de supergebruiker op te geven. Wacht een paar minuten totdat het script alles heeft voltooid.
Na de installatie van het eerste script, voert u het tweede script genaamd "install.sh" uit. Voer in de terminal de volgende opdracht uit:
sh install.sh
Na de installatie van deze scripts gaat u naar Alle apps om de geïnstalleerde Arduino IDE te vinden.

De volgende stap is om te controleren of uw pc het ATmega328p-bord kan detecteren. Open de vers geïnstalleerde Arduino IDE en ga naar:
Tools > Board > {your board name here}
{your board name here} moet de Arduino/Genuino Uno zijn, zoals u kunt zien op de afbeelding hieronder:

Hierna moet u de poort selecteren waarop het microcontrollerbord is aangesloten. Ga naar: Tools > Port > {port name goes here}
Als u het ATmega328p-bord op de USB-poort hebt aangesloten, moeten er verschillende poortnamen zijn. Omdat we de Arduino IDE op Windows gebruiken, zijn de poortnamen zoals op de afbeelding hieronder:

Voor Linux-gebruikers is de poortnaam "/dev/ttyUSBx" bijvoorbeeld, waarbij "x" een specifiek geheel getal tussen 0 en bijvoorbeeld 9 vertegenwoordigt.
De lezer verbinden met ATmega328p
Sluit de lezer aan op de ATmega328p zoals weergegeven in het verbindingsschema hieronder:

| Module pin | > ATmega328p pin | |
| 3.3V | > 3.3V! | Rode draad |
| RST | > D9 | Paarse draad |
| GND | > GND | Zwarte draad IRQ |
| > D2 | Oker draad | |
| MISO | > D12 | Oranje draad |
| MOSI | > D11 | Groene draad |
| SCK | > D13 | Blauwe draad |
| SDA (SS) | > D10 | Grijze draad |
De bibliotheek voor Arduino IDE
Om de module met ATmega328p te gebruiken, wordt aanbevolen om de bibliotheek ervoor te downloaden en te installeren. Open Arduino IDE en ga naar: Tools > Manage Libraries. Er wordt een nieuw venster geopend, typ "RFID 522" in het zoekvak en installeer de bibliotheek genaamd "MFRC522" gemaakt door "GithubCommunity", zoals weergegeven op de afbeelding hieronder:

Bij de bibliotheek worden veel voorbeeldsketches geleverd. We zullen een voorbeeldsketch gebruiken, genaamd "MinimalInterrupt". Om het te openen, gaat u naar:
File > Examples > MFRC522 > MinimalInterrupt
Sketch voorbeeld


Wanneer u de sketch uploadt naar de ATmega328p, opent u Serial Monitor (Tools > Serial Monitor). De uitvoer moet eruitzien als de uitvoer op de afbeelding hieronder:

Wanneer u een RFID-kaart of -chip in de buurt van de lezer brengt, vindt er een interrupt plaats en wordt het UID-nummer van de kaart/chip naar de seriële monitor verzonden.
Aan het begin van de sketch worden twee bibliotheken geïmporteerd, SPI voor de SPI-interface en MFRC522 voor de RFID-lezer. Vervolgens worden drie macro's gemaakt, één voor het reset-pinnummer, een tweede voor het slave select-pinnummer en een laatste voor het interrupt-pinnummer.
Daarna worden het "mfrc522" object, dat de lezer in de software vertegenwoordigt, en de key variabele gemaakt. De key variabele wordt gebruikt om het UID-nummer van de specifieke kaart op te slaan.
Vervolgens wordt de bNewInt variabele gemaakt. Wanneer er een interrupt plaatsvindt, verandert de staat van de bNewInt variabele in true, wat aangeeft dat er een interrupt heeft plaatsgevonden. Vervolgens controleren we in de code de staat van de bNewInt variabele en printen we de bijbehorende uitvoer naar de seriële monitor (meer hierover later in de tekst).
Vervolgens maken we de regVal variabele, die wordt gebruikt om registers van de chip in de RFID-lezer in te stellen.
In de setup() functie stellen we eerst de seriële interface in met een baudrate van 9600. Daarna stellen we de SPI-interface in en initialiseren we het mfrc522 object.
Later geven we de MFRC522 lezerversie uit op de seriële monitor. Geldige nummers zijn 0x91 en 0x92.
Vervolgens stellen we de pinmodus van de interruptpin in op INPUT met interne PULL UP weerstand. Hierna koppelen we de interruptroutine met de volgende regel code:
attachInterrupt(digitalPinToInterrupt(IRQ_PIN), readCard, FALLING)
Waarbij het eerste argument een ingebouwde functie is:
digitalPinToInterrupt()
die de IRQ_PIN (digitale I/O-pin 2) instelt om te luisteren naar de interruptgebeurtenis. Het tweede argument is de functie die wordt uitgevoerd wanneer er een interrupt plaatsvindt. En het derde argument is de rand van het digitale signaal, dat de interruptgebeurtenis zelf vertegenwoordigt.
Voor het doel van dit voorbeeld gebruiken we de FALLING rand van het digitale signaal, dat op de IRQ_PIN komt, als interruptgebeurtenis. De waarde van dit argument kan ook RISING of BOTH zijn, maar dat gebruiken we niet in ons voorbeeld.
Aan het einde van de setup() functie wissen we verkeerde interruptmetingen met de volgende regels code:
do {; } while (!bNewInt);
bNewInt = false;
In de loop() functie is er één if statement, waarin we de staat van de bNewInt variabele controleren. Als de bNewInt staat true is, dan heeft er een interrupt plaatsgevonden en printen we de uitvoer naar de seriële monitor. De uitvoer bevat het bericht "Interrupt. Card UID: number", waarbij number het UID-nummer is van de RFID-kaart die de interrupt heeft veroorzaakt. Aan het einde van de if statement stellen we de bNewInt variabele in op false.
Aan het einde van de loop() functie stellen we de registers van de lezerchip opnieuw in en wachten we 100 milliseconden.
Na de loop() functie maken we de readCard() functie, die wordt uitgevoerd wanneer de interrupt plaatsvindt. In de readCard() functie stellen we alleen de staat van de bNewInt variabele in op true. Hierna maken we drie functies die worden gebruikt om de registers van de lezerchip in te stellen en om met de lezer te communiceren.
De lezer verbinden met Raspberry Pi
Verbind de lezer met Raspberry Pi zoals weergegeven in het onderstaande aansluitschema:

| Module pin | > Raspberry Pi pin | |
| SDA (SS) | > GPIO8 [pin 24] | Gray wire SCK |
| > GPIO11 [pin 23] | Blue wire | |
| MOSI | > GPIO10 [pin 19] | Green wire |
| MISO | > GPIO9 [pin 21] | Orange wire |
| IRQ | > GPIO24 [pin 18] | Ochre wire |
| GND | > GND [pin 25] | Black wire |
| RST | > GPIO25 [pin 22] | Purple wire |
| 3.3V | > 3V3 [pin 1] | Red wire |
De bibliotheek voor Python
Om de lezer met de Raspberry Pi te kunnen gebruiken, wordt aanbevolen een bibliotheek voor Python te downloaden. De bibliotheek die we gaan gebruiken heet "pi rc522". Om deze bibliotheek te installeren, opent u een terminal en voert u de volgende commando's een voor een uit:
sudo apt-get update
sudo apt-get upgrade
sudo pip3 install pi-rc522
Nu zijn we klaar om een Python-script te gaan maken.
Python-script

Sla het script op onder de naam "rfid.py" in de standaard scriptdirectory. Om het script uit te voeren, opent u een terminal in de directory waar u het script hebt opgeslagen en voert u het volgende commando uit:
python3 rfid.py
De output zou eruit moeten zien zoals de output op de onderstaande afbeelding:

Om het script te beëindigen, drukt u op "CTRL + C".
Aan het begin van het script importeren we twee bibliotheken, een genaamd pirc522 die we net hebben geïnstalleerd en de andere voor tijd.
Vervolgens maken we een reader-object met de volgende regel code:
reader = RFID()
U kunt de SDA-pin van de lezer aansluiten op CE1 (GPIO7 [pin 26]) in plaats van CE0 (GPIO8 [pin 24]). Wanneer u dat doet, moet u een reader-object maken met de volgende regel code:
reader = RFID(bus=0, device=1)
U kunt ook de RST-pin aansluiten op een andere vrije GPIO-pin. Als u dit doet, moet u een reader-object maken met de volgende regel code: reader = RFID(pin_rst=number)
Waarbij number het Raspberry Pi board pin-nummer is (niet het GPIO-nummer, maar het pin-nummer).
Verder kunt u de IRQ-pin aansluiten op een andere vrije GPIO-pin. Als u dit doet, moet u een reader-object maken met de volgende regel code: reader = RFID(pin_irq=number)
Waarbij number het Raspberry Pi board pin-nummer is (niet het GPIO-nummer, maar het pin-nummer).
Hierna maken we een lijst genaamd keys waar we nieuwe UID-sleutels opslaan. Ook maken we een boolean variabele genaamd key_read die wordt gebruikt om te controleren of de sleutel al in de keys-lijst staat.
Vervolgens maken we een try-except-finally blok. We doen dit om een toetsenbordinterruptie te detecteren. Een toetsenbordinterruptie treedt op wanneer we op het toetsenbord op CTRL + C drukken. Het finally-gedeelte van het try-except-finally-blok wordt gebruikt om de GPIO-pinnen van alle gebruikte interfaces of gedefinieerde pinmodi op te schonen na een toetsenbordinterruptie.
In het try-gedeelte van het try-except-finally-blok maken we een oneindige lus (while True:). In deze lus wachten we eerst tot er een tag wordt gedetecteerd. Wanneer een tag wordt gedetecteerd, treedt er een interruptie op op IRQ_PIN. Wanneer een interruptie optreedt, kunnen we de taggegevens lezen.
De functie reader.request() retourneert een tuple van twee elementen. Het eerste element is een boolean waarde die een fout vertegenwoordigt (True er is een fout, False er is geen fout), en het tweede element vertegenwoordigt het type tag (dat we niet in het script gebruiken).
Vervolgens controleren we of er een fout is. Als er geen fouten zijn, gaan we verder met het lezen van de UID van de tag.
De functie reader.anticoil() retourneert een tuple van twee elementen. Het eerste element is een boolean waarde die een fout vertegenwoordigt (True er is een fout, False er is geen fout), en het tweede element is het UID-nummer van de tag.
Dan controleren we nogmaals of er een fout is opgetreden tijdens het lezen van de UID. Als er geen fouten zijn, gaan we verder met het controleren of het UID-nummer al in de keys-lijst staat. Als het UID-nummer niet in de keys-lijst staat, voegen we een nieuw nummer toe en printen we het bericht "New tag detected! UID: number" (Nieuwe tag gedetecteerd! UID: nummer), waarbij number het UID-nummer van de tag is. Als het UID-nummer van de tag in de keys-lijst staat, printen we het bericht "Already detected that tag!" (Die tag al gedetecteerd!).
Wanneer we klaar zijn met het lezen van de gegevens die door de lezer zijn verzonden, moeten we de volgende functie uitvoeren:
reader.stop_crypto()
Aan het einde van het oneindige lusblok roepen we sleep(0.1) aan, ofwel een wachttijdinterval van 100 milliseconden, een wachttijdinterval tussen twee lussen van het oneindige lusblok.
U hebt het gedaan!
Nu kunt u uw module gebruiken voor verschillende projecten.
Veiligheidsinstructies
Hoewel ons product voldoet aan de vereisten van de RoHS-richtlijn (2011/65/EU) en geen gevaarlijke stoffen bevat in hoeveelheden boven de toegestane limieten, kunnen er nog steeds residuen aanwezig zijn. Neem de volgende veiligheidsinstructies in acht om chemische risico's te vermijden:
Solderen kan dampen produceren die schadelijk kunnen zijn voor de gezondheid.
Opmerking: Gebruik een soldeerdampafzuiging of werk in een goed geventileerde ruimte. Draag indien nodig een ademhalingsmasker.
Sommige mensen kunnen gevoelig zijn voor bepaalde materialen of chemicaliën in het product.
Opmerking: Als huidirritatie of allergische reacties optreden, stop dan het gebruik en raadpleeg indien nodig een arts.
Houd het product buiten het bereik van kinderen en huisdieren om accidenteel contact en inslikken van kleine onderdelen te voorkomen.
Opmerking: Bewaar het product in een veilige, afgesloten container wanneer het niet in gebruik is.
Let op: Vermijd contact van het product met voedsel en drank.
Opmerking: Bewaar of gebruik het product niet in de buurt van voedsel om besmetting te voorkomen.
Het product bevat gevoelige elektronische componenten en scherpe randen. Onjuiste behandeling of montage kan leiden tot letsel of schade. Neem de volgende veiligheidsinstructies in acht om mechanische risico's te vermijden:
Let op: De printplaat en connectoren van het product kunnen scherpe randen hebben. Wees voorzichtig om snijwonden te voorkomen.
Opmerking: Draag geschikte beschermende handschoenen bij het hanteren en monteren van het product.
Vermijd overmatige druk of mechanische spanning op de printplaat en componenten.
Opmerking: Monteer het product alleen op stabiele en vlakke oppervlakken. Gebruik geschikte afstandsstukken en behuizingen om mechanische spanning te minimaliseren.
Let op: Zorg ervoor dat het product stevig is bevestigd om onbedoeld uitglijden of vallen te voorkomen.
Opmerking: Gebruik geschikte ondersteuning of veilige montage in behuizingen of op montageplaten.
Zorg ervoor dat alle kabelverbindingen veilig en correct zijn aangesloten om spanning en onbedoeld loskoppelen te voorkomen.
Opmerking: Leid kabels zo dat ze niet onder spanning staan en geen struikelgevaar vormen.
Het product werkt met elektrische spanningen en stromen die, indien onjuist gebruikt, kunnen leiden tot elektrische schokken, kortsluiting of andere gevaren. Neem de volgende veiligheidsinstructies in acht om elektrische risico's te vermijden:
Let op: Gebruik het product alleen met de gespecificeerde spanningen.
Opmerking: De prestatielimieten van het product zijn te vinden in het bijbehorende gegevensblad.
Vermijd kortsluiting tussen de connectoren en componenten van het product.
Opmerking: Zorg ervoor dat geen geleidende objecten de printplaat aanraken of overbruggen. Gebruik geïsoleerd gereedschap en let op de rangschikking van verbindingen.
Voer geen werkzaamheden aan het product uit wanneer het is aangesloten op een stroombron.
Opmerking: Koppel het product los van de stroomvoorziening voordat u circuitwijzigingen aanbrengt of componenten aansluit of verwijdert.
Overschrijd de gespecificeerde stroomwaarden voor de in- en uitgangen van het product niet.
Opmerking: De prestatielimieten van het product zijn te vinden in de technische specificaties of in het gegevensblad.
Let op: Zorg ervoor dat de gebruikte stroombronnen stabiel zijn en correct zijn gedimensioneerd.
Opmerking: Gebruik alleen geteste en geschikte voedingen om spanningsschommelingen en overbelasting te voorkomen.
Let op: Houd voldoende afstand van onder spanning staande delen om accidenteel contact te vermijden.
Opmerking: Zorg ervoor dat de bekabeling veilig en duidelijk is gerangschikt volgens de gebruikte spanning.
Gebruik isolerende behuizingen of beschermkappen om het product te beschermen tegen direct contact.
Opmerking: Plaats het product in een niet-geleidende behuizing om accidenteel aanraken en kortsluiting te voorkomen.
Het product en de componenten erop kunnen tijdens het gebruik warm worden. Onjuiste behandeling of overbelasting van het product kan leiden tot brandwonden, schade of brand. Neem de volgende veiligheidsinstructies in acht om thermische risico's te vermijden:
Zorg ervoor dat het product wordt gebruikt binnen de aanbevolen bedrijfstemperaturen.
Opmerking: Het aanbevolen bedrijfstemperatuurbereik ligt doorgaans tussen -40°C en +85°C. Controleer de specifieke informatie in het productgegevensblad.
Let op: Plaats het product niet in de buurt van externe warmtebronnen zoals radiatoren of direct zonlicht.
Opmerking: Zorg ervoor dat het product wordt gebruikt in een koele en goed geventileerde ruimte.
Let op: Zorg ervoor dat het product goed geventileerd is om oververhitting te voorkomen.
Opmerking: Gebruik ventilatoren of koellichamen wanneer u het product in een gesloten behuizing of in een omgeving met beperkte luchtcirculatie gebruikt.
Let op: Monteer het product op hittebestendige oppervlakken en in hittebestendige behuizingen.
Opmerking: Gebruik behuizingsmaterialen die bestand zijn tegen hoge temperaturen om schade of brandgevaar te voorkomen.
Implementeer temperatuurbewaking bij gebruik van een behuizing en, indien nodig, beschermingsmechanismen die het product uitschakelen als het oververhit raakt.
Opmerking: Gebruik temperatuursensoren en geschikte software om de temperatuur van het product te bewaken en het systeem indien nodig uit te schakelen.
Vermijd overbelasting die overmatige verhitting van componenten kan veroorzaken.
Opmerking: Overschrijd de gespecificeerde stroom- en spanningslimieten niet om oververhitting te voorkomen.
Kortsluiting kan aanzienlijke warmte genereren en brand veroorzaken.
Opmerking: Zorg ervoor dat alle verbindingen correct en veilig zijn en dat geen geleidende objecten per ongeluk kortsluiting kunnen veroorzaken.
Nu is het tijd om te leren en de projecten zelf te maken. U kunt dat doen met behulp van vele voorbeeldscripts en andere tutorials, die u op internet kunt vinden.
Als u op zoek bent naar hoogwaardige micro-elektronica en accessoires, dan is AZ-Delivery Vertriebs GmbH het juiste bedrijf om ze bij te betrekken. U krijgt tal van toepassingsvoorbeelden, volledige installatiehandleidingen, e-boeken, bibliotheken en assistentie van onze technische experts.
https://az-delivery.de
Veel plezier!
Impressum
https://az-delivery.de/pages/about-us
Referenties
https://www.arduino.cc/en/Main/Software
AZ-Delivery - Uw expert voor micro-elektronica
Impressum / Disclaimer
Download handleiding
Hier kunt u de volledige pdf-versie van de handleiding downloaden. Deze kan aanvullende veiligheidsinstructies, garantie-informatie, FCC-regels, enz. bevatten.
Download AZ-Delivery RFID RC522 Handleiding