
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!