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...
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:
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
Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
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:
Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
※ 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 relayMFRC522 rfid(SS_PIN, RST_PIN);byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF};voidsetup() {Serial.begin(9600);SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output.digitalWrite(RELAY_PIN, LOW); // deactivate the relaySerial.println("Tap RFID/NFC Tag on reader");}voidloop() {if (rfid.PICC_IsNewCardPresent()) { // new tag is availableif (rfid.PICC_ReadCardSerial()) { // NUID has been readedMFRC522::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 secondsdelay(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
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Tap RFID/NFC tag on reader
Unauthorized Tag with UID: 3A C9 6A CB
Ln 11, Col 1
Arduino Uno on COM15
2
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
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Tap RFID/NFC tag on reader
Authorized Tag
Ln 11, Col 1
Arduino Uno on COM15
2
Houd een andere RFID/NFC-tag tegen de RFID-RC522 module
Bekijk de output in de Seriële Monitor
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Tap RFID/NFC tag on reader
Authorized Tag
Unauthorized Tag with UID: BD 1E 1D 00
Ln 11, Col 1
Arduino Uno on COM15
2
※ Notiz:
Om het testen makkelijker te maken, is de actieve tijd ingesteld op 2 seconden, dit moet in praktijk/demonstratie langer worden gemaakt
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 relayMFRC522 rfid(SS_PIN, RST_PIN);byte authorizedUID1[4] = {0x3A, 0xC9, 0x6A, 0xCB};byte authorizedUID2[4] = {0x30, 0x01, 0x8B, 0x15}; voidsetup() {Serial.begin(9600);SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output.digitalWrite(RELAY_PIN, LOW); // deactivate the relaySerial.println("Tap RFID/NFC Tag on reader");}voidloop() {if (rfid.PICC_IsNewCardPresent()) { // new tag is availableif (rfid.PICC_ReadCardSerial()) { // NUID has been readedMFRC522::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 secondsdelay(2000);digitalWrite(RELAY_PIN, LOW); // deactivate the relay }elseif (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 secondsdelay(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:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Tap RFID/NFC tag on reader
Authorized Tag 2
Authorized Tag 1
Ln 11, Col 1
Arduino Uno on COM15
2
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.
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!