NFC é a sigla em inglês de Comunicação por Campo de Proximidade (Near field communication). “É uma tecnologia que permite a troca de informações sem fio e de forma segura entre dispositivos compatíveis que estejam próximos um do outro. Ou seja, logo que os dispositivos estejam suficientemente próximos, a comunicação é estabelecida automaticamente, sem a necessidade de configurações adicionais. Estes dispositivos podem ser telefones celulares, tablets, crachás, cartões de bilhetes eletrônicos, pulseiras e qualquer outro dispositivo que tenha um chip NFC.”
Essa tecnologia foi iniciada à partir de um acordo de cooperação entre a Philips e a Sony em 2002, para o desenvolvimento da NFC. Em 2004, a Nokia entrou também no grupo de desenvolvimento e criaram o Forum NFC.
A distância definida para a comunicação NFC é de até 10 cm, visando velocidades rápidas o suficiente para transferir imagens de alta qualidade. Com velocidade de comunicação de até 848 kbit /s, a tecnologia NFC é totalmente compatível com as tecnologias de cartão inteligente sem contato Mifare da Philips e FeliCa da Sony.
Passivo: apenas um dos dispositivos gera o sinal de conexão, o segundo apenas recebe. Assim é possível colocar etiquetas NFC em itens que não recebem alimentação elétrica direta, como cartões, embalagens e cartazes.
Ativo: ambos os dispositivos geram o sinal, por exemplo, na conexão entre um smartphone e um receptor no caixa de uma loja.
Leitura e gravação: leitura ou alteração de dados em um dispositivo NFC, como um receptor que desconta créditos registrados em um cartão de bilhete de ônibus.
Peer-to-peer: cada dispositivo pode tanto receber quanto enviar dados para o outro, por exemplo, para a troca de arquivos entre dois smartphones.
A NFC funciona usando indução magnética, assim como no RFID: um leitor emite uma pequena corrente elétrica que cria um campo magnético. Esse campo é recebido por uma bobina semelhante no dispositivo do cliente, onde é transformada novamente em impulsos elétricos para transmitir e receber dados, como informações de identificação ou qualquer outra informação. As etiquetas NFC passivas usam a energia do leitor para codificar sua resposta, enquanto as etiquetas NFC ativas têm sua própria fonte de energia e respondem ao leitor usando seus próprios campos eletromagnéticos.
Essa apostila da Nokia contém conteúdo bem interessante e detalhado sobre NFC :
NFC é uma tecnologia recente e a cada dia tem sido criadas novas aplicações para o seu uso. Aqui no Brasil, vários Bancos já estão usando o NFC para que os usuários possam efetuar transações financeiras. É claro, existe uma limitação de valor definida pelo usuário, e o uso de senha permite segurança nas transações.
As etiquetas NFC inseridas em cartões de identificação, cartões de visita, posters, menus, etc, podem iniciar um aplicativo no smartphone ou conectar o usuário em um site de mídia social, por exemplo. Diferentemente de códigos de barras ou QR codes, as etiquetas NFC podem armazenar uma significante quantidade de dados, são mais seguras e podem ser protegidas por senhas. As etiquetas NFC incorporadas podem fornecer informações detalhadas sobre produtos, marcas, recomendações de consumidor, usuário,manuais, sustentabilidade, reciclagem e muito mais.
A grande maioria dos smartphones mais modernos estão vindo com circuitos que permitem a comunicação NFC. Por exemplo, podem ser usados para pagamentos através da NFC de uma caixa registradora, podem transferir arquivos de fotos de uma camera fotográfica para o smartphone, etc.
Outra forma de automação por NFC muito utilizada nos Estados Unidos é o pagamento de bilhetes de estacionamento via smartphone com NFC. Recentemente a empresa Kameda Corp lançou o sistema no Brasil, com um funcionamento simples: o motorista pode pagar o bilhete na saída do estacionamento com seu próprio smartphone, desde que este tenha o aplicativo integrado ao PayPal.
No NFC Forum existe um concurso anual para divulgação de novas aplicações do NFC. Acho que vale a pena dar uma olhada no vídeo abaixo , nos vencedores e finalistas do concurso de 2017:
Como no caso da RFID, a etiqueta NFC funciona no espectro de radiofrequência de 13,56MHz usando menos de 15mA de energia para comunicar dados entre distâncias que são geralmente menores que 10 cm. As etiquetas normalmente armazenam entre 48 e 888 bytes de dados e transferem dados usando velocidades de 106Kb / s, 212Kb / s, 424Kb / s ou 848Kb / s – o suficiente para mover os blocos de informação virtualmente instantaneamente. Veja na etiqueta abaixo NFC NTAG213, o chip NTGAG213 onde ficam armazenados os dados (EEPROM) e a antena que é formada pelo circuito circular. A retenção dos dados pode durar até 10 anos. E a memória pode ser regravada até 100.000 vezes !
Frequência de operação : 13,56 MHz
Diâmetro da antena = 35 mm (para NTag213)
Diâmetro da etiqueta = 38 mm (para NTag213)
Padrão : ISO 14443 A (da etiqueta NFC)
NTAG213 EEPROM: possui 180 bytes, organizados em 45 páginas de 4 bytes.
Tamanho das memórias do usuário nos chips NTAG :
Informações detalhadas sobre os chips das etiquetas NTAG 213, 215 e 216 : NTAG213_215_216 Datasheet
Especificações das Etiquetas BullsEye
Especificações das etiquetas Tipo 2 (NFC Forum) :
NTAG213 – mapa de memória EEPROM
As interfaces NFC são definidas pelos padrões ISO e ECMA. As normas ISO / IEC 18092 / ECMA-340 determinam modos de comunicação para NFC Interface e Protocol (NFCIP), para comunicação ativa e passiva, esquemas de modulação relevantes e velocidades de transferência. A ISO / IEC 21481 / ECMA-352 define NFCIP-2, que especifica os modos de comunicação para minimizar a interferência com outros dispositivos de cartão sem contato.
Se você se interessou pela NFC e deseja estudar a fundo o protocolo e interface ECMA, anexei esses dois documentos detalhados sobre a NFC-1 e NFC-2 .
ECMA-340 NFC-1 – Interface and Protocol
ECMA-352 NFC-2 – Interface and Protocol
referência : APCMAG – dentro da NFC
O módulo RFID-RC522, como o nome diz, foi desenvolvido para leitura de etiquetas RFID. Mas o chip MFRC522 do módulo permite também o uso de etiquetas NFC. Portanto vamos usa-lo para ler essas NTAGs.
Esse é o Datasheet do chip MFRC522, que contém todas as informações sobre como usá-lo.
Esse diagrama abaixo foi feito por mim. É o diagrama eletrônico do módulo RFID-RC522. Veja que a alimentação do módulo deve ser de 3,3V. As portas de controle e de comunicação SPI do Chip podem ser conectadas diretamente nas portas do Arduino (5V). A tensão das portas fica no limite, mas funcionam normalmente. Por isso não usei conversores de níveis de tensão.
Diagrama eletrônico do módulo RFID-RC522
O dois diagramas abaixo, mostram como devem ser feitas as conexões entre o Módulo RFID-RC522 e o Arduino UNO. Não se esqueça de conectar o GND do módulo ao GND do Arduino!
Materiais necessários para o projeto com Arduino e Módulo NFC RFID
Diagrama FRITZING – Arduino UNO com Módulo Leitor RC522
Arduino UNO com Módulo leitor RC522
A Biblioteca MFRC522 será usada nos exemplos desse tutorial. Para instalar a nova Biblioteca, clique em
Sketch > Incluir Biblioteca > Gerenciar Bibliotecas
Após abrir a janela do Gerenciador de Biblioteca, refine a busca digitando MFRC522. Na biblioteca MFRC522, clique em More Info e depois em Instalar. Após alguns segundos, ela será automaticamente instalada. Lembre-se que o seu computador precisa estar conectado na internet, para poder baixar a biblioteca. Após a instalação da Biblioteca, é necessário que feche e abra novamente o programa Arduino IDE.
Como não encontrei nenhum exemplo de Sketch para a leitura de todos os dados das Etiquetas NFC NTAG213, criei esse programa baseado na Biblioteca MFRC522.
/* Programa de Dump da etiqueta NFC NTAG213 Blog Eletrogate - https://blog.eletrogate.com/guia-basico-da-nfc-para-arduino Arduino UNO - IDE 1.8.5 - Modulo RC522 Gustavo Murta 06/maio/2018 Biblioteca MFRC522 https://github.com/miguelbalboa/rfid Baseado no exemplo DumpInfo.ino */ #include <SPI.h> // Biblioteca SPI #include <MFRC522.h> // Biblioteca MFRC522 int RST_PIN = 9; // pino Reset - pino D9 do Arduino int SS_PIN = 10; // pino SS ou SDA - pino D10 do Arduino MFRC522 mfrc522(SS_PIN, RST_PIN); // cria instancia MFRC522 void setup() { Serial.begin(9600); // inicializa a comunicação serial com o PC while (!Serial); // aguarda a abertura da interface serial SPI.begin(); // inicializa o barramento SPI mfrc522.PCD_Init(); // inicializa o modulo RC522 mfrc522.PCD_DumpVersionToSerial(); // mostra as informções do modulo RC522 Serial.println("Lendo a etiqueta NTAG213 = UID, SAK, tipo e blocos de dados..."); } void dumpNTAG213 () { byte byteCount; // contador de bytes byte buffer[18]; // 16 bytes de dados mais 2 bytes de CRC byte i; // indice byte Status; // código do status Serial.println("Page 0 1 2 3"); // imprime o cabeçalho da tabela for (byte page = 0; page < 45; page += 4) // NTAG213 possui 45 paginas { byteCount = sizeof(buffer); // tamanho do buffer = 18 bytes Status = mfrc522.MIFARE_Read(page, buffer, &byteCount); // lendo 4 bytes por pagina if (Status != 0) // STATUS_OK = 0 { Serial.print("Leitura da etiqueta falhou = "); // imprime monitor serial Serial.println(mfrc522.GetStatusCodeName(Status)); // imprime o código da falha de leitura break; } for (byte offset = 0; offset < 4; offset++) // contando os bytes das paginas { i = page + offset; if (i < 10) Serial.print(" "); // imprimindo espaço else Serial.print(" "); // imprimindo espaço if (i < 45) // no maximo 45 paginas de dados { Serial.print(i); // imprimindo o endereço da pagina Serial.print(" "); for (byte index = 0; index < 4; index++) // indexando os bytes de enedereço { i = 4 * offset + index; if (buffer[i] < 0x10) // imprimindo o buffer 16 bytes Serial.print(" 0"); else Serial.print(" "); // imprimindo espaço Serial.print(buffer[i], HEX); // imprimindo os bytes da memoria } Serial.println(); // salta uma linha } } } } void loop() { if ( ! mfrc522.PICC_IsNewCardPresent()) // Verificando novas etiquetas NFC { return; } if ( ! mfrc522.PICC_ReadCardSerial()) // Seleciona uma etiqueta NFC { return; } dumpNTAG213 (); // imprime dados da NTAG213 Serial.println(); // salta uma linha delay(1000); // atraso de um segundo }
Todas as 45 páginas de dados da etiqueta podem ser visualizadas. Nessa tela somente aparecem as 19 primeiras páginas. Cada página tem 4 bytes.
Baseando-me no tutorial RFID do Blog da Eletrogate, fiz algumas adaptações para o uso de Etiquetas NFC :
Kit RFID com Arduino: Sistema de controle de acesso
Para simplificar a montagem, usei um Display LDC 16×2 com interface I2C. A campainha (Buzzer) foi conectada no pino D7 do Arduino. Não se esqueça de interligar todos os terras (GND).
Esses são os diagramas da montagem do Circuito de Controle de Acesso com NFC.
Materiais necessários para o projeto Controle de Acesso com Etiquetas NFC
Diagrama FRITZING – Arduino UNO com RC522, Display LCD I2C e Buzzer
As Bibliotecas MFRC522 e LiquidCrystal_I2C serão usadas no Skecth dessa montagem. Para instalar uma nova Biblioteca, use o mesmo procedimento citado anteriormente.
/* Programa de Controle de Acesso para etiqueta NFC NTAG213 Blog Eletrogate - https://blog.eletrogate.com/guia-basico-da-nfc-para-arduino Arduino UNO - IDE 1.8.5 - Modulo RFID RC522 Display LCD 16x2 I2C Gustavo Murta 09/maio/2018 Biblioteca MFRC522 https://github.com/miguelbalboa/rfid Adaptado de https://blog.eletrogate.com/kit-rfid-com-arduino-sistema-de-controle-de-acesso/ */ #include <SPI.h> // biblioteca SPI #include <MFRC522.h> // biblioteca do modulo RC522 #include <LiquidCrystal_I2C.h> // biblioteca do display LCD com I2C #define SDA_PIN 10 // pino SDA RC522 = D10 Arduino #define RST_PIN 9 // pino RST RC522 = D9 Arduino #define TAGLiberada " 04 58 F1 72 20 4E 80" // UID da etiqueta NFC liberada #define AcionaBuzzer 7 // buzzer = D7 Arduino #define BeepsLiberado 1 // 1 bip = acesso liberado #define BeepsNegado 2 // 2 bips = acesso negado MFRC522 mfrc522(SDA_PIN, RST_PIN); // cria uma instância MFRC522 LiquidCrystal_I2C lcd(0x3F, 16, 2); // configuração do display LCD 16x2 I2C - mude para 0x27 se não funcionar char st[20]; // string com 20 caracteres String UID = ""; // string da identificação UID void setup() { pinMode(AcionaBuzzer, OUTPUT); Serial.begin(9600); // monitor serial a 9600 Bps SPI.begin(); // inicializa comunicação SPI mfrc522.PCD_Init(); // inicializa modulo RC522 lcd.init(); // inicializa display LCD lcd.backlight(); // acende o led backlight do LCD StandardMessage(); // imprime mensagem no LCD } void StandardMessage() { lcd.clear(); // limpa tela do LCD lcd.setCursor(3, 0); // cursor na coluna 3 linha 0 lcd.print("Aproxime a"); // print no LCD lcd.setCursor(2, 1); // cursor na coluna 2 linha 1 lcd.print("Etiqueta NFC"); // print no LCD } void getUID() { Serial.print("UID da tag NFC : "); // imprime no monitor serial for (byte i = 0; i < mfrc522.uid.size; i++) // leitura da identificação UID da NFC { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); // imprime os bytes Serial.print(mfrc522.uid.uidByte[i], HEX); // imprime UID em hexadecimal if ( mfrc522.uid.uidByte[i] < 0x10) // se byte menor do que 16 UID.concat(" 0"); // insere um zero else // senão UID.concat(" "); // insere um espaço UID.concat(String(mfrc522.uid.uidByte[i], HEX)); // concatena todos os bytes da UID } UID.toUpperCase(); // converte em maiusculos Serial.println(" "); // imprime espaço } void BuzzerBeeps(int NumeroBeeps) { int i; for (i = 0; i < NumeroBeeps; i++) { digitalWrite(AcionaBuzzer, HIGH); delay(150); // atraso de 0,15 segundos digitalWrite(AcionaBuzzer, LOW); delay(150); // atraso de 0,15 segundos } } void loop() { if ( ! mfrc522.PICC_IsNewCardPresent()) // verifica a presença de etiqueta { return; } if ( ! mfrc522.PICC_ReadCardSerial()) // leitura da etiqueta NFC { return; } UID = ""; // limpa o registro de identificação UID getUID(); // lê e formata a identificação UID if (UID == TAGLiberada) // verifica a liberação da etiqueta { lcd.clear(); // limpa tela do LCD lcd.setCursor(0, 0); // cursor na coluna 0 linha 0 lcd.print("Acesso Liberado!"); // print no LCD BuzzerBeeps(BeepsLiberado); delay(500); // atraso de 0,5 segundos StandardMessage(); // print da mensagem no LCD } else { lcd.clear(); // limpa tela do LCD lcd.setCursor(1, 0); // cursor na coluna 1 linha 0 lcd.print("Acesso Negado!"); // print no LCD BuzzerBeeps(BeepsNegado); delay(500); // atraso de 0,5 segundos StandardMessage(); // print da mensagem no LCD } delay(500); // atraso de 0,5 segundos }
Para inserir a Identificação da Etiqueta NFC a ser liberada, rode o programa e abra o monitor serial da Arduino IDE. Ao aproximar a etiqueta NFC , a identificação UID será mostrada. Copie essa identificação no Sketch, na linha abaixo (exemplo – insira um espaço antes da UID):
#define TAGLiberada ” 04 58 F1 72 20 4E 80″ // UID da etiqueta NFC liberada
Faça o upload do Sketch no Arduino e a etiqueta será liberada pelo Controle de acesso ! As outras etiquetas terão acesso negado. Com essa montagem, você poderá fazer um controle de fechadura elétrica de porta, por exemplo.
Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!