Como gravar dados no cartão RFID 97

Neste post vamos mostrar como gravar dados no Cartão RFID Programável Mifare 13,56Mhz, que pode ser usado juntamente com o leitor de cartões MFRC522, presente no Kit Módulo Leitor RFID MFRC522 . Esse cartão possui 1KB de memória, dos quais 768 bytes estão livres para gravação de dados pelo usuário.

Gravação tag RFID

Aqui no blog nós já apresentamos um projeto com leitor RFID, no post Controle de Acesso usando leitor RFID com Arduino, onde usamos o leitor para validar (ou não), a UID de um cartão.

ATENÇÃO! O programa de exemplo deste post apaga os dados do seu cartão RFID, portanto faça testes apenas com um cartão apropriado, evitando aproximar do leitor cartões de Banco, cartões de crédito, bilhete único, etc, que utilizem tecnologia RFID.

Ligação do módulo RFID ao Arduino

O esquema de ligação do módulo RFID ao Arduino é o mesmo do post sobre o Controle de Acesso, com a inclusão de dois botões para seleção das funções de leitura e gravação. Conecte o módulo conforme a imagem abaixo, observando que a alimentação dele é de 3,3V. Vamos utilizar um display LCD para mostrar as mensagens de leitura e gravação.

O push-button marcado com a letra L ativa o modo de leitura do cartão, e o push-button com a letra G ativa o modo de gravação.

Programa leitura e gravação cartão RFID

Colocamos em um mesmo programa as funções de leitura e gravação, e vamos selecionar cada uma delas com um push-button, conforme descrito acima. Para gravação dos dados no cartão, vamos utilizar o Serial Monitor como interface de entrada.

Carregue o seguinte programa no Arduino, que utiliza a biblioteca MFRC522, disponível neste link. Descompacte a pasta e coloque-a dentro da pasta LIBRARIES da IDE do Arduino.

A seleção será feita pelo push-button, que vai mostrar por alguns segundos a mensagem “Modo gravação selecionado” ou “Modo leitura selecionado”.

Primeiramente selecione o modo de gravação (push-button direito) e mantenha o cartão RFID próximo ao leitor até o final da gravação. Digite o sobrenome do usuário no serial monitor, terminando com o caractere #:

Serial_Monitor_Gravacao_Sobrenome

Repita o mesmo processo, agora para o nome:

Serial_Monitor_Gravacao_Nome

Se a gravação ocorreu normalmente, a mensagem “Gravação OK!” será exibida no display.

Leitura dos dados do cartão

Para efetuar a leitura, pressione o push-button e selecione o “Modo de leitura”. Depois disso, simplesmente aproxime o cartão do leitor, e os dados serão mostrados no display LCD e também no serial monitor.

<imagem – dados LCD>

Você também pode utilizar o programa de exemplo DumpInfo, presente na biblioteca, para verificar como os dados foram gravados no cartão. Na IDE do Arduino, carregue o programa no menu Arquivo => Exemplos => MFRC522 => Dumpinfo

Aproxime o cartão do leitor, e será feito um dump das informações do cartão, com os dados sendo mostrados no serial monitor. Nesse dump você pode conferir os dados que foram gravados no cartão, especificamente nos setores 0 e 1:

Serial_Monitor_Dump_String

No cartão os dados são gravados no formato hexadecimal, e posteriormente convertidos em caracteres e mostrados no display com os comandos lcd.write(char(<dados>)). Você pode relacionar os códigos em hexadecimal com os caracteres utilizando uma tabela ascii, como fizemos na imagem acima, mostrando que o número 46 corresponde ao F, o 69 ao I, o 6C ao L e assim por diante.

Gostou ? Ajude-nos a melhorar o blog atribuindo uma nota aos posts (estrelas no início ou no final do artigo) e visite nossa loja FILIPEFLOP !

Posts Relacionados

Deixe uma resposta para FIlipe Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

