Pular para o conteúdo principal

Uso de NFC no Seeed Studio XIAO nRF52840 (Sense)

Ambas as séries Seeed Studio XIAO nRF52840 são equipadas com um módulo NFC (Near Field Communication) baseado no periférico NFCT (Near Field Communication Tag) integrado do nRF52840. Ele oferece suporte à funcionalidade de Tag NFC Tipo 2. Ao conectar uma antena NFC externa, o XIAO nRF52840 pode atuar como uma tag NFC e ser lido por smartphones e outros leitores NFC.

Este wiki orienta você por todo o fluxo de trabalho de uso de NFC — desde a instalação da biblioteca, conexão de hardware, sintonia da antena, até a verificação da configuração e criação da sua própria tag NFC.

nota

Este tutorial é baseado na biblioteca XIAO_nRF52840_NFC. A versão 1.1.13 de Seeed nRF52 Boards foi testada e aprovada.

Trabalho preparatório

Para a instalação das bibliotecas da placa, consulte este tutorial para concluir a instalação de Seeed nRF52 Boards. Se você já instalou, podemos prosseguir.

nota

Certifique-se de selecionar a placa Seeed XIAO nRF52840 no Boards Manager. A biblioteca antiga "Seeed nRF52 mbed-enabled Boards" não é mais mantida e não deve ser usada.

Hardware necessário

Seeed Studio XIAO nRF52840Seeed Studio XIAO nRF52840 Plus
Seeed Studio XIAO nRF52840 SenseSeeed Studio XIAO nRF52840 Sense Plus
dica

A funcionalidade NFC básica funciona apenas com a antena soldada em NFC1/NFC2. Após testes da comunidade (agradecimentos especiais a andriandreo do fórum da Seeed), ambas as antenas a seguir funcionaram imediatamente após a soldagem, sem necessidade de sintonia adicional do circuito:

  • MOLEX 1462360051
  • TAOGLAS FXR.07.A.DG

Posteriormente, adicionamos dois capacitores de sintonia de 43 pF de cada pad NFC (D14, D15) para GND para a TAOGLAS FXR.07.A.DG, a fim de aumentar ainda mais a distância de leitura. O valor de capacitor de ~40 pF foi calculado a partir da subseção "6.14.10 NFCT antenna recommendations" na folha de dados de especificação do produto do MCU nRF52840.

Se você tiver um comportamento instável (pop-ups incompletos, detecção intermitente), adicionar capacitores de casamento melhorará significativamente a confiabilidade. Consulte Antenna Tuning para mais detalhes.

Para mais percepções de testes em cenários reais, confira a discussão original no fórum.

Software necessário

ItemVersão / Observações
Arduino IDE1.8.x ou posterior
Seeed nRF52 Boards1.1.13 (instalar via Arduino IDE Boards Manager)
XIAO_nRF52840_NFC LibraryBaixe em GitHub, instale via Sketch > Include Library > Add .ZIP Library (veja abaixo)
App NFC ToolsAndroid / Apple

Instalando a biblioteca XIAO_nRF52840_NFC

Esta biblioteca não está incluída no Arduino Library Manager — você precisa instalá-la manualmente a partir do GitHub.

  • Passo 1. Acesse o repositório GitHub XIAO_nRF52840_NFC, clique no botão verde Code e selecione Download ZIP.

  • Passo 2. Abra o Arduino IDE, vá em Sketch > Include Library > Add .ZIP Library....
  • Passo 3. Selecione o arquivo ZIP baixado (XIAO_nRF52840_NFC-main.zip). Você deverá ver "Library added to your libraries" na barra de status.

  • Passo 4. Reinicie o Arduino IDE. Após reiniciar, você deverá ver os exemplos em File > Examples > XIAO_nRF52840_NFC.

Conexão de hardware

Os pinos NFC do XIAO nRF52840 estão localizados na parte de trás da placa, identificados como P0.09 e P0.10:

