Desplegar cientos de Bluetooth Beacon en un almacen es la parte facil. Lo dificil es asegurarse de que las pasarelas realmente los detecten — de forma consistente, a escala, sin desperdiciar ventanas de escaneo que solo capturan ruido. Este articulo analiza el lado del escaneo: como interactuan la ventana y el intervalo de escaneo con el comportamiento de advertising del tag, como calcular la probabilidad de deteccion, y como ajustar los parametros de la pasarela para densidades de despliegue reales.


1. Por Que la Estrategia de Escaneo Determina el Exito del Proyecto

Un BLE tag transmitiendo a intervalos de 100 ms es inutil si el escaner de la pasarela esta dormido durante esas transmisiones. A diferencia de los protocolos de flujo continuo (WiFi, Bluetooth clasico), el advertising BLE es una rafaga unidireccional de un solo disparo. El escaner debe estar escuchando activamente en el mismo canal de advertising en el momento exacto en que el tag transmite — de lo contrario, el paquete se pierde para siempre.

Tres factores determinan si un advertisement de tag es capturado:

Factor Controlado Por Rango Tipico
Intervalo de advertising Firmware del tag 20 ms – 1024 ms
Ventana/intervalo de escaneo Escaner de pasarela 10 ms – 4096 ms
Canal de advertising usado Tag (37/38/39, rotacion) 3 canales

La probabilidad de deteccion es funcion de los tres. Equivocarse significa detecciones perdidas (duty cycle demasiado bajo) o potencia de pasarela desperdiciada y congestion del canal (duty cycle demasiado alto con rendimientos decrecientes).


2. Fundamentos del Escaneo BLE

2.1 Ventana de Escaneo e Intervalo de Escaneo

El escaner BLE opera con dos parametros clave:

Intervalo de escaneo (T_scan): El periodo de un ciclo completo de escaneo. El escaner se activa, escucha durante la ventana de escaneo, luego se duerme hasta el siguiente ciclo.

Ventana de escaneo (T_window): La duracion dentro de cada intervalo de escaneo en la que la radio esta recibiendo activamente.

El duty cycle de escaneo es:

Duty Cycle = T_window / T_scan

Una ventana de escaneo de 120 ms con un intervalo de 1000 ms da un duty cycle del 12%. El escaner esta escuchando el 12% del tiempo.

2.2 Comportamiento de Escaneo por Canal

El advertising BLE usa tres canales (37, 38, 39). Durante cada ventana de escaneo, el escaner escucha en un canal — rota canales entre intervalos de escaneo segun la especificacion BLE. Esto significa:

– Un tag que hace advertising en el canal 37 solo se escuchara cuando el escaner este escuchando en el canal 37.

– Con tres canales, el escaner gasta aproximadamente 1/3 de su tiempo activo en cada canal.

Esto es critico: un duty cycle del 12% significa solo ~4% de tiempo de escucha efectivo por canal.


3. Modelo de Probabilidad de Deteccion

3.1 El Modelo Basico

Para un tag con intervalo de advertising T_adv y un escaner con ventana T_window e intervalo T_scan, la probabilidad de detectar al menos un advertisement dentro de un intervalo de escaneo es:

P_detect = 1 - (1 - T_window / T_scan)^n

Donde n = numero de advertisements que ocurren durante un intervalo de escaneo:

n = T_scan / T_adv

Sustituyendo:

P_detect = 1 - (1 - T_window / T_scan)^(T_scan / T_adv)

3.2 Ejemplo Calculado

Considere un tag con advertising cada 500 ms, un escaner con ventana de 120 ms e intervalo de 1000 ms:

n = 1000 / 500 = 2 advertisements por intervalo de escaneo

P_detect = 1 - (1 - 0.12)^2 = 1 - 0.7744 = 0.2256 (22.6%)

Eso es una tasa de perdida del 77.4% por intervalo de escaneo. En 10 intervalos de escaneo (10 segundos):

