Arduino Nano - RFID - Relay

Deze tutorial laat u zien hoe u een Arduino Nano en een RFID NFC RC522 module gebruikt om een relais te besturen. U kunt deze tutorial verder uitbreiden door het relais in te zetten voor het aansturen van motoren, actuatoren, deurvergrendelingen, lampen en meer.

Hardware Vereist

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB kabel
1×RFID/NFC RC522 Kit (lezer + tags)
1×RFID Key Fob
1×RFID Kaart
1×Relais
10×Jumper Draden (man-man)
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

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 onbekend bent met de RFID/NFC RC522 Module en relais (pinout, werking, programmeren...), kunt u meer informatie vinden in de volgende tutorials:

Arduino Nano arduino rfid relay component

Hoe Het Werkt

  • De RFID/NFC lezer leest de UID van de tag wanneer een gebruiker deze tegen de lezer houdt.
  • Arduino Nano ontvangt vervolgens deze UID van de lezer.
  • Arduino vergelijkt deze UID met vooraf gedefinieerde UIDs in de Arduino Nano code.
  • Als de UID overeenkomt met een van de vooraf ingestelde UIDs, activeert Arduino Nano het relais.

Bedradingsschema

Arduino Nano RFID RC522 relay wiring diagram

This image is created using Fritzing. Click to enlarge image

Om de aansluiting te vereenvoudigen, zijn de pinnen van de RC522 module direct verbonden met de pinnen van de Arduino. In sommige gevallen kan dit echter leiden tot storing in Arduino, omdat de uitgangspinnen 5V leveren, terwijl de pinnen van de RC522 module normaal gesproken op 3,3 V werken. Daarom is het raadzaam om de spanning tussen de Arduino en het RC522 module te reguleren. Voor meer details kunt u de Arduino Nano - RFID RC522 tutorial raadplegen. Hieronder ziet u hoe u 5V naar 3,3V reguleert met behulp van weerstanden:

Arduino Nano RFID RC522 with voltage regulated wiring diagram

This image is created using Fritzing. Click to enlarge image

※ Notiz:

De pinindeling kan verschillen afhankelijk van de fabrikant. Raadpleeg ALTIJD de labels op het module zelf. De bovenstaande afbeelding toont de pinout van modules van de fabrikant DIYables.

Arduino Nano Code - Enkele RFID/NFC Tag

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-rfid-relay */ #include <SPI.h> #include <MFRC522.h> #define RC522_SS_PIN 10 // The Arduino Nano pin connected to RC522's SS pin #define RC522_RST_PIN 5 // The Arduino Nano pin connected to RC522's RST pin #define RELAY_PIN A5 // The Arduino Nano pin connected to relay MFRC522 rfid(RC522_SS_PIN, RC522_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

Om de UID van een RFID/NFC tag te ontdekken, uploadt u eerst de code naar Arduino Nano en opent u de Seriële Monitor. Houd vervolgens de tag tegen de RFID-RC522 module en bekijk de UID in de Seriële Monitor.

COM6
Send
Houd RFID/NFC tag voor de lezer Unauthorized Tag with UID: 3A C9 6A CB
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Nadat u de UID hebt gelezen:

  • Pas regel 18 in de code aan naar de gevonden UID, bijvoorbeeld verander byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; in byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Upload de aangepaste code naar de Arduino Nano
  • Houd een RFID/NFC tag voor de RFID-RC522 module
  • Bekijk de output in de Seriële Monitor
COM6
Send
Houd RFID/NFC tag voor de lezer Authorized Tag
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Plaats een RFID/NFC tag op de RFID-RC522 module en observeer het resultaat op de Seriële Monitor.
COM6
Send
Houd RFID/NFC tag voor de lezer Authorized Tag Unauthorized Tag with UID: BD 1E 1D 00
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

  • Om het testen eenvoudig te houden, is de aktieve tijd ingesteld op 2 seconden; voor praktisch gebruik of demonstraties dient deze verlengd te worden.
  • De MFRC522 bibliotheek moet geïnstalleerd zijn. Voor meer informatie zie de Arduino Nano - RFID/NFC RC522 tutorial.

Arduino Nano Code - Meerdere RFID/NFC Tags

Het is mogelijk om het relais te activeren met meerdere RFID/NFC tags. Hier worden ter illustratie twee tags gebruikt.

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-rfid-relay */ #include <SPI.h> #include <MFRC522.h> #define RC522_SS_PIN 10 // The Arduino Nano pin connected to RC522's SS pin #define RC522_RST_PIN 5 // The Arduino Nano pin connected to RC522's RST pin #define RELAY_PIN A5 // The Arduino Nano pin connected to relay MFRC522 rfid(RC522_SS_PIN, RC522_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 } } }

Herhaal de eerder genoemde stappen en houd vervolgens elke tag voor de RFID-RC522 module. De output in de Seriële Monitor zal als volgt zijn:

COM6
Send
Houd RFID/NFC tag voor de lezer Authorized Tag 2 Authorized Tag 1
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

U kunt de bovenstaande code uitbreiden om drie, vier of meer tags toe te voegen.

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!