97 Comentários

  1. Qual a distância mínima para reconhecimento do cartão?

    1. Bom dia Bruna,

      É bem próxima, coisa de uns 5 cm.

      Abraço

      Adilson – Equipe FILIPEFLOP

      1. Existe algum leitor pra arduino com uma distância maior?

  2. Vc pode fazer um codigo com controle de acesso sem os botões e q acione o relé.

  3. Como eu faria pra q essa distância aumentasse? é pela frequência do módulo RFID?

  4. Boa tarde.

    Qual a distancia maxima para o reconhecimento pelo RFID?

  5. boa noite , estou tendo dificuldades para baixar a biblioteca RFID.H , gostaria de alguma dica ou ajuda .

    desde já agradeço a atenção de todos.

    Obrigado

    Rafael Medeiros de Oliveira
  6. Boa noite, estou precisando de uma ajuda urgente comprei um RFID-RC522 na loja FLIPEFLOP, porem, não estou conseguindo ler as tags, para adicionar no meu projeto, na verdade acho que ha um problema com o RC522 pois ele não esta lendo as tags, compilei o código que lê as tags e o mesmo apenas apresenta as frases iniciais como aproxime o cartão do leitor, e não apresenta a parte do UID do cartão. Esto precisando muito da ajuda de vcs obrigado.

    1. Olá! Você soldou os contatos ?

      Estava com problema também e só vi o leitor funcionar após soldar os contatos.

      Abraço.

      1. Sim Michela já soldei os contatos e verifiquei os mesmos, verifiquei toda fiação e o programa e não achei nenhum erro, o pior de tudo e que a loja FILIPEFLOP, não está retornado meus emails e isto e um trabalho de faculdade, solicitei informações para mandar o produto de volta para analise e eles não me respondem e cada vez o prazo de entregar o trabalho fica mais curto. Já tinha realizado compras na loja e aconselhava aos amigos e colegas pela qualidade dos produtos, pelo rápido prazo de entrega e o atendimento, mas após este episodio não aconselho mais a ninguém, se possível desaconselho a pessoa.

        Se outra pessoa tiver uma sugestão ou conselho pra me dar, pois se depender da boa vontade da loja perco um semestre na faculdade .
        Obrigado

        1. 1o – veja se a luz dele acende..se acender, ele n está queimado nem nd..
          2o – verifique se conectou certo os cabos…n sei se vc sabe eletronica mto bem entao digo que poderia ser algum erro de endtendimento da protoboard
          3o – ligue o arduino, instale o software dele, abra o monitor serial dando CTRL+SHIFT+M e logo ele dara a mensagem para aproximar o cartao…
          se vc n chegou ate esta parte de ler essa msg no monitor serial, ha coisas erradas conectadas msm..se vc chegou mas o cartao nem o chaveiro fazem leitura do UID o provável é que ele esteja realmente com defeito

  7. Oá,

    Uma dúvida! Vi que o dado é gravado no Bloco 1…e depois é necessário autenticar no Bloco2…
    Dado gravado no Bloco 4 e depois autenticação no Bloco 5.

    Se eu for gravar um novo dado no Bloco 5, tenho que autenticar no Bloco 6 depois ?

    Poderia me explicar porque preciso autenticar no bloco seguinte ?

    Obrigada.

    1. Michela,

      de acordo com a documentação do mfrc522, para acesso a cada bloco é necessário a autenticação nele.

  8. Sabe o limite de vezes que se pode inscrever nesse cartão RFID?

    1. depende do tamanho dos dados…o cartão e o chaveiro possuem memória de 1kb se não me engano

  9. o potenciômetro usado é de 1k ou 10k?

    1. Boa tarde Bruna,

      O potenciômetro usado é de 1K, mas como é apenas para ajuste do contraste do LCD, você pode utilizar outros valores sem problemas.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  10. Ola Boa tarde… gostaria de saber quantos cartões posso gravar com esse código?
    Parabéns pelo blog e origado..

    1. Bom dia Allysson,

      Quantos cartões você quiser, não há limite.

      Abraço!

      Adilson – Equipe FILIPEFLOP

      1. ola felipe flop parabens pelo site tudo bem detalhado, gostaria de saber se tem como eu gravar os dados num card sd e dps salvar no pc em execel tipo com data e hora gravado no sd ?

        1. Boa tarde José,

          Tem sim, os dados são gravados em formato “texto”, assim você pode abrir no Excel e trabalhar com esses dados da maneira que for mais conveniente.

          Abraço!

          Adilson – Equipe FILIPEFLOP

  11. Olá Boa Tarde,

    Preciso muito de sua ajuda, como faço para gravar números com casas decimais na memoria do cartão. Consigo gravar números inteiros tipo 1,2,3,4,5, usando mfrc522.MIFARE_Decrement(valueBlockA, value), mas gravar com casas decimais não tipo 1.50, 2.50, 3.50 não conseguir. Fico muito agradecido se puder me ajudar.

    1. Grava como 150, 250 e 350 e quando foi ler divide por 100. 😉

  12. Gostaria muito de uma ajuda! Queria poder gravar as IDs no cartao sd e sempre quando encostar a tag na RFID o arduino pesquisar no cartao sd, se estiver la, ele autentica se nao ele nega o acesso!

  13. boa noite! comprei um kit com rfid e tenho umas duvidas;o cartao e o chaveiro já vêm com informação? e o leitor funciona solto mesmo ou só se soldar os conectores que vêm junto com o uno.
    pois não estou conseguindo fazer a leitura.

    agradeço desde já.

    1. Bom dia,

      O cartão e chaveiro está zerados, apenas contém a UID. O conector precisa ser soldado.

      Abraço

      Adilson – Equipe FILIPEFLOP

  14. Bom dia, eu consigo usar esse cartão em um dispositivo Android?

    1. Boa tarde Paulo,

      Se o seu dispositivo possuir NFC, creio que sim. Não fizemos o teste ainda.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  15. Lindo proyecto pero me da estos errores

    sketch_jan11f:234: error: stray ‘302’ in program

    sketch_jan11f:234: error: stray ‘240’ in program

    In file included from C:UsersLuisDocumentsArduinosketch_jan11fsketch_jan11f.ino:5:0:

    C:UsersLuisDocumentsArduinolibrariesMFRC522/MFRC522.h:384:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    exit status 1
    stray ‘302’ in program

    saludos

    1. O meu tbm…tentei de td pra ver se n tinha caractere a mais ou a menos mas n encontrei solução..

    2. Também não estou a conseguir. O problema é o mesmo.

    3. Penso que descobri a resposta.
      Experimente mudar o tipo da variável “status”.

      No código acima a variável “status” encontra-se presente nas funções:
      -void modo_gravacao();
      -void modo_leitura();

      Em ambas as funções a variável “status” é do tipo “byte”. Experimente mudar para o tipo “MFRC522::StatusCode”.

      E em relação à variável “piccType” que também é do tipo “byte” (presente na função “void modo_gravacao()”) mude para “MFRC522::PICC_Type”.

      É apenas uma sugestão. Desta forma consegui compilar sem erros mas ainda não tive a oportunidade de testar, logo não tenho garantias que dê certo.

      1. Tentei fazer algumas alterações mas n deu certo aqui…creio que não entendi muito bem como fazer..poderia ser mais claro?

    4. Conforme o Nuno falou, pra resolver o problema do piccType, substitua a linha

      byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);

      por

      MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);

      compilou aqui corretamente e funcinou a leitura do tipo de cartão.

  16. Quem tiver com problemas pra aparecer as informações no LCD, conecte na sequencia ao arduino: GND,5V,GND,7,GND,6, 0,0,0,0,5,4,3,2, 3.3V, GND (SEM TRIMPOT com iluminação do lcd nao tão alta)
    E mude no programa tb LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
    RFID ao arduino ficou: 3,3v, 9,GND,12,13,10

  17. Boa tarde,

    Sou sindico de um condominio, temos essas tags no portão, , a empresa que fez a instalação me cobra 15 reais para fazer uma cópia da tag, com esse esquema consigo efetuar as cópias ?

  18. O mesmo codigo funciona no arduino nano?

  19. Pessoal, também tive os mesmos problemas.O erro estava na biblioteca do MRC522.Segue o link para a biblioteca do MRC522 que funciona sem erros o Sketch acima.Só instalar e funciona direitinho sem modificações no Arduino UNO e IDE 1.6.7
    Bom trabalho e estudos a todos.
    http://makecourse.weebly.com/week10segment1.html

    1. estava com este erro na compilação , baixei esta biblioteca e resolveu, muito obrigado .

      invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    1. Boa tarde Eduarda,

      É o trimpot (potenciômetro) para ajuste do contraste do display: https://www.filipeflop.com/pd-24795e-potenciometro-trimpot-1k.html

      Abraço!

      Adilson – Equipe FILIPEFLOP

      1. esse potenciomentro é só para o controle do brilho do display?

        1. Boa tarde Eduarda,

          Não, são para o controle do contraste do display. O brilho é controlado, no caso do display 16×2, pelos pinos 15 e 16.

          Abraço

          Adilson – Equipe FILIPEFLOP

  20. estou tendo um problema , sempre que vou passar a minha programação para o ARDUINO da este erro

    Opções de compilação alteradas, recompilando tudo

    O sketch usa 12.678 bytes (39%) de espaço de armazenamento para programas. O máximo são 32.256 bytes.
    Variáveis globais usam 1.359 bytes (66%) de memória dinâmica, deixando 689 bytes para variáveis locais. O máximo são 2.048 bytes.

    sabe como resolver?

    1. Boa tarde Angelo,

      Esta não é uma mensagem de erro, são mensagens normais que a IDE do Arduino mostra no final da compilação, com informações sobre o consumo de memória e variáveis.

      Abraço!

      Adilson – Equipe FILIPEFLOP

  21. Eu consigo fazer um jumper nas entradas PWM? que eu fiz este projeto mas estou querendo colocar um servomotor e n tem entradas disponíveis mais..

  22. estou tendo um pequeno problema, quando começo a gravar , nao aparece em meu computador aquela caixa para eu gravar os dados do cartao , como nome, sobrenome …
    vocês sabem qual pode ser o erro?

  23. Tem alguma dica de como fazer isto em um pic?

    1. Sim tanto em ccs quando em mikroe, so da uma pesquizada ai , e tambem pode portar de atmega pra pic e vice versa so ter um pouco de conhecimento..

  24. possui alguma maneira de quando o cartão não for reconhecido aparecer escrito , acesso negado ?

    1. Boa tarde,

      Sim, você pode usar as informações deste post: http://blog.filipeflop.com/wireless/controle-acesso-leitor-rfid-arduino.html

      Abraço!

      Adilson – Equipe FILIPEFLOP

  25. Boa tarde, para mim aparece este erro.

    Arduino: 1.6.8 (Windows 7), Placa:”Arduino/Genuino Uno”

    D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino: In function ‘void modo_leitura()’:

    grava__o_rfield:124: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    Serial.println(mfrc522.GetStatusCodeName(status));

    ^

    In file included from D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino:5:0:

    D:DocumentoArduinolibrariesrfid-master/MFRC522.h:384:36: error: initializing argument 1 of ‘static const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    static const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    grava__o_rfield:130: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    Serial.println(mfrc522.GetStatusCodeName(status));

    ^

    In file included from D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino:5:0:

    D:DocumentoArduinolibrariesrfid-master/MFRC522.h:384:36: error: initializing argument 1 of ‘static const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    static const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    grava__o_rfield:153: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    Serial.println(mfrc522.GetStatusCodeName(status));

    ^

    In file included from D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino:5:0:

    D:DocumentoArduinolibrariesrfid-master/MFRC522.h:384:36: error: initializing argument 1 of ‘static const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    static const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    grava__o_rfield:160: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    Serial.println(mfrc522.GetStatusCodeName(status));

    ^

    In file included from D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino:5:0:

    D:DocumentoArduinolibrariesrfid-master/MFRC522.h:384:36: error: initializing argument 1 of ‘static const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    static const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino: In function ‘void modo_gravacao()’:

    grava__o_rfield:198: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::PICC_Type’ [-fpermissive]

    Serial.println(mfrc522.PICC_GetTypeName(piccType));

    ^

    In file included from D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino:5:0:

    D:DocumentoArduinolibrariesrfid-master/MFRC522.h:388:36: error: initializing argument 1 of ‘static const __FlashStringHelper* MFRC522::PICC_GetTypeName(MFRC522::PICC_Type)’ [-fpermissive]

    static const __FlashStringHelper *PICC_GetTypeName(PICC_Type type);

    ^

    grava__o_rfield:219: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    Serial.println(mfrc522.GetStatusCodeName(status));

    ^

    In file included from D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino:5:0:

    D:DocumentoArduinolibrariesrfid-master/MFRC522.h:384:36: error: initializing argument 1 of ‘static const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    static const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    grava__o_rfield:227: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    Serial.println(mfrc522.GetStatusCodeName(status));

    ^

    In file included from D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino:5:0:

    D:DocumentoArduinolibrariesrfid-master/MFRC522.h:384:36: error: initializing argument 1 of ‘static const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    static const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    grava__o_rfield:237: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    Serial.println(mfrc522.GetStatusCodeName(status));

    ^

    In file included from D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino:5:0:

    D:DocumentoArduinolibrariesrfid-master/MFRC522.h:384:36: error: initializing argument 1 of ‘static const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    static const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    grava__o_rfield:245: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    Serial.println(mfrc522.GetStatusCodeName(status));

    ^

    In file included from D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino:5:0:

    D:DocumentoArduinolibrariesrfid-master/MFRC522.h:384:36: error: initializing argument 1 of ‘static const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    static const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    grava__o_rfield:263: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    Serial.println(mfrc522.GetStatusCodeName(status));

    ^

    In file included from D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino:5:0:

    D:DocumentoArduinolibrariesrfid-master/MFRC522.h:384:36: error: initializing argument 1 of ‘static const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    static const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    grava__o_rfield:271: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    Serial.println(mfrc522.GetStatusCodeName(status));

    ^

    In file included from D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino:5:0:

    D:DocumentoArduinolibrariesrfid-master/MFRC522.h:384:36: error: initializing argument 1 of ‘static const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    static const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    grava__o_rfield:281: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    Serial.println(mfrc522.GetStatusCodeName(status));

    ^

    In file included from D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino:5:0:

    D:DocumentoArduinolibrariesrfid-master/MFRC522.h:384:36: error: initializing argument 1 of ‘static const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    static const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    grava__o_rfield:289: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    Serial.println(mfrc522.GetStatusCodeName(status));

    ^

    In file included from D:DocumentoArduinograva__o_rfieldgrava__o_rfield.ino:5:0:

    D:DocumentoArduinolibrariesrfid-master/MFRC522.h:384:36: error: initializing argument 1 of ‘static const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    static const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    exit status 1
    invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    1. Também estou com esse erro, alguem resolveu?

  26. Olá, existe alguma forma de controlar o range da antena, eu precisaria que o mesmo fosse consideravelmente menor. Obrigado

  27. No meu teste apareceu o seguinte erro:
    Modo leitura selecionado
    Aproxime o seu cartao do leitor…
    UID da tag : A5 11 6A 02
    PCD_Authenticate() failed: Error in communication.

    Gravando aparece o seguinte:
    Digite o sobrenome,em seguida o caractere #
    MIFARE_Write() failed: A MIFARE PICC responded with NAK.

    Existe algo de errado com minha tag?

    1. Você tem que abrir o “monitor serial” da IDE

  28. Olá, tenho duas duvida sobre o código acima, a primeira é se é possível alterar o valor do UID da TAG;
    E a segunda duvida é como faço para copiar apenas parte da informação da UID, por exemplo UID: A9 C6 83 4A, e quero copiar cada um dos valores para uma variável, A = A9, B = C6, C = 83, D = 4A.
    como faço isso?

    Obrigado

    1. Primeiro – não. É por isso que se chama UID, unique ID… Cada cartão tem um ID que é inalterável.
      Segunda – Sim, você pode copiar o UID do cartão para outro bloco, estes dados estão no bloco 0 do setor 0

  29. No caso de perder um card ou chaveiro e possível deletar usando o mesmo esquema sem precisar entrar na serial usando essas configurações?

  30. Pessoal com problema com o GetStatusCodeName.

    Essa é uma função antiga não mais suportada pelo criador da biblioteca. Baixem uma biblioteca antiga ou arrumem o código que dá certo.

    Abraços.

    1. Não existe uma solução pra substituir a função antiga por outra nova?

  31. Olá, modifiquei um pouco o código, e fiz que cada vez que eu coloco uma Tag cadastrada acione um relé e mostre no LCD. Mais o problema é que as Tags que não foram cadastradas também acionam o relé. Como o programa pode cadastrar infinitas Tags surgiu esse seguinte problema problema, como eu posso colocar um controle para acionar o relé só nas Tags que foram cadastradas? Obrigado

  32. Amigo teria com criptografar o cartão rfid para evitar clonagem ? Se tem como fazer ?

  33. esse projeto aqui esta com erro. vcs pode mim ajudar?

    Arduino: 1.6.9 (Windows 10), Placa:”Arduino/Genuino Uno”

    C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino: In function ‘void modo_leitura()’:

    CONTROLE_DE_ACESSO_RFID.ino:124: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    In file included from C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino:5:0:

    C:UsersMOISESDocumentsArduinolibrariesMFRC522/MFRC522.h:384:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    CONTROLE_DE_ACESSO_RFID.ino:130: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    In file included from C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino:5:0:

    C:UsersMOISESDocumentsArduinolibrariesMFRC522/MFRC522.h:384:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    CONTROLE_DE_ACESSO_RFID.ino:153: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    In file included from C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino:5:0:

    C:UsersMOISESDocumentsArduinolibrariesMFRC522/MFRC522.h:384:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    CONTROLE_DE_ACESSO_RFID.ino:160: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    In file included from C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino:5:0:

    C:UsersMOISESDocumentsArduinolibrariesMFRC522/MFRC522.h:384:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino: In function ‘void modo_gravacao()’:

    CONTROLE_DE_ACESSO_RFID.ino:198: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::PICC_Type’ [-fpermissive]

    In file included from C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino:5:0:

    C:UsersMOISESDocumentsArduinolibrariesMFRC522/MFRC522.h:388:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::PICC_GetTypeName(MFRC522::PICC_Type)’ [-fpermissive]

    const __FlashStringHelper *PICC_GetTypeName(PICC_Type type);

    ^

    CONTROLE_DE_ACESSO_RFID.ino:219: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    In file included from C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino:5:0:

    C:UsersMOISESDocumentsArduinolibrariesMFRC522/MFRC522.h:384:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    CONTROLE_DE_ACESSO_RFID.ino:227: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    In file included from C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino:5:0:

    C:UsersMOISESDocumentsArduinolibrariesMFRC522/MFRC522.h:384:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    CONTROLE_DE_ACESSO_RFID.ino:237: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    In file included from C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino:5:0:

    C:UsersMOISESDocumentsArduinolibrariesMFRC522/MFRC522.h:384:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    CONTROLE_DE_ACESSO_RFID.ino:245: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    In file included from C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino:5:0:

    C:UsersMOISESDocumentsArduinolibrariesMFRC522/MFRC522.h:384:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    CONTROLE_DE_ACESSO_RFID.ino:263: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    In file included from C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino:5:0:

    C:UsersMOISESDocumentsArduinolibrariesMFRC522/MFRC522.h:384:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    CONTROLE_DE_ACESSO_RFID.ino:271: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    In file included from C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino:5:0:

    C:UsersMOISESDocumentsArduinolibrariesMFRC522/MFRC522.h:384:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    CONTROLE_DE_ACESSO_RFID.ino:281: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    In file included from C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino:5:0:

    C:UsersMOISESDocumentsArduinolibrariesMFRC522/MFRC522.h:384:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    CONTROLE_DE_ACESSO_RFID.ino:289: error: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    In file included from C:UsersMOISESDesktopArduinoPROGRAMA LEITURA E GRAVAÇÃO CARTÃO RFIDCONTROLE DE ACESSO RFIDCONTROLE_DE_ACESSO_RFID.inoCONTROLE_DE_ACESSO_RFID.ino.ino:5:0:

    C:UsersMOISESDocumentsArduinolibrariesMFRC522/MFRC522.h:384:29: error: initializing argument 1 of ‘const __FlashStringHelper* MFRC522::GetStatusCodeName(MFRC522::StatusCode)’ [-fpermissive]

    const __FlashStringHelper *GetStatusCodeName(StatusCode code);

    ^

    Foram encontradas múltiplas bibliotecas para “MFRC522.h”
    Usado: C:UsersMOISESDocumentsArduinolibrariesMFRC522
    Não usado: C:arduinoarduino-1.6.9librariesMFRC522
    exit status 1
    invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    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”

  34. Olá! Poderia me explicar a seguinte linha: “status = mfrc522.MIFARE_Write(block, &buffer[16], 16);” ?

    O que está sendo escrito neste bloco? Percebi que, após escrever os dados em um dado bloco, é escrito algo em outro bloco.

    Agradeço.

  35. Tenho um projeto onde uso cartão master para cadastrar os UID, apos cadastrados permite o acesso. Porem o UID é imutável!!! Gostaria de saber se poderia lhe enviar meu programa e altera-lo para que o cadastro seja de uma variável diferente do UID. O projeto é pra um Hotel, porta dos quartos.

  36. Boa tarde

    Gostaria de saber se é possivel armazenar as tags que entraram o ou a ultima tags utilizada.

  37. Olá.
    Tenho em mãos um leitor Mifare para cartões porém o software que uso me transmite informações somente o Código Hexadecimal invertido de acordo com as duplas do Mifare_1K. Para realizar a tarefa que tenho preciso dos códigos decimais de acordo com o código Hexadecimal normal, porém não consigo isso. Se tiveres alguma dica, um software diferente que eu possa usar ou algum comando eu ficaria agradecido, eu uso o programa ICTransfer, é bem limitado mas é tudo que tenho. Obrigado desde ja

  38. depois que eu digito o sobrenome e envio da esse erro da ultima linha

    Selecione o modo leitura ou gravacao…

    Modo gravacao selecionado
    Aproxime o seu cartao do leitor…
    UID do Cartao: 36 DF 4C 54
    Tipo do PICC: MIFARE 1KB
    Digite o sobrenome,em seguida o caractere #
    PCD_Authenticate() failed: Timeout in communication.

    1. e trava o arduino

    2. achei o que erra eu estava tirando o cartao do leitor e ate o final do processo ele necessita ficar no leitor como no video

  39. agora estou com o seguinte problema abaixo
    depois de gravar o nome ele da a mensagem: MIFARE_Write() failed: A MIFARE PICC responded with NAK.

    Modo gravacao selecionado
    Aproxime o seu cartao do leitor…
    UID do Cartao: 36 DF 4C 54
    Tipo do PICC: MIFARE 1KB
    Digite o sobrenome,em seguida o caractere #
    Digite o nome, em seguida o caractere #
    MIFARE_Write() failed: A MIFARE PICC responded with NAK.

    Selecione o modo leitura ou gravacao…

    Modo leitura selecionado
    Aproxime o seu cartao do leitor…
    UID da tag : 36 DF 4C 54

    1. Ola,
      gostaria de saber se conseguiu resolver o seu problema, pois estou com o mesmo.
      se for possível me ajudar fico muito grato.

  40. Muito bom! Justamente o que eu precisava para o meu projeto, obrigado!

  41. Tenho o rfid com um cartão , e um chaveiro.
    Só o chaveiro lê os cartão não, passo ele e no serial não mostra nada, cheguei a comprar novos cartões e deu a mesma coisa. Seria isso um erro na placa rfid

    1. Tenho o mesmo problema, mas ao invés de ler só o chaveiro, ele só lê o cartão. Conseguiu resolver o problema? Era problema no rfid mesmo?

      1. Consegui resolver não cara. Como era só um protótipo usei só o chaveiro mesmo

  42. Muito bacana o tutorial! Só estou com duas dúvidas:
    1) A chave que é preparada na linha 33 do código tem a ver com a Chave A que é colocada no Bloco 1 do cartão?
    2) Teria como ler a Chave A de um cartão, armazena-la e defini-la como a Chave A de outro cartão?


    Linha 32 e 33::
    //Prepara chave – padrao de fabrica = FFFFFFFFFFFFh
    for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;

    Obrigado!

  43. Boa tarde, gostaria de saber se tem como colocar os valores nos dados da tag através de uma variável do próprio programa e não por meio do teclado, pois quero armazenar na tag os valores de um sinal vindo do pino de entrada analógica do controlador.

  44. Vc pode me mandar só o código que grava amigo? Muito grato… Gmail:[email protected]

  45. teria como mudar a Chave padrão de fabrica?ou isso é impossível?
    “//Prepara chave – padrao de fabrica = FFFFFFFFFFFFh
    for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;"

  46. Amigo, eu consigo escrever em uma TAG ou chip rfid???

  47. Boa noite, fiz o projeto e funcionou 100%, tenho uma duvida, como consigo cadastrar novas TAG’s ? , para a liberação de acesso ?

  48. Estou com dois problemas.

    1 – Nao aparece os dados no LCD. Ele acende e ate regula a intensidade de luz mas nao traz informação nenhuma

    2 – O maior problema é que ao colocar no modo leitura nao aparece o nome no serial monitor, somente o UID.

    Peguei um cartão ja gravado em outro sistema onde ao colocar no modulo leitura (neste sistema) aparecia um nome e o UID porem ao gravar o cartao novamente por este sistema ao refazer a leitura somente aparece o UID.

    Alguem tem uma solução pra este problema.
    Fico no aguardo.
    Obrigado

    1. Resolvido!!!!

      1. Poderia me enviar a biblioteca que estás usando do MFRC? [email protected]

        Obrigado.

  49. Estou com este erro, alguém saberia solucionar?

    invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::StatusCode’ [-fpermissive]

    1. ola Fernando tive o mesmo problema , vc solucionou o erro no seu programa?

      1. Bom dia. Não solucionei. Tentei rodar algumas outras versões da IDE, mas ainda nada…

  50. Alguém já conseguiu passar esse código pra Python?

  51. Ola Felipe gostaria de saber se é possivel em vez de gravar o nome cono no ex: gravar um contador tipo (for),para uns 3 acesso ,apartir dai não ter mais acesso ?

  52. Quantas vezes eu posso gravar / apagar informações do cartão? Apenas uma? várias?

  53. Alguém teve problema com a leitura como no meu caso q só está lendo o cartão,mas o chaveiro não? Sabe resolver esse problema ou é problema no rfid mesmo?

  54. Caso eu precise gravar uma String um pouco maior que nome e sobrenome, o que eu precisaria fazer? aumentar o tamanho dos buffers ou algo assim?

  55. Eu consigo alterar o byte de transmissão do cartão RFID a partir desse código de gravação?

  56. Na parte de obtenção dos dados, a que se refeririam os blocos e setores e outros dados nestas linhas ?

    FERNANDO LACERDA DE SOUZA SILVA
  57. Olá Felipe parabéns pelo tutorial , deixa eu te pergunta seria possivel identificar um cartão pelo conteudo ex em vez do UID do cartao que esta no bloco 0 e 1 usar um outro codigo tipo no bloco 4 e 5 para reconhecer o cartão e acionar um led por exemplo?