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.
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.
-
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.
-
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.
-
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:
- Instalar o Arduino IDE.
- Abrir o Arduino IDE e ir até Arquivo > Preferências.
- No campo "URLs adicionais para Gerenciadores de Placas", inserir o seguinte link:
https://dl.espressif.com/dl/package_esp32_index.json
- Ir em Ferramentas > Placas > Gerenciador de Placas, procurar por ESP32 e instalar o pacote oficial da Espressif.
- Selecionar a placa ESP32 em Ferramentas > Placas.
- Certificar-se de que as configurações de porta e velocidade de upload estão corretas (normalmente 115200 baud).
- 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:
- Instalar a biblioteca PN532 através do Gerenciador de Bibliotecas do Arduino IDE.
- 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).
- 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:
- Executei o código de leitura no ESP32.
- Aproximei uma tag NFC do módulo PN532.
- 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:
- 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.
- Conexão com servidor: após ler uma tag NFC, o ESP32 pode enviar os dados para um servidor web para processamento ou armazenamento.
- Controle de dispositivos: a leitura de uma tag NFC pode ser usada para acionar dispositivos conectados ao ESP32.
- 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):
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).
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.