Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Se você ainda não conhece o Módulo RFID/NFC RC522 e o Servo Motor (pinagem, como funcionam, como programar...), aprenda sobre eles nos seguintes tutoriais:
Os UIDs de algumas tags RFID/NFC são predefinidos no código Arduino
O usuário aproxima uma tag RFID/NFC do leitor RFID/NFC
O leitor lê o UID da tag.
O Arduino obtém o UID do leitor
O Arduino compara o UID lido com os UIDs predefinidos
Se o UID corresponder a um dos UIDs predefinidos, o Arduino move o servo motor para 90°.
Se a tag for aproximada novamente, o Arduino move o servo motor de volta para 0°
Este processo se repete infinitamente.
Diagrama de Ligação
This image is created using Fritzing. Click to enlarge image
No diagrama de ligação acima, um único adaptador de 5V alimenta o Arduino diretamente, o servo motor diretamente e o módulo RC522 (indiretamente, pelo pino 3.3V do Arduino).
Para simplificar o processo, os pinos do módulo RC522 são conectados diretamente aos pinos do Arduino. No entanto, isso pode fazer o Arduino parar de funcionar corretamente em certos casos, pois os pinos de saída do Arduino produzem uma tensão de 5V, enquanto os pinos do módulo RC522 funcionam normalmente com uma tensão de 3.3V. Por isso, é recomendável regular a tensão entre os pinos do Arduino e os do módulo RC522. Para mais detalhes, consulte o tutorial Arduino - RFID RC522. O diagrama abaixo mostra como regular 5V para 3.3V usando resistores:
This image is created using Fritzing. Click to enlarge image
※ Nota:
A ordem dos pinos pode variar de acordo com o fabricante. SEMPRE use as etiquetas impressas no módulo. A imagem acima mostra a pinagem dos módulos do fabricante DIYables.
Tabela de ligação do Módulo RFID/NFC RC522
RFID/NFC RC522
Arduino
SS
→ 10
SCK
→ 13
MOSI
→ 11
MISO
→ 12
IRQ(não conectado)
GND
→ GND
RST
→ 9
VCC
→ 3.3V
Tabela de ligação do Servo Motor
Servo Motor
Arduino
Adaptador 5V DC
VCC (vermelho)
→ positivo
GND (marrom)
→ negativo
SIG (amarelo)
→ A5
Tabela de ligação do Adaptador 5V DC
Adaptador 5V DC
Servo Motor
Arduino
Positivo
→ VCC
Positivo
-> Vin
Negativo
→ GND
Negativo
→ GND
Código Arduino - Uma Única Tag RFID/NFC
/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-rfid-nfc-servo-motor*/#include <SPI.h>#include <MFRC522.h>#include <Servo.h>#define SS_PIN 10#define RST_PIN 9#define SERVO_PIN A5MFRC522 rfid(SS_PIN, RST_PIN);Servo servo;byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF};int angle = 0; // the current angle of servo motorvoidsetup() {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");}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");// change angle of servo motorif (angle == 0) angle = 90;else//if(angle == 90) angle = 0;// control servo motor arccoding to the angle 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 } }}
Passos Rápidos
Vá até o ícone Libraries na barra esquerda da Arduino IDE.
Pesquise “MFRC522” e encontre a biblioteca da GithubCommunity
Clique no botão Install para instalar a biblioteca MFRC522.
Como o UID normalmente não vem impresso na tag RFID/NFC, o primeiro passo é descobrir o UID da tag. Isso pode ser feito assim:
Copie o código acima e abra-o na Arduino IDE
Clique no botão Upload na Arduino IDE para carregar o código no Arduino
Abra o Serial Monitor
Aproxime uma tag RFID/NFC do módulo RFID-RC522
Obtenha o UID no Serial 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
Depois de obter o UID:
Atualize o UID na linha 20 do código acima. Por exemplo, altere byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; PARA byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
Carregue o código no Arduino novamente
Aproxime uma tag RFID/NFC do módulo RFID-RC522
Você verá o servo motor girar para 90°
Veja a saída no Serial 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
Rotate Servo Motor to 90°
Ln 11, Col 1
Arduino Uno on COM15
2
Aproxime a mesma tag RFID/NFC do módulo RFID-RC522 novamente
Você verá o servo motor girar para 0°
Veja a saída no Serial 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
Rotate Servo Motor to 90°
Authorized Tag
Rotate Servo Motor to 0°
Ln 11, Col 1
Arduino Uno on COM15
2
Aproxime outra tag RFID/NFC do módulo RFID-RC522
Veja a saída no Serial 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
Rotate Servo Motor to 90°
Authorized Tag
Rotate Servo Motor to 0°
Unauthorized Tag with UID: BD 1E 1D 00
Ln 11, Col 1
Arduino Uno on COM15
2
Código Arduino - Várias Tags RFID/NFC
Podemos permitir que várias tags RFID/NFC controlem o servo motor. O código abaixo usa duas tags como exemplo.
/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-rfid-nfc-servo-motor*/#include <SPI.h>#include <MFRC522.h>#include <Servo.h>#define SS_PIN 10#define RST_PIN 9#define SERVO_PIN A5MFRC522 rfid(SS_PIN, 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 motorvoidsetup() {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");}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"); changeServo(); } 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"); 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 motorif (angle == 0) angle = 90;else//if(angle == 90) angle = 0;// control servo motor arccoding to the angle servo.write(angle);Serial.print("Rotate Servo Motor to ");Serial.print(angle);Serial.println("°");}
Siga passos semelhantes aos de cima e depois aproxime as tags, uma por uma, do módulo RFID-RC522. O resultado no Serial Monitor fica assim:
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
Rotate Servo Motor to 90°
Authorized Tag 1
Rotate Servo Motor to 0°
Ln 11, Col 1
Arduino Uno on COM15
2
Você pode expandir o código acima para três, quatro ou mais tags.
Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!