Arduino Nano - RFID - Moteur Servo

Ce tutoriel vous explique comment utiliser un Arduino Nano et un module RFID NFC RC522 pour contrôler un moteur servo. Le processus fonctionne comme suit :

Cela peut être utilisé pour sécuriser un placard, un tiroir, une porte, ou pour ouvrir et fermer un distributeur de nourriture pour animaux...

Préparation du matériel

1×Arduino Nano
1×USB A to Mini-B USB cable
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×Servo Motor
1×5V Power Adapter
1×Jumper Wires
1×(Optional) DC Power Jack
1×(Optional) 9V Power Adapter for Arduino Nano
1×(Recommended) Screw Terminal Adapter for Arduino Nano

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du module RFID/NFC RC522 et du moteur servo

Si vous ne connaissez pas le module RFID/NFC RC522 et le moteur servo (y compris le brochage, leur fonctionnement et comment les programmer), vous pouvez en apprendre davantage dans les tutoriels suivants :

Composant moteur servo RFID Arduino Nano

Comment ça marche

  • Le code Arduino Nano a des UID de balises RFID/NFC prédéfinis.
  • Lorsque la balise RFID/NFC est tapée sur le lecteur, l'UID est lu.
  • L'Arduino Nano reçoit l'UID du lecteur.
  • Il compare ensuite l'UID lu avec les UID prédéfinis.
  • Si l'UID correspond à l'un des UID prédéfinis, l'Arduino Nano commande le moteur servo à 90°.
  • Lorsque la balise est tapée à nouveau, l'Arduino Nano repositionne le moteur servo à 0°.
  • Ce processus est répété continuellement.

Diagramme de câblage

Schéma de câblage du moteur servo RFID RC522 Arduino Nano

This image is created using Fritzing. Click to enlarge image

Pour des raisons de simplicité, le schéma de câblage ci-dessus est utilisé à des fins de test ou éducatives, et pour un servo-moteur à faible couple. Nous recommandons fortement l'utilisation d'une source d'alimentation externe pour le servo-moteur en pratique. Le schéma de câblage ci-dessous illustre comment connecter le servo-moteur à une source d'alimentation externe.

Schéma de câblage du moteur servo RFID RC522 Arduino Nano

This image is created using Fritzing. Click to enlarge image

Câblage avec le module RFID RC522

Pour simplifier le processus de connexion, les broches du module RC522 sont directement connectées aux broches de l'Arduino. Cependant, cela peut entraîner un dysfonctionnement de l'Arduino dans certains cas, car les broches de sortie de l'Arduino produisent une tension de 5V tandis que les broches du module RC522 fonctionnent à une tension standard de 3.3V. Il est donc conseillé de réguler la tension entre les broches de l'Arduino et celles du module RC522. Pour plus de détails, veuillez consulter le tutoriel Arduino Nano - RFID RC522. Le diagramme suivant illustre comment réguler de 5V à 3.3V à l'aide de résistances :

Schéma de câblage régulé en tension de l'Arduino Nano RFID RC522

This image is created using Fritzing. Click to enlarge image

※ NOTE THAT:

L'agencement des broches peut varier selon le fabricant. UTILISEZ TOUJOURS les étiquettes imprimées sur le module. L'image ci-dessus montre le schéma de brochage des modules du producteur DIYables.

Tableau de câblage du module RFID/NFC RC522

RFID/NFC RC522 Arduino Nano
SS → 10
SCK → 13
MOSI → 11
MISO → 12
IRQ(not connected)
GNDGND
RST → 9
VCC → 3.3V

Tableau de câblage du moteur servo

Servo Motor Arduino 5V DC Adapter
VCC (red) → positive
GND (brown) → negative
SIG (yellow) → A5

Tableau de câblage de l'adaptateur 5V DC

5V DC Adapter Servo Motor Arduino Nano
PositiveVCC
Positive -> Vin
NegativeGND
Negative GND

Code Arduino Nano - Balise RFID/NFC unique

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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 } } }

Étapes rapides

  • Cliquez sur l'icône Libraries dans la barre gauche de l'IDE Arduino.
  • Recherchez "MFRC522" et trouvez la bibliothèque par GithubCommunity.
  • Appuyez sur le bouton Install pour installer la bibliothèque MFRC522.
Bibliothèque MFRC522 pour Arduino Nano

Afin de déterminer l'UID d'une étiquette RFID/NFC, la première étape consiste à télécharger le code sur l'IDE Arduino. Cela peut être fait en :

  • Copier le code et l'ouvrir dans l'IDE Arduino
  • Cliquer sur le bouton Upload
  • Ouvrir le moniteur série
  • Taper l'étiquette RFID/NFC sur le module RFID-RC522
  • Visualiser l'UID sur le moniteur série
COM6
Send
Tap RFID/NFC tag on reader Unauthorized Tag with UID: 3A C9 6A CB
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Après avoir obtenu l'UID :

  • Remplacez la valeur de authorizedUID à la ligne 20 du code par l'UID obtenu. Par exemple, changez byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; en byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
  • Téléversez de nouveau le code sur la carte Arduino Nano
  • Placez une étiquette RFID/NFC sur le module RFID-RC522
  • Le moteur servo tournera à 90°
  • Vérifiez la sortie sur le moniteur série
COM6
Send
Tap RFID/NFC tag on reader Authorized Tag Rotate Servo Motor to 90°
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Tapez à nouveau sur l'étiquette RFID/NFC sur le module RFID-RC522.
  • Le moteur servo va tourner à 0° et la sortie sera visible sur le moniteur série.
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  
  • Appuyez sur un tag RFID ou NFC contre le module RFID-RC522.
  • Consultez la sortie sur le moniteur série.
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  

Code Arduino Nano - Tags RFID/NFC multiples

Nous pouvons permettre à plusieurs étiquettes RFID/NFC de contrôler un moteur servo. À titre d'exemple, le code ci-dessous utilise deux étiquettes.

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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("°"); }

Répétez les mêmes étapes que ci-dessus, puis appuyez sur chaque étiquette du module RFID-RC522 une à une. Le résultat affiché sur le moniteur série devrait apparaître comme suit :

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  

Vous pouvez étendre le code écrit ci-dessus pour inclure trois, quatre ou plus de balises.

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!