P_detect_10 = 1 - (1 - 0.2256)^10 = 1 - 0.0635 = 0.9365 (93.7%)

Asi que dentro de 10 segundos, hay un 93.7% de probabilidad de al menos una deteccion. Si eso es aceptable depende del requisito de latencia de la aplicacion.

3.3 Correccion por Sobrecarga de Canal

Dado que el escaner solo escucha en uno de tres canales por intervalo, la probabilidad de deteccion efectiva cae aun mas. El tag rota entre los tres canales, y el escaner rota independientemente. La probabilidad de que ambos esten en el mismo canal es aproximadamente 1/3 por advertisement.

Modelo corregido:

P_detect_corrected = 1 - (1 - T_window / (3 * T_scan))^(T_scan / T_adv)

Reejecutando el ejemplo:

P_detect_corrected = 1 - (1 - 0.04)^2 = 1 - 0.9216 = 0.0784 (7.8%)

En 10 segundos (10 intervalos):

P_detect_10_corrected = 1 - (1 - 0.0784)^10 = 1 - 0.4355 = 0.5645 (56.5%)

Esa tasa de deteccion del 56.5% en 10 segundos es mucho menos tranquilizadora. Por esto las elecciones de parametros ingenuas producen tags «intermitentes» en produccion.


4. Optimizacion de Parametros de Escaneo

4.1 Enfoque de Latencia de Deteccion Objetivo

En vez de adivinar parametros, comience con un objetivo: «Quiero 99% de deteccion en N segundos.» Luego resuelva hacia atras.

Para 99% de deteccion en 10 segundos con un tag de advertising de 500 ms:

P_per_interval = 1 - (1 - 0.99)^(1/10) = 0.369

Resolviendo: T_window / (3 * T_scan) >= 0.369 * (T_adv / T_scan)

Con T_scan = 1000 ms, T_adv = 500 ms:

T_window >= 0.369 * 500 * 3 = 553.5 ms

Una ventana de escaneo de 554 ms en un intervalo de 1000 ms (55.4% duty cycle) logra 99% de deteccion en 10 segundos. Eso es agresivo — e ilustra el tradeoff: altas tasas de deteccion demandan altos duty cycles.

4.2 Matriz de Parametros Practicos

La tabla siguiente muestra tasas de deteccion para combinaciones de parametros comunes, asumiendo un intervalo de advertising de 500 ms con correccion de canal:

Ventana Intervalo Duty Cycle P(1 intervalo) P(10s) P(30s)
60 ms 1000 ms 6% 3.9% 33.0% 69.5%
120 ms 1000 ms 12% 7.8% 56.5% 91.4%
250 ms 1000 ms 25% 15.4% 80.3% 99.2%
500 ms 1000 ms 50% 28.0% 95.7% 99.98%
1000 ms 1000 ms 100% 48.8% 99.6% ~100%
120 ms 500 ms 24% 15.4% 80.3% 99.2%
250 ms 500 ms 50% 28.0% 95.7% 99.98%

Conclusiones clave:

Escaneo continuo (100% duty cycle) aun solo produce ~49% de deteccion por intervalo debido a la rotacion de canales — pero en 30 segundos converge a ~100%.

Duplicar la ventana de escaneo aproximadamente duplica la probabilidad de deteccion por intervalo.

Reducir a la mitad el intervalo de escaneo tiene el mismo efecto que duplicar la ventana, pero con diferentes implicaciones de potencia.

4.3 Presupuesto de Potencia de Pasarela

El consumo del escaner es aproximadamente lineal con el duty cycle. Una pasarela que consume 60 mA en escaneo activo y 5 mA en inactividad:

Duty Cycle Corriente Promedio Potencia 24h (3.3V)
12% 11.8 mA 935 mWh
25% 18.75 mA 1485 mWh
50% 32.5 mA 2574 mWh
100% 60 mA 4752 mWh

Para pasarelas con alimentacion de red, 100% duty cycle es viable. Para pasarelas con bateria (solar o pila primaria), 12-25% es el techo practico.


