Arduino Nano - RFID - Servo Motor

Deze handleiding legt uit hoe u een Arduino Nano en een RFID NFC RC522 module kunt gebruiken om een servo motor te besturen. De werking verloopt als volgt:

Dit kan bijvoorbeeld gebruikt worden om een kast, lade, deur te beveiligen of om een voerautomaat voor huisdieren te openen en sluiten...

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×Servomotor
1×5V Voedingsadapter
1×Jumper Draden
1×(optioneel) DC stroomaansluiting
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 Servo Motor

Als u niet bekend bent met de RFID/NFC RC522 Module en Servo Motor (inclusief pinout, werking en programmering), kunt u meer informatie vinden in de volgende tutorials:

Arduino Nano arduino rfid servo motor component

Hoe Het Werkt

  • De Arduino Nano code bevat enkele vooraf gedefinieerde UIDs van RFID/NFC-tags.
  • Wanneer de RFID/NFC-tag op de lezer wordt aangetikt, wordt de UID uitgelezen.
  • De Arduino Nano ontvangt de UID van de lezer.
  • Daarna vergelijkt de Arduino Nano de uitgelezen UID met de vooraf gedefinieerde UIDs.
  • Als de UID overeenkomt met een van de vooraf gedefinieerde UIDs, stuurt de Arduino Nano de servo motor naar 90°.
  • Wanneer de tag opnieuw wordt aangetikt, stuurt de Arduino Nano de servo motor terug naar 0°.
  • Dit proces wordt continu herhaald.

Bedradingsschema

Arduino Nano RFID RC522 servo motor wiring diagram

This image is created using Fritzing. Click to enlarge image

Voor de eenvoud wordt het bovenstaande bedradingsschema gebruikt voor test- of educatieve doeleinden en voor een servo motor met een klein koppel. We raden sterk aan om in de praktijk een externe voeding te gebruiken voor de servo motor. Hieronder ziet u een bedradingsschema waarin de servo motor op een externe voeding is aangesloten.

Arduino Nano RFID RC522 servo motor wiring diagram

This image is created using Fritzing. Click to enlarge image

Bedrading met RFID RC522 module

Om het aansluitproces te vereenvoudigen zijn de pinnen van de RC522 module rechtstreeks verbonden met de pinnen van de Arduino. Dit kan echter in sommige gevallen leiden tot storingen, omdat de uitgangspinnen van de Arduino een spanning van 5V leveren terwijl de pinnen van de RC522 module werken op een standaardspanning van 3,3V. Daarom is het aan te raden om de spanning tussen de Arduino-pinnen en die van de RC522 module te regelen. Voor meer informatie kunt u de tutorial Arduino Nano - RFID RC522 raadplegen. Hieronder ziet u hoe u 5V naar 3,3V kunt regelen 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 indeling van de pinnen kan per fabrikant verschillen. Gebruik ALTIJD de labels die op de module zijn afgedrukt. De afbeelding hierboven toont de pinout van modules van producent DIYables.

Bedradingsschema van RFID/NFC RC522 Module

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

Bedradingsschema van Servo Motor

Servo Motor Arduino 5V DC Adapter
VCC (rood) → positief
GND (bruin) → negatief
SIG (geel) → A5

Bedradingsschema van 5V DC Adapter

5V DC Adapter Servo Motor Arduino Nano
Positief VCC
Positief → Vin
Negatief GND
Negatief GND

Arduino Nano Code - Enkel 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-servo-motor */ #include <SPI.h> #include <MFRC522.h> #include <Servo.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 SERVO_PIN A5 // The Arduino Nano pin connected to servo motor MFRC522 rfid(RC522_SS_PIN, RC522_RST_PIN); Servo servo; byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; int angle = 0; // The current angle of servo motor void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 servo.attach(SERVO_PIN); servo.write(angle); // rotate servo motor to 0° 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"); // change angle of servo motor if (angle == 0) angle = 90; else //if(angle == 90) angle = 0; // rotate the servo motor to the angle position servo.write(angle); Serial.print("Rotate Servo Motor to "); Serial.print(angle); Serial.println("°"); } 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

  • Klik op het Libraries-icoon in de linker balk van de Arduino IDE.
  • Zoek naar “MFRC522” en vind de bibliotheek van GithubCommunity.
  • Klik op de Installeren-knop om de MFRC522 bibliotheek te installeren.
Arduino Nano MFRC522 library

Om de UID van een RFID/NFC-tag te bepalen, is de eerste stap het uploaden van de code naar de Arduino IDE. Dit doet u door:

  • De code te kopiëren en te openen in de Arduino IDE
  • Op de Uploaden-knop te klikken
  • De Seriële Monitor te openen
  • De RFID/NFC-tag op de RFID-RC522 module te tikken
  • De UID in de Seriële Monitor te bekijken
COM6
Send
Tap RFID/NFC tag on reader Unauthorized Tag with UID: 3A C9 6A CB
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Nadat u de UID heeft verkregen:

  • Vervang de waarde van authorizedUID in regel 20 van de code door de verkregen UID. Bijvoorbeeld, wijzig byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; in byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Upload de code opnieuw naar het Arduino Nano bord
  • Plaats een RFID/NFC-tag op de RFID-RC522 module
  • De servo motor zal naar 90° draaien
  • Controleer de uitvoer in de Seriële Monitor
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag Rotate Servo Motor to 90°
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Tik nogmaals de RFID/NFC-tag op de RFID-RC522 module.
  • De servo motor zal terugdraaien naar 0° en dit wordt zichtbaar in de Seriële Monitor.
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag Rotate Servo Motor to 90° Authorized Tag Rotate Servo Motor to 0°
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Tik met een RFID- of NFC-tag op de RFID-RC522 module.
  • Controleer de uitvoer in de Seriële Monitor.
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag Rotate Servo Motor to 90° Authorized Tag Rotate Servo Motor to 0° Unauthorized Tag with UID: BD 1E 1D 00
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Arduino Nano Code - Meerdere RFID/NFC Tags

U kunt meerdere RFID/NFC-tags instellen om een servo motor te besturen. In het voorbeeld hieronder wordt gebruikgemaakt van twee tags.

/* * 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-servo-motor */ #include <SPI.h> #include <MFRC522.h> #include <Servo.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 SERVO_PIN A5 // The Arduino Nano pin connected to servo motor MFRC522 rfid(RC522_SS_PIN, RC522_RST_PIN); Servo servo; byte authorizedUID1[4] = {0x3A, 0xC9, 0x6A, 0xCB}; byte authorizedUID2[4] = {0x30, 0x01, 0x8B, 0x15}; int angle = 0; // The current angle of servo motor void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 servo.attach(SERVO_PIN); servo.write(angle); // rotate servo motor to 0° 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"); changeServo(); } 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"); changeServo(); } 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 } } } void changeServo() { // change angle of servo motor if (angle == 0) angle = 90; else //if(angle == 90) angle = 0; // rotate the servo motor to the angle position servo.write(angle); Serial.print("Rotate Servo Motor to "); Serial.print(angle); Serial.println("°"); }

Herhaal dezelfde stappen als hierboven en tik vervolgens elke tag één voor één op de RFID-RC522 module. De uitvoer in de Seriële Monitor zou als volgt moeten zijn:

COM6
Send
Tap RFID/NFC tag on reader Authorized Tag 2 Rotate Servo Motor to 90° Authorized Tag 1 Rotate Servo Motor to 0°
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

U kunt de code uitbreiden om drie, vier of meer tags te ondersteunen.

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 in de bedrading en programmering van de Arduino Nano met RFID/NFC en servo motor.

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