Volver a las guías

Cuenta toques con una etiqueta barata: el contador y el espejo ASCII de NTAG21x

Las etiquetas NTAG213/215/216 pueden contar toques y reflejar su propio UID en una URL por unos céntimos de memoria extra. Cómo funcionan realmente el contador y el espejo ASCII, cómo configurarlos y por qué son analítica, no prueba de que una etiqueta sea auténtica.

Publicado

Respuesta rápida

Los chips NTAG213, NTAG215 y NTAG216 tienen un contador de 24 bits integrado y una función de espejo ASCII que puede escribir el UID de la etiqueta, su número de toques, o ambos, como texto hexadecimal plano directamente en una URL que ya hayas escrito en la etiqueta. Sin servidor de aplicación, sin consulta a una base de datos por etiqueta: el propio chip hace la sustitución en cada lectura. Es una forma barata de conseguir un enlace único y un contador de toques en vivo con una etiqueta que cuesta céntimos. También hay que decirlo claro: no es prueba de que una etiqueta sea auténtica, y no deberías tratarla como tal.

Cómo funciona el espejo ASCII

El contador de 24 bits

Todos los chips NTAG213/215/216 incluyen un contador NFC que activas con un solo bit de configuración, NFC_CNT_EN. Una vez activado, el contador se incrementa automáticamente en la primera lectura tras cada encendido del chip: el primer toque despierta el chip y suma uno, y se mantiene fijo hasta el siguiente toque. Escribir en la etiqueta no lo mueve, y no hay forma de reiniciarlo desde tu lado: una vez que sube, solo sube.

MIRROR_CONF, MIRROR_PAGE y MIRROR_BYTE

El espejo es un ajuste independiente de 2 bits, MIRROR_CONF, que controla qué se escribe en memoria como texto legible: nada, solo el UID, solo el contador, o ambos. Otros dos ajustes, MIRROR_PAGE y MIRROR_BYTE, indican al chip exactamente dónde empezar a escribir ese texto, lo que te permite colocar un marcador de posición dentro de una URL ya programada y dejar que el chip lo rellene en cada lectura.

El coste en memoria es pequeño: un espejo ASCII de UID necesita 14 bytes (el UID de la etiqueta en hexadecimal ASCII), y un espejo de contador necesita 6 bytes. Activa ambos y habrás gastado 20 bytes: se nota en el presupuesto de 144 bytes de un NTAG213, pero es insignificante en un 215 o 216.

Cómo configurarlo en NTAG213/215/216 con NFCore

Paso a paso:

  1. Escribe primero tu registro NDEF de URL, con un segmento marcador donde quieras que aparezcan el UID o el contador.
  2. Activa NFC_CNT_EN y ajusta MIRROR_CONF según lo que quieras reflejar (UID, contador, o ambos).
  3. Ajusta MIRROR_PAGE y MIRROR_BYTE para que el espejo caiga exactamente sobre tu marcador.
  4. Haz una lectura de prueba y confirma que la URL devuelve valores hexadecimales reales en lugar del marcador.

Problemas comunes y soluciones:

  • El contador parece atascado. Es lo esperado, no un fallo: solo se incrementa una vez por encendido, en la primera lectura, así que leer varias veces seguidas sin separar la etiqueta del teléfono no lo moverá.
  • El texto del espejo no aparece. Casi siempre es un desajuste en MIRROR_PAGE o MIRROR_BYTE respecto a dónde colocaste el marcador en el registro NDEF. Revisa la aritmética de bytes antes de asumir que está roto.
  • Ya no puedo cambiar los ajustes. Si las páginas de configuración están bloqueadas (CFGLCK), eso es permanente por diseño: planifica MIRROR_CONF y la disposición de páginas antes de bloquear un lote de etiquetas.

Haciendo esto en NFCore concretamente: NFCore lee directamente las páginas de configuración y de contador/espejo, no solo el texto NDEF ya renderizado, así que puedes confirmar que NFC_CNT_EN y MIRROR_CONF están configurados como querías antes de enviar un lote.

Por qué esto no demuestra autenticidad

Aquí está la limitación honesta: un contador simple o un espejo de UID no están ligados criptográficamente al toque que los produjo. Alguien puede capturar la URL de una lectura genuina —UID y contador congelados en ese momento— e imprimirla en una etiqueta falsa o una pegatina. Nada impide que esa URL se reutilice tantas veces como se quiera, a menos que quien la lea compruebe explícitamente que el contador solo avanza hacia adelante.

Ese es un trabajo distinto al que hacen SUN y SDM de NTAG 424 DNA: cifran el UID y el contador juntos con una clave única para ese chip, de modo que la URL cambia de forma impredecible en cada toque y puede verificarse en el servidor. Si tu objetivo es la autenticación de productos NFC —demostrar que un artículo es genuino, no solo contar cuántas veces se escaneó una etiqueta— un contador y espejo de NTAG213/215/216 es la herramienta equivocada.

Para analítica de toques en packaging, pulseras de eventos o un póster que posees y controlas, encaja bien. Solo no dejes que "el contador subió" sustituya a "esto es real".

Preguntas frecuentes

¿El contador NFC se incrementa cada vez que escribo en la etiqueta, o solo al leerla?

Solo al leerla. El contador de NFC_CNT_EN se incrementa en la primera lectura válida tras cada encendido del chip; escribir en la etiqueta con una app o un programador no lo toca.

¿Cuánta memoria me cuesta activar el espejo de UID y de contador a la vez?

20 bytes en total en un NTAG213/215/216: 14 bytes para el UID en hexadecimal ASCII, más 6 bytes para el contador de 24 bits en hexadecimal ASCII. En los 144 bytes de memoria de usuario de un NTAG213 eso es notable; en un 215 o 216 es un margen de error.

¿Puedo usar el contador para demostrar que una etiqueta no ha sido clonada?

No. Un contador simple de NTAG21x solo registra que ocurrió algún toque; nada impide que alguien capture una URL de un toque genuino y la reproduzca indefinidamente en una etiqueta falsa. Si necesitas protección real contra falsificaciones, mira el mensajería SUN cifrada de NTAG 424 DNA en su lugar.

¿El espejo seguirá funcionando una vez que bloquee la configuración de la etiqueta?

Sí: bloquear las páginas de configuración impide que nadie cambie MIRROR_CONF, MIRROR_PAGE o MIRROR_BYTE después, pero el espejo sigue actualizándose en cada lectura. Así se configura normalmente un producto ya enviado: configúralo una vez, bloquéalo, y deja que cada unidad refleje su propio UID y contador para siempre.

En resumen

Un NTAG213 que cuesta unos céntimos puede hacer seguimiento de toques con sensación dinámica y cero backend: dos bits de configuración y un marcador en una URL que ya escribiste. Eso sí, ten claro qué te está diciendo: un recuento de toques, no una prueba de nada. Si lo que realmente necesitas es demostrar que una etiqueta es genuina, ese es otro chip y otro conjunto de funciones. Abre NFCore, revisa las páginas de configuración de una etiqueta y confirma que NFC_CNT_EN y MIRROR_CONF están como esperas antes de enviarla.