D14 (P0.09) — NFC1 — Antenna end A
D15 (P0.10) — NFC2 — Antenna end B

Solde a antena NFC em P0.09 e P0.10 como mostrado abaixo:

Neste tutorial, estamos usando o Seeed Studio XIAO nRF52840 com uma antena NFC recomendada pela Nordic para demonstração.

Vista frontal:

Antenna soldered to XIAO front view

Vista traseira:

Antenna soldered to XIAO back view

cuidado
  • A antena NFC é um sinal diferencial e não tem polaridade — qualquer extremidade pode ir para D14 ou D15.
  • Os dois pinos saem de fábrica no modo de antena NFC (UICR = 0xFFFFFFFF) em XIAO nRF52840 e XIAO nRF52840 Sense. Em XIAO nRF52840 Plus e XIAO nRF52840 Sense Plus, eles podem estar configurados como GPIO por padrão — verifique primeiro o UICR (consulte Step 1).
  • Recomenda-se medir a resistência em corrente contínua entre os terminais da antena com um multímetro antes da soldagem (geralmente 1–3 Ω) para confirmar a continuidade e descartar curtos.

Sintonia da antena

O NFC depende de um circuito ressonante tanque LC. A bobina da antena fornece a indutância (L) e os capacitores de casamento fornecem a capacitância (C). Juntos, eles formam um circuito ressonante na frequência alvo:

f = 1 / (2π√(LC))

O alvo é 13,56 MHz. Sem capacitores externos, apenas a capacitância parasita interna de ~4 pF do nRF52840 participa — o ponto de ressonância fica longe de 13,56 MHz. A função NFC ainda vai funcionar, mas a comunicação pode ser instável: pop-ups no celular podem mostrar "NFC tag detected" sem o conteúdo completo, e códigos de erro podem aparecer na saída serial. Adicionar capacitores de casamento leva o tanque LC à ressonância e melhora drasticamente a confiabilidade.

dica

Todas as operações abaixo são baseadas no documento Nordic Official NFC Antenna Design. O chip entrega potência total apenas quando enxerga uma carga diferencial de 100 Ω em ressonância.

Parâmetros Fixos

ItemValor FixoFonte
Frequência de operação f13,56 MHzPadrão NFC global, codificado em hardware no nRF52840
Impedância de carga100 Ω (diferencial)White paper da Nordic nWP_026

Medições Necessárias

  • Indutância da bobina L — meça com um multímetro, medidor LCR ou VNA a 100 kHz, valor em µH.
  • Resistência de perda da bobina R — leia a resistência em série na mesma tela, em Ω.

Etapa 1: Pré-verificação de Impedância

Usando a fórmula de transformação de impedância:

Impedance formula

Alvo: 90–120 Ω, quanto mais próximo de 100 Ω melhor.

ResultadoSignificadoPróxima Etapa
< 60 ΩAntena muito pequenaAdicione espiras ou aumente a área da bobina
90 – 120 ΩAPROVADOVá para a Etapa 2
> 150 ΩAntena muito grandeRemova espiras ou reduza a área da bobina

Só depois de passar por este filtro é que você calcula os capacitores; caso contrário, qualquer valor de capacitor é inútil.

Etapa 2: Calcular a Capacitância de Ressonância

Fórmula com 13,56 MHz fixos:

Capacitance formula

Isso fornece a capacitância total necessária. Para uma rede π, divida igualmente:

C1 = C2 = C / 2

Escolha o valor E12 mais próximo (por exemplo, 39 pF, 47 pF, 56 pF, 68 pF …).

Antena Recomendada

Se você não tiver um medidor LCR e preferir um ponto de partida conhecido, uma antena de bobina NFC padrão de 13,56 MHz funciona bem com o XIAO nRF52840. Abaixo está a antena que usamos durante os testes:

ParâmetroValor
TipoBobina NFC de 13,56 MHz
Resistência CC~2,3 Ω
ConexãoSolde diretamente em NFC1 / NFC2
nota

A antena mostrada acima não é um produto da Seeed Studio. Você pode usar qualquer antena de bobina NFC de 13,56 MHz com especificações semelhantes. O ponto-chave é medir a indutância e calcular o valor do capacitor de casamento usando as fórmulas acima.

Configuração NFC & Exemplos

O fluxo de trabalho a seguir primeiro verifica a configuração de hardware NFC e depois orienta você na criação da sua própria tag NFC. Usamos a biblioteca XIAO_nRF52840_NFC, que encapsula o periférico NFCT do nRF52840 em uma API Arduino simples.

A biblioteca inclui seis sketches de exemplo:

CategoriaSketch de ExemploFinalidade
Verificaçãoxiao-nrf52840-nfc-probeVerificar configuração de pinos UICR + verificar link RF
xiao-nrf52840-nfc-restore-uicrRestaurar pinos NFC se eles tiverem sido alterados para GPIO
Correção Plusxiao-nrf52840-plus-bootloader-verifyVerificar o bootloader nas variantes Plus antes de restaurar o UICR
Demoxiao-nrf52840-nfc-tag-readonlyTag Somente Leitura — o celular lê uma URL fixa
xiao-nrf52840-nfc-tag-writableTag Gravável — o celular pode gravar dados na tag
xiao-nrf52840-nfc-tag-persistentTag Persistente — os dados sobrevivem a ciclos de energia (armazenados em Flash)

Etapa 1: Verificar Configuração de Pinos UICR

Finalidade: Confirmar que P0.09/P0.10 estão configurados como pinos de antena NFC.

Abra File > Examples > XIAO_nRF52840_NFC > xiao-nrf52840-nfc-probe e faça o upload para sua placa. (As Etapas 1 e 2 usam o mesmo sketch — um único upload faz as duas.)

Abra o Serial Monitor em 115200 baud. As primeiras linhas mostram o status atual do UICR:

Como interpretar a saída:

Valor UICRSignificadoAção
0xFFFFFFFFModo de antena NFC ✅Prossiga para a Etapa 2
0xFFFFFFFEModo GPIO ❌Faça upload de xiao-nrf52840-plus-bootloader-verify primeiro (variantes Plus), depois faça upload de xiao-nrf52840-nfc-restore-uicr, envie RESTORE_NFC no Serial Monitor, confirme Verify result: PASS e então desligue e ligue a placa
nota

XIAO nRF52840 e XIAO nRF52840 Sense saem de fábrica com UICR = 0xFFFFFFFF (modo NFC). Na maioria dos casos, esta etapa é aprovada e nenhuma ação é necessária. XIAO nRF52840 Plus e XIAO nRF52840 Sense Plus podem sair em modo GPIO — se a saída mostrar 0xFFFFFFFE, siga a ação de restauração abaixo.

Finalidade: Confirmar que quadros de comando NFC do celular conseguem alcançar a placa.

Após a verificação do UICR, o mesmo sketch entra automaticamente no modo Probe. Nesse modo, a tag não responde a nenhum quadro — ela apenas escuta. Isso isola a direção de recepção, facilitando a confirmação de que o link RF está ativo.

Coloque a área NFC do seu celular próxima à antena por alguns segundos e então verifique a saída do Serial Monitor:

Indicadores principais:

ContadorSignificadoCritério de Aprovação
FIELD_DETECTCampo RF de 13,56 MHz do celular detectado> 0
FIELD_LOSTCampo RF desapareceuPróximo de FIELD_DETECT
READER_FRAMESQuadros de comando NFC recebidos do celular> 0 (crítico)

READER_FRAMES > 0 significa que os quadros de comando do celular chegaram com sucesso à placa e o link RF bidirecional está estabelecido. O celular não deve mostrar um pop-up neste estágio (o modo Probe não responde).

Códigos de erro comuns:

Código de ErroNomeSignificado
0x01FRAMEDELAYTIMEOUTTempo limite de atraso de quadro — a tag não recebeu o próximo comando dentro do intervalo esperado
0x02NFCANTENNAERRORNFCT não consegue acionar a antena — geralmente causado por desajuste de impedância ou ausência de antena
0x80Erro de recepção de quadro RXQuadro recebido, mas a verificação de CRC/paridade falhou (pode aparecer na etapa Somente Leitura)

Demo 1: Tag Somente Leitura

Finalidade: Uma tag NFC simples que transmite uma URL fixa. O celular a lê e exibe um pop-up — o caso de uso NFC mais comum.

Abra File > Examples > XIAO_nRF52840_NFC > xiao-nrf52840-nfc-tag-readonly e faça o upload. Coloque seu celular sobre a antena por 2–3 segundos.

O celular deve exibir um pop-up contendo o link https://seeedstudio.com.

Antena soldada e pop-up de NFC do telefone

Indicadores principais:

ContadorSignificadoCritério de aprovação
FIELD_DETECTCampo RF de 13,56 MHz do telefone detectado> 0
SELECTEDTelefone concluiu o fluxo de anticolisão + handshake SELECT> 0 (indicador principal)
READTelefone leu com sucesso as páginas de dados NDEF> 0
FAST_READNúmero de requisições FAST_READ recebidas0 ou pequeno (normal)
UNSUPPORTEDTelefone enviou um comando não suportadoAlguns são normais

SELECTED > 0 é o limite principal: o fluxo de anticolisão foi aprovado e o telefone reconheceu a Tag Tipo 2. READ > 0 significa que as páginas NDEF foram realmente lidas. A verificação final é o telefone exibir o pop-up com a URL completa.

nota

A URL é codificada diretamente no sketch. Para alterá-la, abra o sketch e modifique a mensagem NDEF, depois envie novamente. Os dados da tag são armazenados em RAM e serão perdidos após um ciclo de energia.

Demo 2: Tag Gravável