5. Estrategias de Escaneo Multicanal

5.1 Escaneo Secuencial de Radio Unica (Por Defecto)

Los controladores BLE estandar ciclan automaticamente por los canales 37 -> 38 -> 39. Esto es gratuito — sin trabajo de firmware — pero el duty cycle efectivo de 1/3 por canal es una limitacion fundamental.

5.2 Escaneo de Canal Fijado

Algunas pilas BLE permiten bloquear el escaner a un solo canal (ej. siempre escuchar en el 37). Si el tag tambien se configura para hacer advertising solo en el canal 37, se elimina la penalizacion de rotacion:

P_detect = 1 - (1 - T_window / T_scan)^(T_scan / T_adv)

Usando el ejemplo anterior (120 ms ventana, 1000 ms intervalo, 500 ms adv):

P_detect = 1 - (1 - 0.12)^2 = 0.2256 (22.6%)

Eso es 3x mejor que el caso de 3 canales (7.8%). El tradeoff: se pierde redundancia. Si el canal 37 tiene interferencia persistente (ej. de WiFi en el canal 1), la deteccion colapsa completamente.

5.3 Escaneo Paralelo de Doble Radio

Pasarelas de gama alta (ej. ESP32 + nRF52) pueden ejecutar dos radios BLE simultaneamente, cada uno fijado a un canal diferente o ejecutando ciclos de escaneo independientes. Esto duplica el coste de hardware pero:

– Duplica la cobertura efectiva de escaneo

– Permite escaneo activo concurrente en una radio y pasivo en otra

– Permite que una radio maneje conexiones mientras la otra escanea

Con dos radios cubriendo los canales 37 y 38, y el tag haciendo advertising en los tres:

P_detect = 1 - (1 - 2/3 * T_window / T_scan)^(T_scan / T_adv)

Esto da un factor de cobertura de canal de 2/3 en lugar de 1/3.


6. Escaneo Activo vs Pasivo

6.1 Escaneo Pasivo

La pasarela escucha silenciosamente. Solo captura PDUs de advertising (ADV_NONCONN_IND, ADV_IND sin respuesta). Este es el modo estandar para seguimiento de activos con Bluetooth Beacon que transmiten frames iBeacon o Eddystone.

Pros: Tiempo de radio minimo por advertisement, sin interferencia upstream

Contras: Sin payload mas alla del paquete de advertising (max 31 bytes)

6.2 Escaneo Activo

La pasarela envia SCAN_REQ despues de recibir un advertisement. El tag responde con SCAN_RSP (otros 31 bytes). Esto duplica la capacidad de payload a 62 bytes.

Pros: Datos completos del fabricante, valores de sensor en la respuesta de escaneo

Contras: Anade 150-200 us por respuesta de escaneo, aumenta el tiempo aire del canal, puede causar colisiones en despliegues densos de tags

6.3 Umbral de Densidad

En un despliegue con N tags haciendo advertising a intervalo T_adv en un solo canal, la ocupacion del canal es:

Ocupacion = N * (T_adv_pdu + T_scan_req_rsp) / T_adv

Donde T_adv_pdu ≈ 376 us (37 bytes @ 1 Mbps) y T_scan_req_rsp ≈ 376 us (request + response).

Para escaneo pasivo (sin respuesta), 200 tags @ 1s:

Ocupacion = 200 * 0.376ms / 1000ms = 7.5%

Para escaneo activo:

Ocupacion = 200 * 0.752ms / 1000ms = 15.0%

Al 15% de ocupacion, la probabilidad de colision se vuelve no trivial. Por encima del 30% (aprox. 400 tags con escaneo activo @ 1s), la tasa de colision degrada la deteccion mas rapido de lo que el escaneo puede compensar.


7. Ubicacion de Pasarelas y Planificacion de Densidad

7.1 Solapamiento de Cobertura

Cada pasarela tiene un rango efectivo finito, determinado por la potencia TX del tag, la ganancia de antena y la atenuacion ambiental. En un almacen tipico (techo 15 m, estanterias metalicas):

