1 ‐ Protótipo ESP32 NFC - carolsbraz/Hands-On-Final GitHub Wiki


1.1 | Escolher a placa ESP32 com suporte a NFC

Para este projeto, escolhi a placa ESP32 fabricada pela Silicon Labs. Além disso, utilizei o módulo PN532 como leitor de NFC, que possui excelente suporte e integrações com microcontroladores como o ESP32. O PN532 é um dos módulos mais populares para a leitura e escrita de tags NFC, oferecendo boa documentação e bibliotecas.

image

O I2C (Inter-Integrated Circuit) é um protocolo de comunicação serial utilizado para conectar dispositivos de baixa velocidade, como sensores e periféricos, a microcontroladores e sistemas embarcados.Abaixo estão alguns dos motivos de ter sido escolhido esse protocolo.

  1. Simplicidade de Conexão: O I²C usa apenas duas linhas de comunicação (SDA e SCL), o que facilita a conexão do PN532 a um microcontrolador, ocupando menos pinos em comparação a outros protocolos, como SPI.

  2. Compatibilidade com Múltiplos Dispositivos: O I²C permite conectar vários dispositivos em um único barramento. Isso é útil se você estiver trabalhando com diversos sensores ou módulos, reduzindo a complexidade do circuito.

  3. Controle de Endereço: Como o I²C utiliza endereçamento de dispositivos, é possível controlar vários dispositivos no mesmo barramento sem conflitos.

Referências:


1.2 | Configurar o ambiente de desenvolvimento para ESP32

Antes de iniciar o desenvolvimento, foi necessário configurar o ambiente de desenvolvimento. Para isso, utilizei o Arduino IDE. Aqui estão os passos que segui para configurar corretamente a IDE para trabalhar com o ESP32:

  1. Instalar o Arduino IDE.
  2. Abrir o Arduino IDE e ir até Arquivo > Preferências.
  3. No campo "URLs adicionais para Gerenciadores de Placas", inserir o seguinte link:
    https://dl.espressif.com/dl/package_esp32_index.json
    
  4. Ir em Ferramentas > Placas > Gerenciador de Placas, procurar por ESP32 e instalar o pacote oficial da Espressif.
  5. Selecionar a placa ESP32 em Ferramentas > Placas.
  6. Certificar-se de que as configurações de porta e velocidade de upload estão corretas (normalmente 115200 baud).
  7. Garantir a instalação das bibliotecas encontradas na pasta libraries deste repositório.

Referências:


1.3 | Desenvolver e testar o firmware básico para comunicação com o leitor NFC

Para garantir a comunicação entre o ESP32 e o leitor PN532, utilizei a biblioteca oficial para PN532 disponível no GitHub. Abaixo estão os passos que segui para desenvolver e testar o firmware básico:

  1. Instalar a biblioteca PN532 através do Gerenciador de Bibliotecas do Arduino IDE.
  2. Conectar o PN532 ao ESP32 utilizando a comunicação I2C:
    • VCC do PN532 para 3.3V no ESP32.
    • GND do PN532 para GND no ESP32.
    • SDA do PN532 para GPIO 21 (ou o pino I2C configurado no ESP32).
    • SCL do PN532 para GPIO 22 (ou o pino I2C configurado no ESP32).
  3. Subir o código de exemplo da biblioteca PN532 (disponível em Arquivo > Exemplos > PN532 > readMifare).

Após o upload, abri o monitor serial para verificar a saída do leitor NFC. O firmware foi testado com sucesso, e o ESP32 conseguiu detectar e ler tags NFC.

Referências:


1.4 | Realizar testes de leitura/escrita de tags NFC com o ESP32

Após a comunicação básica estar funcional, realizei os testes de leitura e escrita de tags NFC. Utilizei o mesmo exemplo da biblioteca PN532 para realizar a leitura das tags NFC do tipo Mifare Classic. Aqui estão os passos do teste:

  1. Executei o código de leitura no ESP32.
  2. Aproximei uma tag NFC do módulo PN532.
  3. O monitor serial do Arduino IDE mostrou as informações lidas da tag (UID da tag e informações básicas).

Para a escrita em uma tag NFC, utilizei um exemplo de escrita disponível na mesma biblioteca.

Referências:


1.5 | Integrar a comunicação NFC com outras funcionalidades do ESP32

Com a leitura e escrita de tags NFC funcionando corretamente, o próximo passo foi integrar essa funcionalidade com outras capacidades do ESP32, como a conexão Wi-Fi e o controle de GPIOs. Alguns exemplos de integração que podem ser realizados incluem:

  1. Uso de NFC para autenticação: o ESP32 pode ler uma tag NFC e acionar um relé ou enviar dados via Wi-Fi, dependendo do UID da tag.
  2. Conexão com servidor: após ler uma tag NFC, o ESP32 pode enviar os dados para um servidor web para processamento ou armazenamento.
  3. Controle de dispositivos: a leitura de uma tag NFC pode ser usada para acionar dispositivos conectados ao ESP32.
  4. Envio de comandos ao serial : Primeiramente será enviado ao "GET_PASS" recebido pela camada anterior e leitor com o codigo irá enviar sempre ao serial uma linha contendo "PASS" e o seu código com o conteúdo contido no bloco 4 de bytes, exemplo se estiver escrito "1234" teremos o seguinte resultado "PASS 1234".

1.6 | Erros e acertos:

Após encontrar alguns erros de leitura, uma pesquisa foi feita para analisar mais estruturalmente o leitor nfc e com isso o chegamos ao seguinte tutorial.

Passo a passo para trocar o PN532 para o modo I²C:

Identificar os pinos de seleção (SEL0 e SEL1):

image

O PN532 utiliza dois pinos de seleção, chamados SEL0 e SEL1, que controlam o modo de operação. Para selecionar o modo I²C, esses pinos devem estar configurados corretamente. Configuração dos pinos de seleção:

No modo I²C, os pinos SEL0 e SEL1 devem estar ajustados da seguinte forma:

SEL0: Conectado ao GND (nível baixo). SEL1: Conectado ao VCC (nível alto).

image

Isso configura o módulo PN532 para operar em modo I²C. Conexão dos pinos de comunicação I²C:

O modo I²C utiliza dois pinos para comunicação:

SDA (Data): Conecta ao pino de dados I²C do microcontrolador. SCL (Clock): Conecta ao pino de clock I²C do microcontrolador. Além disso, conecte VCC e GND para alimentar o módulo.

Endereço I²C do PN532:

O PN532 no modo I²C geralmente utiliza o endereço padrão 0x24 ou 0x48, dependendo da versão do chip. Verifique a documentação do módulo para confirmar o endereço correto, ou utilize um scanner I²C para identificá-lo no barramento.

Referências: