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.