Potencia TX Tag Rango Practico Tags por Pasarela (1000 m²)
+4 dBm 15-20 m ~200-300
0 dBm 10-15 m ~100-200
-12 dBm 5-8 m ~50-80

7.2 Formula de Densidad de Pasarelas

Para una latencia de deteccion objetivo de T_target segundos y conteo de tags N con intervalo de advertising T_adv:

Pasarelas = ceil(N * T_scan_window / (T_target * T_adv * P_threshold))

Donde P_threshold es la probabilidad de deteccion por intervalo requerida. Esto es simplificado — la planificacion real tambien considera la distribucion espacial y la propagacion RF.

7.3 Regla de Despliegue Practica

Para 95% de deteccion en 10 segundos a 500 ms de intervalo de advertising:

Oficina abierta: 1 pasarela por 400 m², 25% duty cycle de escaneo

Almacen con estanterias: 1 pasarela por 250 m², 50% duty cycle de escaneo

Entorno mixto (paredes, maquinaria): 1 pasarela por 150 m², 50% duty cycle de escaneo

Estos asumen +4 dBm de potencia TX del tag y antenas dipolo estandar en ambos extremos.


8. Benchmarks de Tasa de Deteccion en Mundo Real

Los siguientes benchmarks se midieron en un almacen de 2000 m² con 100 BLE tags (500 ms adv, +4 dBm TX), 8 pasarelas (ESP32, 120 ms ventana, 500 ms intervalo, 24% duty cycle):

Metrica Valor Notas
Detecciones promedio por tag por minuto 8.3 Esperado: ~12 (24% duty, 500 ms adv)
Tags con <95% deteccion 7/100 Todos en zonas de sombra de estanterias
Tags con <80% deteccion 2/100 Detras de enclosures metalicos
RSSI promedio de paquetes detectados -67 dBm Rango: -45 a -89 dBm
Tasa de colision en canal de escaneo 3.2% De 8 pasarelas solapadas

Despues de ajustar (duty cycle al 50%, 2 pasarelas adicionales en zonas de sombra):

Metrica Antes Despues
Tags con <95% deteccion 7 1
Tags con <80% deteccion 2 0
Detecciones promedio por tag/min 8.3 14.7
Consumo de pasarela 18.7 mA prom 32.5 mA prom

El coste de la mejora: 73% mas potencia de pasarela y 25% mas hardware. Si ese tradeoff se justifica depende del coste de una deteccion perdida en la aplicacion especifica.


9. Resumen y Recomendaciones

Escenario Ventana Intervalo Duty Cycle P(95% en 10s)
Alimentacion de red, tags densos 500 ms 1000 ms 50% ~96%
Alimentacion de red, tags dispersos 250 ms 1000 ms 25% ~80%
Pasarela bateria, tags densos 250 ms 500 ms 50% ~96%
Pasarela bateria, tags dispersos 120 ms 1000 ms 12% ~57%
Pasarela ultra bajo consumo 60 ms 2000 ms 3% ~15%

Reglas practicas:

1. Comience con el intervalo de advertising del tag — normalmente fijado por el presupuesto de potencia del tag. Construya la estrategia de escaneo alrededor de el.

2. Objetivo 50% duty cycle para despliegues de produccion — es el punto de inflexion donde la probabilidad de deteccion sube marcadamente sin coste excesivo de potencia.

3. Considere la rotacion de canales — su duty cycle efectivo por canal es 1/3 del numero bruto. Es el factor mas comunmente omitido en el diseno de escaneo.

4. Haga benchmarks en el entorno real — la propagacion RF en almacenes y fabricas es demasiado variable para modelos puramente teoricos. Despliegue algunas pasarelas, mida tasas de deteccion, luego escale.

5. Considere escaneo de canal fijado para entornos controlados donde controla el firmware de tag y pasarela. La mejora de 3x en deteccion vale la perdida de diversidad de canal en la mayoria de entornos de interiores.