Módulo NFC PN532

NFC significa Near Field Communication(Comunicação de campo próximo). É uma tecnologia de comunicação sem fio de curto alcance que permite a transferência de dados entre dispositivos quando estão próximos um do outro, geralmente a uma distância de alguns centímetros. Essa tecnologia é baseada em campos eletromagnéticos de alta frequência.

 

Esse módulo é capaz de fazer a leitura e a escrita de tags NFC.

Pinagem:

Pino VCC -> Ligado no 5v do Arduino. É o pino positivo do módulo.

Pino GND -> Ligado no GND do Arduino. É o pino negativo do módulo.

Pino SCL– > Ligado no A5 do Arduino. Pino de dados para a comunicação entre o Arduino e o módulo.

Pino SDA– > Ligado no A4 do Arduino. Pino de dados para a comunicação entre o Arduino e o módulo.

TAG NFC por dentro

Exemplo de como usar o módulo

Nesse exemplo, vamos usar a Biblioteca Adafruit_PN532, Wire e a SPI. MAs só é necessário instalar a Adafruit_PN532, pois as outras já vem por padrão na IDE do Arduino.

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_PN532.h>

#define PN532_IRQ   (2)
#define PN532_RESET (3)

uint8_t nfc_sucesso;
uint8_t nfc_uid[] = { 0, 0, 0, 0, 0, 0, 0 };
uint8_t nfc_tamanho_id;  

Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET); // Configurando o módulo NFC

void setup() {
  Serial.begin(9600);

  nfc.begin(); // Iniciando o módulo NFC

  uint32_t versiondata = nfc.getFirmwareVersion(); // Obtendo informações do módulo
  if (!versiondata) { // Verificando o módulo
    Serial.print(“Módulo NFC não conectado ou com problemas!”);
  }else{
    Serial.println(“Módulo NFC encontrado com sucesso!”);
  }

}

void loop() {
  Serial.println(“Pronto para a leitura…”);

  nfc_sucesso = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, nfc_uid, &nfc_tamanho_id); // Aguardando uma tag NFC
  if(nfc_sucesso){  // Verificando se a tag NFC é válida
    String id_nfc = “”;
    for (uint8_t i=0; i < nfc_tamanho_id; i++){
      id_nfc = id_nfc + nfc_uid[i];
    }

    Serial.print(“ID: “);
    Serial.println(id_nfc);
   
    /*
    A variável id_nfc é do tipo String(texto).
    Para fazer uma condição no if, deve-se usar as aspas.
    if(id_nfc == “123”)
    */

    delay(2000);
  }
 
}