Objetivo: Uma tag NFC que o telefone pode tanto ler quanto gravar. A tag começa com uma URI padrão (https://seeedstudio.com), e o telefone pode sobrescrevê-la com novo conteúdo NDEF usando o app NFC Tools.

Abra File > Examples > XIAO_nRF52840_NFC > xiao-nrf52840-nfc-tag-writable e envie o sketch.

Passos de teste:

  • Passo 1. Abra o Serial Monitor em 115200 baud. O log de boot mostra a identidade da tag (NFCID1), o dump inicial da memória e a URI padrão (https://seeedstudio.com).

O log de boot também imprime a URI padrão que a tag irá transmitir:

  • Passo 2. Leia primeiro a tag com o seu telefone. O telefone deve detectar https://seeedstudio.com.

  • Passo 3. Abra o NFC Tools (ou qualquer app de gravação NFC) e grave o conteúdo desejado na tag. Neste exemplo, gravamos um texto simples: hello!. Depois de inserir o conteúdo, clique em "Write / XX Bytes" — a contagem de bytes depende do tamanho do seu conteúdo.

  • Passo 4. Leia a tag novamente. O telefone agora deve exibir o conteúdo recém-gravado (hello!).

Depois que o telefone sai do campo NFC, o Serial Monitor mostra os indicadores principais atualizados, refletindo a sessão completa de leitura após gravação:

Indicadores principais:

ContadorSignificadoCritério de aprovação
FIELD_DETECTCampo RF de 13,56 MHz do telefone detectado> 0
SELECTEDTelefone concluiu o fluxo de anticolisão + handshake SELECT> 0 (indicador principal)
READTelefone leu com sucesso as páginas de dados NDEF> 0
WRITETelefone gravou dados com sucesso na tag> 0 (indicador principal)
FAST_READNúmero de requisições FAST_READ recebidas0 ou pequeno (normal)
WRITE_REJECTEDTentativas de gravação rejeitadas (páginas protegidas)0 (nunca deve ocorrer com apps padrão)
UNSUPPORTEDTelefone enviou um comando não suportadoAlguns são normais

WRITE > 0 é o limite principal para a Tag Gravável: o telefone gravou dados com sucesso na tag. WRITE_REJECTED deve sempre ser 0 — se ele aumentar, algo deu errado durante a sessão de gravação.

nota

Os dados gravados são armazenados apenas em RAM e serão perdidos após um ciclo de energia, restaurando a URI padrão — o que facilita testes repetidos de gravação. Para dados que precisam sobreviver a ciclos de energia, use o demo Persistent Tag abaixo.

Demo 3: Tag Persistente

Objetivo: Uma tag NFC cujos dados sobrevivem a ciclos de energia. O conteúdo NDEF é armazenado na memória Flash interna do nRF52840 (LittleFS), portanto persiste mesmo depois que a placa é desligada e ligada novamente — ideal para implantações de longo prazo.

Abra File > Examples > XIAO_nRF52840_NFC > xiao-nrf52840-nfc-tag-persistent e envie o sketch.

Passos de teste:

  • Passo 1. No primeiro boot, abra o Serial Monitor em 115200 baud. O log de boot mostra a URI padrão e Storage state: no stored content, using default URI.
  • Passo 2. Leia a tag com o seu telefone. No primeiro boot, o telefone detecta https://seeedstudio.com.

  • Passo 3. Abra o NFC Tools (ou qualquer app de gravação NFC) e grave um novo registro de texto ou URL na tag. Neste exemplo, gravamos um texto simples: hi!. Depois de inserir o conteúdo, clique em "Write / XX Bytes" — a contagem de bytes depende do tamanho do seu conteúdo.

  • Passo 4. Depois que o telefone sai do campo NFC, o Serial Monitor imprime Storage: tag content saved to flash, confirmando que o conteúdo foi gravado na Flash interna.
  • Passo 5. Desligue e ligue a placa — desconecte o cabo USB e conecte novamente.

  • Passo 6. Após o reboot, o Serial Monitor imprime Storage state: previous content restored from flash, confirmando que o conteúdo gravado sobreviveu ao ciclo de energia.

  • Passo 7. Leia a tag novamente com o seu telefone. O telefone deve exibir o conteúdo gravado no Passo 3 — mesmo após o ciclo de energia.

Indicadores principais:

Os indicadores principais são os mesmos da Tag Gravável — consulte a tabela da Tag Gravável para a lista completa.

Storage state: previous content restored from flash no log de boot é a confirmação principal para a Tag Persistente: os dados sobreviveram ao ciclo de energia. Storage: tag content saved to flash confirma que cada gravação foi salva na Flash.

nota

No Passo 7, o telefone apenas o conteúdo restaurado — ele não grava nada. Portanto, WRITE permanecerá 0 nos contadores, o que é esperado. Você só verá WRITE > 0 durante a sessão de gravação anterior (Passos 3–4).

nota
  • O conteúdo armazenado fica no filesystem da Flash interna (/nfc-tag-data.bin), separado da área do sketch — ele sobrevive a novos envios de sketch.
  • Para restaurar a URI padrão a qualquer momento, envie RESET_TAG no Serial Monitor.
  • A gravação na Flash acontece uma vez por sessão de gravação, depois que o telefone sai do campo. Se você remover o telefone cedo demais, o conteúdo pode ficar incompleto — basta gravar novamente para corrigir.
dica

Resumo dos três demos:

DemoArmazenamento de dadosSobrevive a ciclo de energiaGravável por telefone
Tag somente leituraRAM
Tag gravávelRAM
Tag persistenteFlash

Recursos

Agradecimentos especiais

Agradecimentos especiais a andriandreo pelos extensos testes em condições reais das antenas NFC (MOLEX 1462360051 e TAOGLAS FXR.07.A.DG) no XIAO nRF52840, e a PJ_Glasso pela orientação no cálculo de capacitores e solução de problemas de compatibilidade com iPhone.

Se você encontrar problemas de NFC não abordados aqui, talvez encontre dicas úteis no tópico original do fórum:

Suporte técnico e discussão de produtos

Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...