Controle de acesso com módulo RFID RC522
RFID (Radio Frequency IDentification ou Identificação por radiofrequência) é uma tecnologia que utiliza sinais de rádio e uma etiqueta (tag) RFID para leitura e gravação de dados, e neste post vamos mostrar como montar um controle de acesso usando módulo RFID RC522 juntamento com placa Arduino.
A forma mais comum de utilização do RFID é na identificação de produtos, onde uma tag pode conter informações como código do produto, procedência, data de validade, fabricante, etc. Mas a sua utilização não se restringe a isso. Podemos usar etiquetas RFID em animais para fins de rastreamento, em veículos no conhecido sistema Sem Parar, em passaportes, rastreamento de cargas, controle de acesso e em várias outras aplicações.
O módulo RFID RC522 para Arduino é capaz de ler tags que operam na frequência de 13,56 Mhz, e suporta cartões do tipo Mifare1 S50, Mifare1 S70 Mifare Ultralight, Mifare Pro e Mifare DESFire.
Ligação do módulo RFID ao Arduino
O módulo RFID RC522 utiliza a interface SPI para comunicação com o Arduino por meio dos pinos digitais de 10 à 13, além do pino 9 ligado ao RST do módulo. Veja na imagem abaixo a disposição dos pinos e a ligação ao Arduino, com os pinos suportados pela biblioteca MFRC522, que utilizaremos no nosso programa de controle de acesso:
Atenção à alimentação do módulo, que é feita por meio do pino 3.3V do Arduino.
Controle de acesso com RFID
Vamos testar o módulo RFID montando um controle de acesso utilizando o Arduino Uno e que verifica o número da tag e libera (ou não), a passagem por uma cancela controlada por um servo motor (microservo 9G):
Esse controle de acesso utiliza o circuito abaixo, lembrando mais uma vez que a alimentação do módulo RFID é feita por meio do pino 3.3V, e o servo motor é alimentado por 5V, por isso atenção na montagem para não inverter as ligações:
Reconhecendo as tags e controlando o servo motor
No programa utilizamos a biblioteca Servo, já presente na IDE do Arduino, e também a biblioteca MFRC522, que você encontra nesse link.
Adicionamos dois leds para mostrar se o acesso foi liberado (led verde, ligado à porta 5), ou negado (led vermelho piscante, ligado à porta 6).
Para adaptar o programa à sua tag, verifique no serial monitor o número (UID) da tag lida pelo sensor, e então coloque esse número nessa linha, no lugar do “D8 4B 12 22”:
if (conteudo.substring(1) == “D8 4B 12 22”)
Como temos dois cartões, adicionamos duas entradas idênticas e mudamos apenas o número do UID em cada uma delas, com um dos cartões com acesso liberado e que aciona o servo motor, movimentando o mesmo em 90 graus, e outro com acesso negado, que pisca o led vermelho.
// Programa : RFID - Controle de acesso / cancela // Autor : Arduino e Cia #include <SPI.h> #include <MFRC522.h> #include <Servo.h> Servo microservo9g; #define SS_PIN 10 #define RST_PIN 9 // Definicoes pino modulo RC522 MFRC522 mfrc522(SS_PIN, RST_PIN); // Leds indicadores acesso liberado ou negado int led_liberado = 5; int led_negado = 6; char st[20]; void setup() { pinMode(led_liberado, OUTPUT); pinMode(led_negado, OUTPUT); // Define que o servo esta ligado a porta digital 3 microservo9g.attach(3); // Move o servo para a posicao inicial (cancela fechada) microservo9g.write(90); // Inicia a serial Serial.begin(9600); // Inicia SPI bus SPI.begin(); // Inicia MFRC522 mfrc522.PCD_Init(); // Mensagens iniciais no serial monitor Serial.println("Aproxime o seu cartao do leitor..."); Serial.println(); } void loop() { // Aguarda a aproximacao do cartao if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Seleciona um dos cartoes if ( ! mfrc522.PICC_ReadCardSerial()) { return; } // Mostra UID na serial Serial.print("UID da tag :"); String conteudo= ""; byte letra; for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); conteudo.concat(String(mfrc522.uid.uidByte[i], HEX)); } Serial.println(); Serial.print("Mensagem : "); conteudo.toUpperCase(); // Testa se o cartao1 foi lido if (conteudo.substring(1) == "D8 4B 12 22") { // Levanta a cancela e acende o led verde microservo9g.write(-90); digitalWrite(led_liberado, HIGH); Serial.println("Cartao1 - Acesso liberado !"); Serial.println(); delay(3000); microservo9g.write(90); digitalWrite(led_liberado, LOW); } // Testa se o cartao2 foi lido if (conteudo.substring(1) == "87 4B DC 8A") { Serial.println("Cartao2 - Acesso negado !!"); Serial.println(); // Pisca o led vermelho for (int i= 1; i<5 ; i++) { digitalWrite(led_negado, HIGH); delay(200); digitalWrite(led_negado, LOW); delay(200); } } delay(1000); }
Abaixo, o serial monitor mostrando os dados referentes às tags que foram liberadas ou negadas:
Esse projeto pode ser melhorado adicionando-se um sensor infravermelho para detectar a passagem de veículos/pessoas/objetos pela cancela, ou um display para contagem de acessos. Abaixo, circuito em funcionamento:
Gostou? Confira outros posts usando RFID aqui mesmo no Arduino e Cia!
Oi, artigo graças, feliz por ser praticado a partir da codificação, e mesmo que eu tinha um plano para aplicar o circuito em minha segurança em casa. mas a minha pergunta:
1. Com a codificação acima só pode ler curso UID uma tag, como adicionar codificação para ser usado com 2-4 Tag UID.
Por favor, iluminação
agradeço antecipadamente
Bom dia Ichiro !
Você pode adicionar quantas TAGS quiser, acrescentando esse código :
// Testa se o cartaoX foi lido
if (conteudo.substring(1) == "")
{
\Your Code Here
}
Substituindo o new_tag_id pelo ID que você quiser.
Saudações !
Boa tarde, gostaria de configurar da seguinte forma: cadastrar os tags que terão acesso, e os cadastrados aparecer acesso negado. Tem como me ajudar? [email protected]
Boa tarde,
Esse programa já faz isso, você cadastra as tags que terão acesso liberado ou negado e testa essa situação por meio do comando IF
Abraço !
Boa tarde, o número (UID) da tag lida pelo sensor, pode ser alterado, ou já e padrão de fabricação ?
Boa tarde Wilton,
Fiz uma rápida pesquisa e existem tags que permitem a mudança do UID, mas ainda não tive oportunidade de testar.
Abraço !
boa tarde,
comprei um arduino uno e um modulo rfid-rc522
implementei seu codigo, porem nao consigo ler as tags
fiz as ligaçoes seguindo seus passos
boa tarde,
comprei um arduino uno e um modulo rfid-rc522
fiz as ligaçoes senguindo seu post, porem nao consegui ler nenhuma tag, no modulo fica ligado o led d1 vermelho, me de um help por favorr
Boa tarde,
Você tem como conseguir algum outro tipo de tag para testar se o problema é nas tags ou no módulo ?
Abraço.
Boa tarde,
estou tentando usar o módulo RFID com um Arduino Mega, mas ele não esta identificando as tags.
Já mudei os ports físicos e mudei o código também para usar os ports 50 ~53
O led D1 fica sempre acesso, isso significa algo ?
Desde já agradeço pela ajuda
Boa tarde,
Quando ao led, sem problemas, alguns módulo só piscam o led quando lêem a tag, e outros ficam com ela acesa direto, creio que seja alguma modificação do fabricante.
Você consegue testar esse módulo com um Arduino Uno para verificar se o problema é no módulo ou no Arduino ?
Abraço.
montei o circuito,mas não funcionou primeiro deu erro na biblioteca, ficava com caracteres preto como se não tivesse declarada, então resolvi renomear a pasta tirei o nome master parou o erro e ficou em vermelho como as demais só que não acontece nada passo o chaveiro ou o cartão e na serial não mostra nada.
onde esta o erro sera que as tag`s estao limpas
Boa noite Alberto,
Eu já tive problemas com um módulo que veio com as tags "zeradas". Se possível, tente uma outra tag ou cartão para verificar se o problema é no módulo ou nas tags.
Abraço.
olá, eu quero fazer esse mesmo projeto mais botando um LCD tipo para ele aparecer um texto"acesso negado" algo do tipo como que ficaria o código?
Oi Vinicius,
Eu escrevi um artigo para o blog FILIPEFLOP exatamente com o que você precisa. Dê uma olhada, por favor :
http://blog.filipeflop.com/wireless/controle-acesso-leitor-rfid-arduino.html
Abraço !
Utilizei a programação do blog FILIPEFLOP, porem ocorre este erro, o que devo fazer?
invalid conversion from 'byte {aka unsigned char}' to 'MFRC522::StatusCode' [-fpermissive]
Ola amigo , por favor pretendo usar esse projeto no meu tcc , mais nao estou conseguindo utilizar esse programa no meu arduino mega 2560 , entao por favor me mande o codigo para arduino mega e a ligação dos cabos no arduino mega por que nao consigo fazer isso , nao tenho muito experiencia com arduino desde ja obrgd
Boa noite Alessandro,
O que acontece com o programa ? Não funciona, trava, dá erro ? Vamos ver no que consigo te ajudar.
Abraço !
Oi eu tenho um problema quando eu iniciar o programa o servo começa a se mover sozinho, embora não muito rápido, mas move-se sem funcionamento do cartão. e quando eu ligar o cartão de movimentos normalmente e então lentamente voltar atrás
Boa noite,
O seu servo é o mesmo que eu uso neste post ? Consegue testar com algum outro ?
Abraço !
tem algum programa feito para detectar a uid dos cartoes?
Boa noite,
Na própria biblioteca do RFID você encontra exemplos para ler a UID dos cartões.
Abraço !
comprei um rfid e a tag não veio com UID, tem como eu descobrir ?
Boa tarde,
Seu cartão veio zerado ?
Comigo ocorreu da mesma forma. Comprei dois kits com 10 cartões cada, com vendedores diferentes e nenhum cartão veio com o UID. Tenho outros 4 cartões que são lidos normalmente.
Boa Noite
Muito obrigado pelo projeto me ajudou muito, porem teria como eu controlar esse mesmo servo motor adicionando um modulo bluethooth, para abrir o portão da minha sala sem ter de descer para abrir o portão para pessoas que não tem o tag ?
Boa tarde,
É possível sim, você só precisa arrumar uma maneira de interligar o Arduino ao controle do motor do portão. Para testes de controle de um servo motor via bluetooth, dê uma olhada neste post, por favor:
http://www.arduinoecia.com.br/2014/01/controlando-um-servo-motor-utilizando.html
Abraço !
Então na verdade eu não queria controlar o motor do meu portão. eu queria adicionar esse codigo do : http://www.arduinoecia.com.br/2014/01/controlando-um-servo-motor-utilizando.html junto com o codigo do Controle de acesso com módulo RFID RC522. para fazer uma coisa só. para abrir a cancela tanto usando o cartão como pelo modulo bluethooth.
Creio que vc tenha que usar o NFC já que a frequência é a mesma.
Olá amigo como sei se minha tag está realmente vazia? Pois montei este projeto e os cartões que tenho leram normal eo chaveiro não aparece nada nem no monitor serial?
Oi Anderson,
Já tive o mesmo problema em 2 ou 3 kits que comprei. Os cartões liam, e o chaveiro não, ou então nada lia… mas o problema aparentemente se encontra nos cartões/chaveiros, troquei e o leitor funciona normalmente.
Abraço !
O seu programa esta dando erro aqui, veja:
sketch_aug03b:13: error: 'MFRC522' does not name a type
sketch_aug03b.ino: In function 'void setup()':
sketch_aug03b:34: error: 'mfrc522' was not declared in this scope
sketch_aug03b.ino: In function 'void loop()':
sketch_aug03b:43: error: 'mfrc522' was not declared in this scope
sketch_aug03b:48: error: 'mfrc522' was not declared in this scope
sketch_aug03b:56: error: 'mfrc522' was not declared in this scope
Bom dia Eduardo,
A princípio, isso me parece erro na instalação da biblioteca.
Abraço !
Era isso mesmo, Obrigado
Boa Noite, estou passando pelo mesmo problema, fiz a reinstalação das bibliotecas
MFRC522.h e MFRC522.cpp os arquivos estão na mesma pasta e problema ainda continua o que pode ser?
Esse módulo RFID RC522 reconhece o cartão MIFARE CLASSIC 1K?
Bom dia,
Segundo o fornecedor, os tipos de cartão suportados são: Mifare1 S50, S70 Mifare1, Mifare UltraLight, Mifare Pro, Mifare Desfire.
Abraço !
una pregunta que librerias utilizo y si las puede pasar de ante mano gracias
La biblioteca utilizado es el mismo que en el artículo:
https://github.com/miguelbalboa/rfid
¿Qué error está apareciendo ?
¡Saludos!
una pregunta que librerias utilizo porque me marca error porfa es para una practica en la escuela
Como eu faria a ligação usando um arduino nano ? Já que o pino 13 não existe no arduino nano ! posso usar outro pino qualquer ?
Boa tarde,
Eu não testei com o Nano, mas ele possui pino 13… dê uma olhada neste link:
http://christianto.tjahyadi.com/wp-content/uploads/2014/11/nano.jpg
Abraço!
o código não esta correspondendo com o que e nas imagens pois as leds fica acesso direto o moto não pois só fiz compilar o código
Boa noite,
Por favor dê uma checada nas conexões. O circuito e o código foram testados exatamente como está no post.
Abraço!
Olá. Gostei muit desse projeto e gostaria de implementa-lo inserindo um bluetooth para comunicar com o cel ou notebook, possibilitando a entrada nao so pelas tags, mas tambem atraves do celular. Isso e possivel. Como ficaria a programaçao? Tem algum artigo semelhante? No aguardo. Vlew.
Boa tarde Bruno,
É possível sim, mas não tenho nenhum post pronto sobre isso ainda.
Abraço!
Saudações!
Gostei muito do tutorial, porém, não estou conseguindo fazer funcionar a leitura dos cartões. Quando aproximo um cartão, não há reação alguma. Já tentei diversos cartões com o sistema RFID e mesmo assim não funciona.
Obs: Meu arduino é o Duemilanove.
Poderia me ajuda?
Abraço!
Boa tarde Sérgio,
Não testei com o Duemilanove, mas pelas informações que eu tenho, esse leitor é compatível.
Abraço!
mudou o problema agora
carregou ate o fim e nao deu erro
porem o rfid nao reconhece nem o cartao nem o chaveiro
Boa tarde,
Você tem alguma outra tag para testar ? Aparece algum dado no serial monitor ?
Abraço.
ENTÃO
to usando duas tags diferentes
o chaveiro pra liberar e o cartao pra negar
carrega tudo a programacao
abro o serial monitor
passo eles e nao aparece nada no serial
lembrando q estou utilizando o arduino mega
ja alterei as portas do rfid certinho e nada ainda …
ou se puder me mandar a programação de como ficaria no mega…
qualquer ajuda é bem vinda
to precisando fazer funcionar…obg
Boa tarde,
A programação no mega é a mesma, mas a interface SPI usa outros pinos. Dê uma olhada neste link, por favor: https://www.arduino.cc/en/Reference/SPI
Abraço!
Bom dia amigos
Gostaria de agradecer
Consegui encontrar o problema…
E pintou mais um desafio
Meu professor pediu pra colocar um display lcd16x2 e aparecer o acesso liberado e acesso negado toda vez Q passar o cartão
É possível?
Obrigado
Bom dia Giovanni,
Eu escrevi um artigo para o blog FILIPEFLOP exatamente com o que você precisa. 🙂
http://blog.filipeflop.com/wireless/controle-acesso-leitor-rfid-arduino.html
Abraço!
Bom dia amigo,
Tem como substituir o servo por um rele?como?
Boa noite,
Tem sim. Utilize o esquema de conexão desse post: http://www.arduinoecia.com.br/2013/02/ligando-uma-lampada-com-rele.html
Abraço!
Aonde eu posso conseguir uma catraca semelhante a sua?
Obrigado
Boa noite Gustavo,
Eu tenho esse item para venda. Por favor entre em contato utilizando o formulário de contato no lado direito do site. Conversamos por email.
Abraço!
Boa Noite Gustavo, sou iniciante do projeto Arduino, fiz o fonte conforme descrito e ao compilar gera erro 'MFRC522' has not been declared ja fiz a instalação das bibliotecas MFRC522.cpp e MFRC522.h os arquivos estão na mesma pasta, o que pode ser, está faltando alguma coisa?
Bom dia como faço para adicionar um botão no projeto, para abrir a porta pelo lado de dentro ?
Boa Noite, gostaria de saber se tem como eu colocar vários cartões para serem lidos e que o acesso fique liberado. Por exemplo, quero que 5 pessoas tenham acesso a uma sala, como faço para identificar qual UID de cada cartão da pessoa e liberar o acesso? Obrigado
Boa noite, gostaria de saber como faço para colocar por exemplo 5 cartões para ter o acesso liberado e os resto com acesso negado? E como faço para ler as UID de cada cartão. Obrigado
Boa noite Pedro,
Você pode fazer um "IF" para cada cartão, testando o UID conforme eu fiz nas linhas:
if (conteudo.substring(1) == "D8 4B 12 22")
O próprio programa já mostra no Serial Monitor o UID do cartão que vc aproximar.
Abraço!
Boa Noite
Como faço para adicionar um botão ao projeto para que eu possa abrir a porta do meu quarto por dentro ?
Boa tarde querido, primeiro gostaria de parabenizar vc pelo ótimo trabalho!
Mas tenho uma dúvida sobre o sensor RFID, eu quero acionar o código dele através de uma interrupção, mas como estou utilizando o arduino UNO tenho que ligar pelo menos um dos fios do módulo na saída 2 ou 3!
tem alguma idéia de como posso fazer isso???
Agradeço desde já!
Bom dia Diego,
Essa vou ficar te devendo por enquanto, vamos ver se os outros leitores do blog conseguem te ajudar.
Abraço e obrigado!
Ola, Boa tarde! Nao sou tao novo com arduino assim, ja desenvolvi alguns trabalhos simples, mais nunca trabalhei com nenhum sketch que necessitasse de uma biblioteca diferente, e nao to conseguindo baixar essa, depois que vou no link nao estou achando a area de dowloand, dava pra fazer um passo a passo pra mim, por comentario? vou acrecentar esse projeto em um outro que estou fazendo pra tcc. desde ja obgd!!
[email protected]
socorro, estou precisando urgente de um auxilio, quero ler as tags de dois cartoes rfid, tentei usar o codigo ai de cima tirando a parte de leds e da cancela porem nao consego, pf alguem me ajuda com a programação para ler as tags para conseguir montar o projeto.
muito obrigado pela atenção de todos.
Boa tarde, preciso adicionar e retirar cartões sem precisar mexer no código, com um cartão ''master''.. é possivel?
Obrigado
Bom dia,
É possível sim, você terá que gravar as informações dos novos cartões em algum lugar, seja na memória EEPROM do Arduino ou em um cartão SD, por exemplo.
Abraço!
Da pra montar esse circuito no https://123d.circuits.io?
Bom dia,
Pelo que eu vi do programa, ele não tem muitos módulos disponíveis, como o módulo RFID, por exemplo.
Abraço!
Qual a distância entre o módulo rfid e o arduino pode ter?
Qual a distância máxima do módulo rfid até o arduino? Poderia estar utilizando um cabo de rede blindado teria no meu cenário uma distância máxima de 5m. Obrigado
Bom dia Rafael,
Infelizmente eu não tenho essa informação. Só testando mesmo.
Abraço!
Boa Noite,
primeiramente parabéns, era o que estava precisando !
Estou com a seguinte dúvida:
As tags já vem com uma UID cadastrada?
Como faço para ler as UID das tags?
Testei o seu código, porém só fica no monitor serial a seguinte mensagem: "Aproxime o seu cartao do leitor…" mais nada aparece, ja troque o modulo e nada, tenho três tags bilhete único e duas tags chaveiros, mais nenhuma delas estão sendo lida, pois nada aparece no monitor serial.
Poderia me dar uma luz??
Parabéns pela pagina muito útil.
Estou com a seguinte duvidas:
1 – As tags ja vem de fabrica com um UID cadastrada ou tem que cadastrar?
2 – Implementei seu código porém só fica a mensagem no monitor serial (Aproxime o seu cartao do leitor…) e nada acontece, ja troquei o modulo, ja testei diversas tagS do tipo bilhete unico e tags chaveiro mais nada adiantou.
Poderia me dar uma luz ???
Boa tarde,
Obrigado!
1 – Sim, as tags, pelo menos as que eu mexi e que eu conheço, já vieram com a UID cadastrada
2 – Eu já vi isso acontecer com tags "vazias", mas o bilhete unico, por exemplo, funcionou. Recomendo você testar com outro módulo e/ou tags.
Abraço!
A biblioteca MFRC522 não funciona!
Bom dia,
Acabei de baixar a biblioteca no link do post e compilou normalmente. Que erro está apresentando na sua IDE ?
Abraço!
aconteceu na minha também, apareceu : MFRC522, does not name a type.
boa noite,
você pode fazer um vídeo explicando o código.
agradeço.
Boa noite Edson,
Boa sugestão. Vou ver se consigo tempo para fazer isso. 🙂
Abraço!
bomdia , queria saber faço pra rastrear um adesivo rfid?
Amigo, boa noite! Estou querendo cadastrar mais cartoes ao meu projeto, mas não estou conseguido. A dica que está aqui, não está bem clara. Help! Repeti toda linha if, mas fiquei sem acesso, nenhum cartão colocado na linha funcionou na liberação. Obrigado.
Oi Gilberto!
Desculpe a demora. Conseguiu fazer funcionar ?
Abraço!
Sim…basta repetir a mesma rotina do cadastro para todos os cartões.
Olá. Gostaria de saber como e armazenada a UID das tags no programa, quais os comandos que fazem isso e como ocorre a concatenação dos dados. Gostaria de comentários mais detalhados do programa, principalmente as linhas 40 a 53. Por favor, se puder ajudar, agradeço.
Obg.
amigo gostaria de saber se daria pra usar o arduino leonard nesses projeto att luccas
Oi Luccas,
Não testei, mas a princípio não vejo problemas. Deve funcionar sim.
Abraço!
Olá, utilizei o Nano, no monitor ele funciona perfeitamente, mas não move o micro servo.
Troquei de micro servo, utilizei conectado no pc e com fonte externa, nenhuma opção funcionou.
Será que estou com dois micro servos com defeito?
Existe possibilidade de substituir o micro servo e colocar um relé?
Bom dia. Posso adicionar um relé que dure um 2 segundos após o acionamento? E qual código acociar. Tb posso colocar o código do display?
Oi Roni,
Pode fazer tudo isso e mais um pouco…. o que seria o código do display ?
Abraço!
Boa tarde! Tem como fazer o Rfid funcionar no Arduino Due? Com esse tutorial consigo fazer funcionar no Uno, mas preciso que funcione no Due.. Se souber qual porta usar para funcionar, agradeço bastante! Obrigado
Oi Hian,
No Due, utilize os pinos do ICSP. Veja neste link os pinos corretos da interface SPI no Arduino Due:
https://www.arduino.cc/en/reference/SPI
Abraço!
Sobre o rfid 522: duas dúvidas:
1. Como posso fazer para aumentar a recepção do sensor para uma distância de aproximadamente 20 cm de distância?
2.É possível estender a área de leitura do sensor horizontalmente (como se fosse uma barra) ?
Obrigado e Parabéns pelo conteúdo.
Oi Barcellos!
Cara, a não ser que tenha um "hack" pra essa placa, até onde eu sei a distância é bem pequena mesmo, não tem como colocar, tipo uma antena pra melhorar o alcance… Nem verticalmente nem horizontalmente. 🙂
Abraço!
Bom dia Arduino e Cia.
Estou tendo uma pequena dificuldade em relação a utilização do servo motor junto com o RFID. Identifiquei as UIDs de cada Tag, substitui nesse código, compilei para o Arduino e coloquei os pinos conforme descritos nessa públicação. Mas não tá tendo leitura nenhuma.
Atenciosamente, Elton.
Por favor, desconsiderem o meu último comentário falando que não tava conseguindo realizar o projeto. Acabei de conseguir com um pequeno porém, os leds não acendem.
Será que o Arduino não tá dando conta com as voltagens? Vocês estão usando alguma fonte externa no projeto?
Grato desde já, atenciosamente, Elton!
Oi Elton,
Não, estou usando apenas a alimentação do Arduino… aqui funciona normalmente. Por favor reveja o circuito e o valor dos resistores.
Abraço!
Olá, post muito tbom mesmo, me ajudando muito.
Estou com um problema, a tag e o cartão não reconhecem mais, tinha feito esse mesmo circuito, mas desfiz e agora estou montando de novo, mas ele não reconhece nem o cartão e nem a tag.
O que faço?
Oi Mylena,
Será que vc não danificou o leitor ? Não esqueça que ele funciona com 3.3V.
Abraço!
Boa noite.
Primeiramente gostaria de agradecer pelo projeto. Me ajudou muito!
A minha duvida é a seguinte:
Conectei o arduino em uma ethernet shield. A leitura esta sendo feita normalmente, mas preciso passar esses dados para um banco e posteriormente gostaria de jogar em um serv web para conseguir ver quem deu entrada.
Sabes algum jeito mais tranquilo?
Boa noite,
Eu já fiz algo parecido com o GSM shield.. tirando a parte de conexão, vc pode usar a mesma ideia para fazer com o Ethernet Shield.. Dê uma olhada neste post, por favor:
http://www.arduinoecia.com.br/2015/11/acessar-internet-arduino-gsm-shield-sim-900.html
Se não conseguir, entre em contato novamente.
Abraço!
Olá, por favor me tire uma duvida, como eu faço pra ligar o modulo rfid junto com o cartão SD já que eles usam os mesmos pinos de comunicação
Oi Jairo,
Que módulo cartão SD você tem ? Você pode ligar mais de um módulo na interface SPI, só precisa alterar o pino SS (select) para cada dispositivo.
Abraço!
Olá, Jairo, consegui fazer?
Olá, Estou tendo um problema na hora de copilar, já reinstalei a biblioteca e renomiei a pasta porem o erro persiste;
Arduino: 1.6.8 (Windows 7), Placa:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"
librariesMFRC522MFRC522.cpp.o: In function `MFRC522::MFRC522()':
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino/Genuino Mega or Mega 2560.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Olá consigui arrumar o problema com a biblioteca, porem agora o sensor não lê o cartão. Será que é problema no modulo?
Aparece a mensagem "Aproxime o seu cartao do leitor…" no monitor serial porem ao aproximar o cartão nada acontece, testei outros códigos e acontece o mesmo;
os problemas encontrados foram: 1° estou utilizando um arduino mega em que as portas são diferentes do uno; 2° Não havia soldado os pinos no RFID, estava dando mau contato;
Montei o circuito no UNO e funcionou OK;
Oi Pedro,
Legal, obrigado pelo retorno.
Abraço!
Adilson
As alterações;
————————————————————
* Reset 5 RST
* SPI SS 53 SDA
* SPI MOSI 51 MOSI
* SPI MISO 50 MISO
* SPI SCK 52 SCK
Servo microservo9g;
#define SS_PIN 53
#define RST_PIN 5
// Definicoes pino modulo RC522
MFRC522 mfrc522(SS_PIN, RST_PIN);
// Leds indicadores acesso liberado ou negado
int led_liberado = 13;
int led_negado = 12;
void setup()
{
pinMode(SS_PIN, OUTPUT);
digitalWrite(SS_PIN, HIGH);
pinMode(led_liberado, OUTPUT);
pinMode(led_negado, OUTPUT);
ola…gostei do projeto.estou usando u projeto destes no meu tcc.( copiei do filipflop)mas nao consigo implementar uma saida para acionar um led ou um rele,apos a tag ser lida e dar como cadastrada.da maeira que esta no site,funciona perfeitamente.como nao tenho conhecimento de programaçao,gostaria de contar com a ajuda dos colegas,se possivel.
Oi João,
Você pode usar o programa deste post aqui, e colocar um módulo relé no lugar de um dos leds, por exemplo, ou acrescentar uma porta no circuito para acionar o seu relé.
Abraço!
Boa noite, oq pode ser o erro MFR522.h No such file or directory?
Oi Guilherme,
Falta da biblioteca ou instalação incorreta. Veja se baixou a biblioteca correta, por favor.
Abraço!
Adilson
ola gostaria de saber como que funciona a transmissao do codigo, pois precisava dividilo
Bom dia!
Primeiramente, excelente trabalho.
Existe uma maneira de transmitir as informações da tag em forma de audio?
Aguardo a resposta.
Grato
Bom dia,
Você diz colocar um sinal sonoro quando a catraca liberar o acesso, por exemplo ?
Abraço!
Bom dia!
Após liberar o acesso, as informações que encontra na tag, seria emitido em forma de audio.
Ex; As informações da TAG seria= Paulo Ricardo
Quando liberar o acesso, seria emitido o "Paulo Roberto" em audio
Abraço
Boa tarde,
Interessante.. que tal usar o RFID em conjunto com um módulo MP3 ? Acho que dá pra fazer direitinho que vc quer:
http://www.arduinoecia.com.br/2015/06/modulo-mp3-wtv020-sd-arduino.html
Abraço!
Beleza, farei mais pesquisas.
Abraço
здравствуйте! у меня серво закрывается сразу, я поставил на 7 секунд delay(7000); что модет быть?
Привет!
Вставьте строку после строки 77:
delay(7000);
Привет!
Bom dia amigo
quero saber se eu posso incluir uma biblioteca com os cadastros com data de vencimento
quero v se consigo implementar isso na minha academia
e queria saber se tem como eu interligar isso td no pc principal da academia e renovar e fazer o cadastro td por ele
e se tem como o acesso ser wifi para não precisar utilizar mts fios pq o pc fica longe da entrada
Att
Hudson Silva
Ola amigo… muito bom seu projeto…
Quero colocar aqui na empresa, um controle de acesso de carros… vc acha que funciona se eu colocar uma antena leitora de RFID?
Boa noite,
Só a antena não vai ser suficiente.. Acho que nesse caso você vai precisar de outro tipo de tag e leitor.
Abraço!
Você não poderia nos guiar com essa tag e antena?
OTIMO PROJETO , PRA EU DEU ERRO NESSA LINHA.
34-mfrc522.PCD_Init(); OQUE PODE SER , INSTALEI TODAS BIBLIOTECAS POSSIVEIS, ME AJUDE….HELP
Boa noite,
Tentou mudar de IDE ?
Abraço!
Boa noite agradeço muito pela dica mas infelizmente nao deu certo ,instalei todas versoes e nenhuma deu certo…. oque sera que esta havendo …
Oi Boa noite !
voce sabe programar o rfid com pic
Boa noite,
Dê uma olhada neste post, por favor. Acho que tem o que você precisa: http://microcontrolandos.blogspot.com.br/2014/02/pic-rfid-mfrc522.html
Abraço!
Você saberia como adaptar esse programa pra duas cancelas ao invés de apenas uma, de forma que o cartão que abriu a primeira cancela abra a segunda?
Boa tarde,
Sim, você pode simplesmente cadastrar as mesmas tags em dois Arduinos diferentes, ou interligar os dois para fazer algum tipo de "validação" dos cartões.
Abraço!
Bom dia estive observando seu código, e gostaria de saber se há possibilidade de introduzir um botão para abertura (fazer o servo executar os passos) sem a utilização do RFID, e em qual ponto do código isso deveria ser feito.
Boa noite, quero abrir uma cancela com servo e arduino desta mesma forma. Porém com um sensor magnetico para ativá-los. Poderiam me ajudar? grata desde ja´..
Boa noite !
Parabéns pelo trabalho e pela pagina.
Gostaria de saber se tem como programar RFID RC522 com PLC.
Obrigado
ola, utilizei sua programação para fazer meu projeto, de inicio tive problema com a biblioteca então procurei em outro lugar e peguei em outro lugar uma biblioteca e o nome dela estava diferente, mas com ela eu consegui compilar e ate consegue ler as tags, mas para por ai, ela nem acende a tag e nem escreve no serial monitor se é a tag certa ou a errada.
A me non funziona il programma , specificamente il rigo 5 include me lo segna come errore. Perché me lo da errore ? Come lo risolvo ?
não estou conseguindo fazer funcionar no arduino mega 2560, coloquei no uno e rodou tranquilo!
Boa noite,
Essa mini cancela foi feita por você ou foi comprada? Se foi comprada onde posso adquirir uma?
Obrigado.
Eu mesmo fabrico. Se precisar de uma, entre em contato utilizando o formulário de contato no lado direito da página e te passo os valores.
Abraço!
Adilson
Olá, sou novo por aqui, gostei muito dos tópicos, estou com duvida sobre qual o valor dos resistores a serem usados, poderiam me ajudar ?
Oi Marcos,
Usei resistores de 330ohms, mas você pode usar outros valores. Vai mudar apenas a intensidade do brilho do led, ok ?
Abraço!
Adilson
https://youtu.be/OtQ0DYy5U0Y
Boa, Leonardo! 🙂
Abraço.
Adilson
Boa noite, estou fazendo um projeto pra meu curso com o uso desse RFID só que não consigo utilizar a biblioteca MFRC522.h estou utilizando linux distro: ubuntu e kali… baixei essa biblioteca e tem um arquivo makefile e arquivo MFRC522.h e MFRC522.cpp já tentei adicionar apenas colando a pasta e a IDE do arduino fala de funções não declaradas… e também lá no cabeçalho de pré processamento fica preto em #include < MFRC522.h> (não deveria ficar vermelho quando reconhece)… coloquei também pelo caminho 'dir/home/libraries… ' até compila , mas diz não possuir as funções declaradas … Alguma ajuda?
Boa tarde,
Como faria para o motor e o display 16×2 neste caso? O motor está usando a entrada 3 do Arduino, e o display usa a mesma entrada.
Poderia conectar o motor na entrada analógico ou vice-versa?
Obrigado!
Massao
Boa noite,
Você pode trocar a entrada 3 do display por alguma outra porta do Arduino, é possível mudar isso na programação.
Abraço!
Descartei o display, e usei o led. O projeto funcionou conforme descrito.
Agora tenho outra dúvida em relação ao banco de dados. As duas TAGS são inseridas na programação. Como funciona o reconhecimento delas e o seu acionamento?
Obrigado!
Massao
Boa noite! Há alguma forma do usuário final cadastrar novas tags sem precisar mexer no código? Se sim, tem algum tutorial? Vlw
Boa noite,
Vc vai ter que mexer no código, não tem jeito. 🙂
Abraço!
Amigo boa noite,
Estou fazendo um projeto de tcc que usa esse modelo de RFID porém é uma leitura em uma esteira rolante como a placa é relativamente pequena as vezes a tag passa fora do sensor e não identifica o produto.
Seria possível ligar 2 placas de RFID em série para aumentar o campo de leitura do sensor?
Obrigado
Olá! Gostaria de adicionar a esta programação do RFID uma outra, porém não consigo. Quando faço isso, este do RFID não aciona. Gostaria de ajuda!! Sou iniciante.
Vc cadastrou as tags
Boa noite! Há alguma forma de eu alterar as portas no meu arduino mega? as portas padrões que são para esse módulo já estão ocupadas (53,52,51) e não posso desconectar os objetos nelas postas. Existe forma para alterar as entradas padrões da biblioteca ?
Oi Emanuel,
Você pode ligar mais de um dispositivo SPI no mesmo barramento, alterando apenas o pino SS (Slave Select), que deve ser exclusivo para cada módulo. Dê uma olhada neste link, por favor:
https://arduino.stackexchange.com/questions/8425/how-to-access-multiple-spi-interfaces-on-arduino
Abraço!
Adilson
Estou fazendo um esquema parecido, porém gostaria de adicionar um push button para acionar a cancela sem o RFID e também adicionar um comando via IR para abrir a mesma à distância. Agradeço pela ajuda!
Boa Noite Jovens,
Gostaria de saber qual a distancia máxima que posso colocar o modulo rfid do arduino ?
Bom dia
Tenho Arduino Uno + RFID RC522 + lcd 16×2 + rele
Seria possível a vossa ajuda para o seguinte código
Tenho 650 entre cartões e tag e gostava se possível a vossa ajuda com o código
Pedro
ola boa noite, n to conseguindo compilar o codigo no arduino aparesse a segunte mensagem de erro
Arduino: 1.8.5 (Windows 7), Placa:"Arduino/Genuino Uno"
C:UsersUltimateDocumentsArduinolibrariesMFRC522-1.3.6srcMFRC522.cpp: In member function 'bool MFRC522::MIFARE_SetUid(byte*, byte, bool)':
C:UsersUltimateDocumentsArduinolibrariesMFRC522-1.3.6srcMFRC522.cpp:1818:39: warning: 'bool MFRC522::MIFARE_OpenUidBackdoor(bool)' is deprecated (declared at C:UsersUltimateDocumentsArduinolibrariesMFRC522-1.3.6srcMFRC522.cpp:1674): will move to extra class in next version [-Wdeprecated-declarations]
if (!MIFARE_OpenUidBackdoor(logErrors)) {
^
C:UsersUltimateDocumentsArduinolibrariesMFRC522-1.3.6srcMFRC522.cpp: In member function 'bool MFRC522::MIFARE_UnbrickUidSector(bool)':
C:UsersUltimateDocumentsArduinolibrariesMFRC522-1.3.6srcMFRC522.cpp:1847:34: warning: 'bool MFRC522::MIFARE_OpenUidBackdoor(bool)' is deprecated (declared at C:UsersUltimateDocumentsArduinolibrariesMFRC522-1.3.6srcMFRC522.cpp:1674): will move to extra class in next version [-Wdeprecated-declarations]
MIFARE_OpenUidBackdoor(logErrors);
^
In file included from C:UsersUltimateDocumentsArduinolibrariesMFRC522-1.3.6srcMFRC522Extended.cpp:8:0:
C:UsersUltimateDocumentsArduinolibrariesMFRC522-1.3.6srcMFRC522Extended.h: In constructor 'MFRC522Extended::MFRC522Extended(uint8_t)':
C:UsersUltimateDocumentsArduinolibrariesMFRC522-1.3.6srcMFRC522Extended.h:81:44: warning: 'MFRC522::MFRC522(byte)' is deprecated (declared at C:UsersUltimateDocumentsArduinolibrariesMFRC522-1.3.6srcMFRC522.h:335): use MFRC522(byte chipSelectPin, byte resetPowerDownPin) [-Wdeprecated-declarations]
MFRC522Extended(uint8_t rst) : MFRC522(rst) {};
^
O sketch usa 8186 bytes (25%) de espaço de armazenamento para programas. O máximo são 32256 bytes.
Variáveis globais usam 408 bytes (19%) de memória dinâmica, deixando 1640 bytes para variáveis locais. O máximo são 2048 bytes.
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x30
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x20
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x30
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x20
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x30
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x20
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x30
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x20
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x30
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x20
Ocorreu um erro enquanto o sketch era carregado
Este relatório teria mais informações com
"Mostrar a saida detalhada durante a compilação"
opção pode ser ativada em "Arquivo -> Preferências"
oq eu faço pra resolver ?????
Bom dia, vejo que um artigo tao antigo e ainda hoje trazendo duvidas, comecei com arduino a apenas 1 mês e tenho uma duvida, para colocar no lugar do servo motor, um relé, uso outra biblioteca? ja tem pronta? ou faço adptação nesta? valeu desde ja
Bom dia,
Pode usar essa mesmo. Não vai nem precisar de biblioteca, apenas acionar a saída digital. Dê uma olhada nos outros artigos usando relé aqui do site.
abraço!
Adilson
Boa noite,
Teria como eu usar esse sistema, mais gostaria que ele ao encostar o cartao e deixo ali lebera o acesso e após retirar a teg ele travaria, pois quero efetuar um progeto que quando o funcionario colocar seu cartao na maquina ele libera pra trabalho e ao retirar seu cartao ela bloquria, assim podem ter um controle efetivo de quem e quando utilizaram o terminado equipamento, isso utilizando outros recursos para armazenamento de dados.
Meu leitor não funciona quando está conectado a tensão no 3.3 só quando retiro ele desse pino o arduino inicia e ele funciona normalmente não consigo entender o porque
Boa tarde.
Quando vc conecta o 3.3 o Arduino desliga? é isso? Se for isso, tem algum curto na sua fiação, dê uma checada, por favor.
Abraço!
Adilson
Em primeiro lugar gostaria de agradecer a sua dedicação em ajudar a muitos que acompanham a arduino e cia a tirarem suas dúvidas. Sou iniciante com o arduino e tive êxito e excelência em executar um projeto"meio caminho andado", através do seu blog. Sendo que estou tendo uma dificuldade de habilitar uma tag (chaveiro) caso a pessoa perda o cartão mastercard, – uma 2 via. Gostaria de saber se é possível habilita lo para liberação e se pode me dar ajuda? Certamente esse protótipo saindo do papel. Estarei entrando em contato com você
Desde já grato.
Oi Herbert,
Tudo bem? Você quer usar o cartão de crédito para liberar, certo? Com esse módulo não vai ser possível.
Abraço e obrigado!
Conseguiu?
Boa noite,
Posso te ajudar? O que precisa?
Abraço!
Adilson
Ola , gostaria de saber se tem como no codigo colocar uma opção para gravar as tags quando essas nao estiverem cadastradas ao inves de ter que digita-las no codigo? Por exemplo: Eu chego com a minha tag cadastrada e passo no leitor e ele libera minha passagem, mas se eu colocar uma tag nao cadastrada ele informa que a tag nao cadastrada e me da duas opções – sim ou nao – para que eu cadastre ou nao a tag, se eu escolher não ele finaliza e nao libera passagem, se eu digitar sim, ele solicita uma senha e apos digitar a senha ele realia o cadastro da tag. Espero que eu tenha consigo passar o que eu desejo saber…srsr… Teria como fazer isso?
Oi Marcos,
Legal. É possível sim, mas nesse caso eu acho interessante gravar os dados das tags em um cartão SD, por exemplo.
Abraço!
Adilson
Obrigado por responder
Gostaria de mais uma ajuda: Como eu faço para que ao ler uma tag pelo RFID essa tag seja guardada em uma variavel ? Eu fiz um projeto onde o que é lido no RFID sera enviado para uma planilha, porem nao consigo capturar e guardar a id das tags em um variavel.
Voce consegue me ajudar?
Desde ja agradeço.
E desculpe entrar em contato tanto tempo depois da primeira pergunta.
pessoal, me perdoe a ignorância, mas para que serve o char st[20]; neste codigon??? obrigado!
Good Night! 😀
Pra ser sincero, acho que o st[20] não serve pra nada… rs.. creio que seja sobra de algum programa anterior ou algum teste que eu fiz…
Abraço!
Adilson
Bom dia, gostaria de saber como faço para inserir outras tags para liberação. Através do IF, pelo pesquisei, aqui mesmo no seu bloguer .Pode me passar com aonde inseri- las Se puder me ajudar desde já te agradeço. Excelente projeto. Parabéns. Só estou tendo essa dificuldade.
Oi De Souza,
Você pode copiar a parte do código (linhas 67 a 78) como eu fiz para verificar o segundo cartão.
O que voce precisa mudar nessas linhas copiadas é o if (conteudo.substring(1) == "87 4B DC 8A"), substituindo no caso o 87 4B DC 8A pelo código do cartão que você quer cadastrar.
Abraço!
Adilson
Bom dia. Gostaria de uma ajuda.Esse seu projeto é muito bacana. Mas tenho enfrentado problemas, não estou conseguindo, após identificar, a UID da TAG na Serial, cadastrar novos cartões. Sabendo que é o IF *if*(conteudo.substring(1) == "D8 4B 12 22"). Aonde devo colocar o codigo if (conteudo.substring(1) == "D8 4B 12 22" Por favor, me de uma luz!
Oi De Souza,
Você pode copiar a parte do código (linhas 67 a 78) como eu fiz para verificar o segundo cartão.
O que voce precisa mudar nessas linhas copiadas é o if (conteudo.substring(1) == "87 4B DC 8A"), substituindo no caso o 87 4B DC 8A pelo código do cartão que você quer cadastrar.
Abraço!
Adilson
oi tudo bem , gostaria se possível de uma ajuda, aonde o circuito se comportasse assim, ao aproximar a tag o led verde ascende e permaneça assim enquanto a tag estiver no leitor, ao afastar a tag ele se apaga, agradeço a todos e parabéns pelo grande conteúdo do site