Arduino - RFID/NFC - Relay

In deze tutorial gaan we leren hoe u een RFID/NFC-tag gebruikt om een relais te activeren met Arduino. U kunt deze tutorial uitbreiden door het relais te gebruiken om een motor, actuator of ander apparaat te besturen...

Hardware Vereist

1×Arduino Uno R3
1×USB 2.0-kabel type A/B
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×RFID Kaart
1×Relais
10×Jumper Draden
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 RFID/NFC RC522 Module en Relais

Als u nog niet bekend bent met de RFID/NFC RC522 module en relais (pinout, werking, programmeren ...), leer er meer over in de volgende tutorials:

Arduino arduino rfid relay component

Hoe Het Werkt

  • De UIDs van sommige RFID/NFC-tags zijn vooraf ingesteld in de Arduino code
  • De gebruiker houdt een RFID/NFC-tag tegen de RFID/NFC-lezer
  • De lezer leest de UID van de tag
  • Arduino ontvangt de UID van de lezer
  • Arduino vergelijkt de gelezen UID met de vooraf gedefinieerde UIDs
  • Als de UID overeenkomt met één van de vooraf ingestelde UIDs, activeert Arduino het relais

Bedradingsschema

Arduino RFID RC522 relay wiring diagram

This image is created using Fritzing. Click to enlarge image

Om de installatie te vereenvoudigen, zijn de pinnen van de RC522-module direct aangesloten op de pinnen van de Arduino. Dit kan echter leiden tot het stoppen van de Arduino in bepaalde situaties, omdat de outputpinnen van de Arduino 5V leveren terwijl de pinnen van de RC522-module ontworpen zijn voor 3,3V. Het is daarom aan te raden om de spanning tussen de Arduino-pinnen en de RC522-modulepinnen te reguleren. Raadpleeg voor meer informatie de Arduino - RFID RC522 tutorial. Het onderstaande schema toont hoe u weerstanden kunt gebruiken om 5V naar 3,3V te verlagen:

Arduino RFID RC522 with voltage regulated wiring diagram

This image is created using Fritzing. Click to enlarge image

※ Notiz:

De volgorde van pinnen kan verschillen per fabrikant. Gebruik ALTIJD de labels die op de module zijn gedrukt. De bovenstaande afbeelding toont de pinout van modules van de fabrikant DIYables.

Arduino Code - Enkel RFID/NFC Tag

/* * 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-relay */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 5 #define RELAY_PIN A5 // the Arduino pin connects to relay MFRC522 rfid(SS_PIN, RST_PIN); byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // deactivate the relay 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); if (rfid.uid.uidByte[0] == authorizedUID[0] && rfid.uid.uidByte[1] == authorizedUID[1] && rfid.uid.uidByte[2] == authorizedUID[2] && rfid.uid.uidByte[3] == authorizedUID[3] ) { Serial.println("Authorized Tag"); digitalWrite(RELAY_PIN, HIGH); // activate the relay for 2 seconds delay(2000); digitalWrite(RELAY_PIN, LOW); // deactivate the relay } else { Serial.print("Unauthorized Tag with 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

Omdat de UID meestal niet op de RFID/NFC-tag is geprint, is de eerste stap om de UID van de tag te achterhalen. Dit doet u als volgt:

  • Kopieer de bovenstaande code en open deze in de Arduino IDE
  • Klik op de Upload knop in Arduino IDE om de code naar Arduino te uploaden
  • Open de Seriële Monitor
  • Houd een RFID/NFC-tag tegen de RFID-RC522 module
  • Lees de UID af in de Seriële Monitor
COM6
Send
Tap RFID/NFC tag on reader Unauthorized Tag with UID: 3A C9 6A CB
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Na het verkrijgen van de UID:

  • Werk de UID bij in regel 18 van de bovenstaande code. Bijvoorbeeld, verander byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; naar byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Upload de code opnieuw naar Arduino
  • Houd een RFID/NFC-tag tegen de RFID-RC522 module
  • Bekijk de output in de Seriële Monitor
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Houd een andere RFID/NFC-tag tegen de RFID-RC522 module
  • Bekijk de output in de Seriële Monitor
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag Unauthorized Tag with UID: BD 1E 1D 00
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

  • Om het testen makkelijker te maken, is de actieve tijd ingesteld op 2 seconden, dit moet in praktijk/demonstratie langer worden gemaakt
  • De MFRC522 library moet geïnstalleerd zijn. Zie Arduino - RFID/NFC RC522 tutorial

Arduino Code - Meerdere RFID/NFC Tags

We kunnen meerdere RFID/NFC-tags toestaan om het relais te activeren. De onderstaande code gebruikt twee tags als voorbeeld.

/* * 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-relay */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 5 #define RELAY_PIN A5 // the Arduino pin connects to relay MFRC522 rfid(SS_PIN, RST_PIN); byte authorizedUID1[4] = {0x3A, 0xC9, 0x6A, 0xCB}; byte authorizedUID2[4] = {0x30, 0x01, 0x8B, 0x15}; void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // deactivate the relay 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); if (rfid.uid.uidByte[0] == authorizedUID1[0] && rfid.uid.uidByte[1] == authorizedUID1[1] && rfid.uid.uidByte[2] == authorizedUID1[2] && rfid.uid.uidByte[3] == authorizedUID1[3] ) { Serial.println("Authorized Tag 1"); digitalWrite(RELAY_PIN, HIGH); // activate the relay for 2 seconds delay(2000); digitalWrite(RELAY_PIN, LOW); // deactivate the relay } else if (rfid.uid.uidByte[0] == authorizedUID2[0] && rfid.uid.uidByte[1] == authorizedUID2[1] && rfid.uid.uidByte[2] == authorizedUID2[2] && rfid.uid.uidByte[3] == authorizedUID2[3] ) { Serial.println("Authorized Tag 2"); digitalWrite(RELAY_PIN, HIGH); // activate the relay for 2 seconds delay(2000); digitalWrite(RELAY_PIN, LOW); // deactivate the relay } else { Serial.print("Unauthorized Tag with 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 } } }

Voer dezelfde stappen uit als hierboven, en houd vervolgens één voor één tags tegen de RFID-RC522 module. Het resultaat in de Seriële Monitor ziet er ongeveer zo uit:

COM6
Send
Tap RFID/NFC tag on reader Authorized Tag 2 Authorized Tag 1
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

U kunt de bovenstaande code uitbreiden voor drie, vier of meer tags.

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.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en maakt het nog makkelijker om aan de slag te gaan.

※ 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!