Un BLE Tag no es solo un localizador — ponle un sensor y se convierte en un nodo inalámbrico que reporta temperatura, humedad, movimiento o luz sin cableado. Este artículo explica cómo muestrear, almacenar y reportar datos de sensor desde un tag sin agotar la pila botón.

Qué puedes sensar en un tag

  • Temperatura / humedad (clase SHTxx, ~1–5 µA al leer, dormido el resto)
  • Presión (barómetro para altitud)
  • Acelerómetro 3 ejes (movimiento / caída / golpe)
  • Luz ambiental, magnético, gas

Cada sensor suma una *energía de lectura* más la *energía de radio* para enviar el valor.

Cadencia de muestreo

Leer un sensor cada segundo parece seguro pero gasta la batería. Ajusta la cadencia al propósito:

  • Temperatura cold-chain: registra cada 5–15 min, alerta por umbral.
  • Eventos de movimiento/puerta: dirigido por evento, duerme lo demás.
  • Tendencia ambiental: 1–10 min basta.

Almacenamiento local

Un tag no puede subir constantemente, así que bufferiza localmente. Un anillo (FIFO) de los últimos N datos sobrevive a una conexión perdida; al próximo contacto el gateway extrae el backlog. 32–256 muestras es típico.

Estrategias de reporte

  • Periódico: envía cada T sí o sí. Simple, predecible, desperdicia si nada cambió.
  • Dirigido por evento: envía solo en cruce de umbral o movimiento. Mejor para la batería.
  • Reporte delta: guarda deltas; envía muestra completa solo ocasionalmente para resincronizar.

Compresión de datos

float32 × N en un buffer de 32 muestras es desperdicio. Usa:

  • Codificación delta: `d_i = sample_i − sample_{i-1}` (enteros pequeños).
  • Escala a int8/int16 con offset y ganancia conocidos.
  • Empaqueta canales en bits.

Un log temp de 16 muestras float32 (64 B) pasa a ~16–20 B.

Matemática de potencia

Por ciclo de reporte: lectura sensor ~5 µA·2 ms + TX radio ~8 mA·20 ms + MCU ~3 mA·50 ms.

Para un tag que lee temp cada 10 min y reporta cada hora por BLE:

  • Lectura: 5 µA × 2 ms × 6 = 60 nAh/ciclo
  • TX: 8 mA × 20 ms = 44 nAh
  • Total ≈ 100 nAh/ciclo × 24 = 2,4 µAh/día → una CR2032 (225 mAh) dura >20 años en papel (la realidad: autodescarga y fuga en deep-sleep dominan, ~2–5 años).

Reporte por BLE

Dos formas:

1. GATT notify conectado: el tag conecta, envía Sensor Notify, desconecta. Máxima flexibilidad, máxima energía.

2. Publicidad periódica con respuestas (PAwR): el tag difunde datos en slots periódicos; el gateway responde. Mínima energía para muchos tags.

Ingesta por gateway

Mismo pipeline que un Beacon: el gateway oye el advertisement/notify, deduplica + marca tiempo + agrega, reenvía por MQTT. El tag solo necesita ser *oído*, no conectado, para la mayoría de reportes.

Casos de uso

  • Cold-chain (farma/alimentos): temp + eventos de puerta abierta.
  • Condición de activos: vibración antes de falla.
  • Ambiental: humedad en almacenes, luz en oficinas.

Checklist

  • [ ] Cadencia según caso de uso, no «cada segundo»
  • [ ] Anillo para conexiones perdidas
  • [ ] Dirigido por evento donde sea posible
  • [ ] Compresión delta + escala int
  • [ ] PAwR o ventanas conectadas cortas
  • [ ] Dedupe + timestamp en gateway
  • [ ] Modelo de batería incluye autodescarga

Ese equilibrio es todo el juego del BLE Tag.