



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."
Fonte Wikipedia : 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.
NFC Forum ORG
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.
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.
NTAG213 - mapa de memória EEPROM
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.
Datasheet do chip MFRC522
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. Biblioteca MFRC522 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
}
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 16x2 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.
|
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.”
Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200