Arduino - RFID - Elektromagnetisch Slot

In deze tutorial leert u hoe u een op RFID gebaseerd deurslot maakt met behulp van Arduino, de RC522 RFID-reader en een elektromagnetisch slot.

Over RFID/NFC RC522 Module en Elektromagnetisch Slot

Als u nog niet bekend bent met de RFID/NFC RC522-module en het elektromagnetisch slot (pinout, werking, programmering ...), leer er dan meer over in de volgende tutorials:

Bedradingsschema

Arduino RFID RC522 elektromagnetisch slot bedradingsschema

This image is created using Fritzing. Click to enlarge image

Om de opstelling eenvoudiger te maken, zijn de pinnen van de RC522-module rechtstreeks verbonden met de Arduino-pinnen. Deze directe verbinding kan echter problemen geven, omdat de uitgangspinnen van de Arduino 5V leveren, terwijl de RC522-module bedoeld is voor 3,3V werking. Het verdient aanbeveling om de spanning tussen de Arduino-pinnen en de RC522-module te reguleren om mogelijke problemen te voorkomen. Raadpleeg voor meer gedetailleerde instructies de Arduino - RFID RC522 tutorial. Het onderstaande schema toont hoe weerstanden kunnen worden gebruikt om de 5V naar 3,3V te verlagen:

Arduino RC522 module met spanningsregelaar bedradingsschema

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 fabrikant DIYables.

Arduino Code - Enkele RFID 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-electromagnetic-lock */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 5 #define RELAY_PIN A5 // The Arduino pin that controls the electromagnetic lock via 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 electromagnetic lock => locked Serial.println("Tap RFID 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, LOW); // deactivate the electromagnetic lock => unlocked delay(2000); digitalWrite(RELAY_PIN, HIGH); // activate the electromagnetic lock => locked } else { Serial.print("Unauthorized Tag:"); 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 UID meestal niet op de RFID-tag staat, is de eerste stap deze te achterhalen. Dit doet u als volgt:

  • Kopieer de bovengenoemde code en open deze in de Arduino IDE
  • Klik op de Upload knop in Arduino IDE om de code naar de Arduino te uploaden
  • Open de Serial Monitor
  • Houd een RFID-tag tegen de RFID-RC522 module
  • Lees de UID uit op de Serial Monitor
COM6
Send
Houd RFID Tag tegen lezer Unauthorized Tag: 51 3D C1 AC
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Nadat u de UID heeft:

  • Pas de UID aan op regel 18 in de bovenstaande code. Bijvoorbeeld, wijzig byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; naar byte authorizedUID[4] = {0x51, 0x3D, 0xC1, 0xAC};
  • Upload de code opnieuw naar de Arduino
  • Houd een RFID-tag tegen de RFID-RC522 module
  • Bekijk de uitvoer in de Serial Monitor
COM6
Send
Houd RFID Tag tegen lezer Authorized Tag
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Houd een andere RFID-tag tegen de RFID-RC522 module
  • Bekijk de uitvoer in de Serial Monitor
COM6
Send
Houd RFID Tag tegen lezer Authorized Tag Unauthorized Tag: 5D 11 1A D3
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Arduino Code - Meerdere RFID Tags

U kunt meerdere RFID/NFC-tags toestaan om het elektromagnetisch slot 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-electromagnetic-lock */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 5 #define RELAY_PIN A5 // The Arduino pin that controls the electromagnetic lock via relay MFRC522 rfid(SS_PIN, RST_PIN); byte authorizedUID1[4] = {0x51, 0x3D, 0xC1, 0xAC}; 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 electromagnetic lock => locked Serial.println("Tap RFID 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, LOW); // deactivate the electromagnetic lock => unlocked delay(2000); digitalWrite(RELAY_PIN, HIGH); // activate the electromagnetic lock => locked } 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, LOW); // deactivate the electromagnetic lock => unlocked delay(2000); digitalWrite(RELAY_PIN, HIGH); // activate the electromagnetic lock => locked } else { Serial.print("Unauthorized Tag:"); 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 een tag tegen de RFID-RC522 module. De uitvoer in de Serial Monitor wordt dan als volgt weergegeven:

COM6
Send
Houd RFID Tag tegen lezer Authorized Tag 2 Authorized Tag 1
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!