Arduino - RFID/NFC

In deze tutorial gaan we leren hoe u RFID/NFC gebruikt met Arduino. Het RFID/NFC-systeem bestaat uit twee componenten: een reader (lezer) en een tag (label). Er zijn twee populaire RFID/NFC-lezers: RC522 en PN532 RFID/NFC reader. Deze tutorial richt zich op de RC522 RFID/NFC reader. De PN532 RFID/NFC reader zal in een volgende tutorial aan bod komen.

De RC522 RFID/NFC reader (ook wel RFID-RC522 Module genoemd) kan:

Van deze mogelijkheden is voor Arduino het uitlezen van de UID het meest gebruikt. Deze tutorial richt zich op het uitlezen van de UID van een RFID/NFC tag. De overige functies komen aan bod in volgende tutorials.

Hardware Vereist

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×RFID/NFC RC522 Kit (lezer + tags)
1×RFID Sleutelhanger
1×RFID Kaart
1×Jumperdraden
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over de RFID-RC522 Module

RFID-RC522 Module Pinout

De RFID-RC522 heeft 8 pins, waarvan sommige algemene pinnen zijn, en anderen gedeeld worden onder drie communicatie-modi: SPI, I2C, UART. Er kan slechts één communicatie-modus tegelijk gebruikt worden. De pinnen zijn:

  • GND pin: moet verbonden worden met GND (0V)
  • VCC pin: moet verbonden worden met VCC (3,3V)
  • RST pin: is een reset- en power-down pin. Wanneer deze pin laag wordt, wordt een harde power-down ingeschakeld. Bij een stijgende flank wordt de module gereset.
  • IRQ pin: is een interrupt pin die de microcontroller kan waarschuwen wanneer een RFID tag binnen bereik komt.
  • MISO/SCL/TX pin: werkt als MISO bij SPI-interface, als SCL bij I2C-interface, en als TX bij UART-interface.
  • MOSI pin: werkt als MOSI bij SPI-interface.
  • SCK pin: werkt als SCK bij SPI-interface.
  • SS/SDA/RX pin: werkt als SS bij SPI-interface, als SDA bij I2C-interface, en als RX bij UART-interface.
RFID-RC522 Pinout

※ Notiz:

  • De volgorde van de pinnen kan verschillen per fabrikant. Gebruik ALTIJD de op de module geprinte labels. De bovenstaande afbeelding toont de pinout van de module van de fabrikant DIYables.
  • Verbind de VCC pin NIET met 5V. Dit zal waarschijnlijk uw module beschadigen.
  • De MFRC522 bibliotheek ondersteunt alleen SPI modus. Daarom gebruikt deze tutorial alleen SPI communicatie.

Hoe RFID/NFC Werkt

RFID/NFC bestaat uit twee componenten: reader (lezer) en tag (label).

  • De reader bevat een radiografisch frequentiemodule en een antenne die een hoogfrequente elektromagnetische veld produceert.
  • De tag is meestal een passief apparaat, wat betekent dat deze geen eigen stroombron nodig heeft. De tag bevat een microchip die informatie opslaat en verwerkt, en een antenne om signalen te ontvangen en te verzenden. De tag slaat de informatie op: UID (Unique ID - unieke identificatiecode) en data.
arduino rfid nfc system

Om de informatie op een tag uit te lezen, moet de tag zich dicht bij de reader bevinden (er is geen direct zichtlijn vereist). Het uitleesproces is als volgt:

  • De reader genereert een elektromagnetisch veld waardoor elektronen door de antenne van de tag bewegen en zodoende de chip van stroom voorzien.
  • De chip in de tag reageert door de gevraagde informatie terug te sturen naar de reader in de vorm van een radiosignaal.
  • De reader detecteert het signaal en zet het om in data.
  • Arduino leest de data van de reader uit.

Verbindingsschema tussen RFID-RC522 Module en Arduino

De RFID-RC522 Module is ontworpen om te werken op 3,3V, terwijl de output pinnen van een Arduino een 5V niveau leveren. Daarom:

  • Voor de veiligheid moet de 5V uitgang van de Arduino pinnen gereguleerd worden naar 3,3V voordat deze met de RC522 Module verbonden worden.
  • Voor eenvoudige tests kan de Arduino direct aangesloten worden op de RC522 Module, maar dit kan ertoe leiden dat de Arduino soms niet correct werkt.

In deze tutorial worden twee verschillende aansluitingen getoond:

  • Verbindingsschema tussen RC522 en Arduino zonder spanningsregelaar
Arduino RFID RC522 wiring diagram

This image is created using Fritzing. Click to enlarge image

  • Verbindingsschema tussen RC522 en Arduino met spanningsregelaar
Arduino RFID RC522 with voltage regulated wiring diagram

This image is created using Fritzing. Click to enlarge image

Zoals te zien is in het schema boven, worden weerstanden van 1 kOhm en 2 kOhm gebruikt om 5V te verlagen naar 3,3V. Het is niet nodig om de spanning te verlagen tussen de Arduino pin en de MISO pin van de RC522 module. Echter, het is wel noodzakelijk om de spanning te regelen tussen de Arduino pinnen en de SS, SCK, MOSI en RST pinnen van de RC522 module.

Verbindings tabel van RFID/NFC RC522 Module en Arduino

RFID/NFC RC522 Arduino
SS → 10
SCK → 13
MOSI → 11
MISO → 12
IRQ(niet verbonden)
GNDGND
RST → 5
VCC → 3.3V

Arduino RFID/NFC Code

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-rfid-nfc */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 5 MFRC522 rfid(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 Serial.println("Tap RFID/NFC Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); //Serial.print("RFID/NFC Tag Type: "); //Serial.println(rfid.PICC_GetTypeName(piccType)); // print NUID in Serial Monitor in the hex format Serial.print("UID:"); for (int i = 0; i < rfid.uid.size; i++) { Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(rfid.uid.uidByte[i], HEX); } Serial.println(); rfid.PICC_HaltA(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } } }

Snelle Stappen

  • Navigeer naar het Libraries-icoon in de linkerbalk van de Arduino IDE.
  • Zoek op “MFRC522”, en vind de bibliotheek van GithubCommunity.
  • Klik op de Installeren-knop om de MFRC522 bibliotheek te installeren.
Arduino MFRC522 library
  • Kopieer de bovenstaande code en open deze in de Arduino IDE.
  • Klik op de Upload-knop in de Arduino IDE om de code naar de Arduino te uploaden.
  • Open de Serial Monitor.
  • Houd meerdere RFID/NFC tags tegen de RFID-RC522 module.
  • Bekijk de UID op de Serial Monitor.
COM6
Send
Tap RFID/NFC tag on reader RFID/NFC tag Type: MIFARE 1KB UID: 3A C9 6A CB RFID/NFC tag Type: MIFARE Ultralight or Ultralight C UID: 04 64 34 5A 1E 4E 80
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!