Cuando un Bluetooth Beacon transmite en un almacén, la medición basada en RSSI indica que la etiqueta está «en algún lugar dentro de 3 a 5 metros» — un círculo de incertidumbre inutil para localización a nivel de pasillo. BLE 5.1 introdujo la detección de dirección por Ángulo de Llegada (AoA), que reemplaza el círculo RSSI con una línea de rumbo precisa a unos pocos grados, habilitando posicionamiento submétrico cuando se usan dos o más antenas localizadoras. Este artículo cubre la cadena completa de señal AoA — desde la estructura de la onda CTE hasta la geometría del arreglo de antenas, muestreo IQ y algoritmos de estimación de ángulo — con los parámetros de ingeniería, compromisos y procedimientos de calibración que determinan si su sistema logra 2 grados de precisión o 20 grados de ruido.

1. Detección de Dirección BLE 5.1: AoA vs AoD

BLE 5.1 define dos modos de detección de dirección. Ambos explotan una extensión de tono constante (CTE) de 72 a 160 bits agregada después del payload del paquete, pero difieren en quién conmuta antenas y quién muestrea datos IQ:

Parámetro Ángulo de Llegada (AoA) Ángulo de Salida (AoD)
Ubicación del arreglo Receptor (localizador) Transmisor (beacon/tag)
Conmutación de antena Receptor conmuta durante CTE Transmisor conmuta durante CTE
Muestreo IQ Receptor muestrea Receptor muestrea (antena única)
Caso de uso típico Trazabilidad de activos, navegación interior Búsqueda de objetos, dirección de proximidad
Complejidad del beacon Simple (antena única, añade CTE) Compleja (requiere arreglo + conmutador)
Complejidad del localizador Compleja (arreglo + conmutador + muestreador) Simple (antena única)
CTE en PDU advertising Si (ADV_EXT_IND) No
CTE en PDU canal de datos Si Si
Firmware en tag Añadir CTEConfig a Tx Controlar GPIO del conmutador RF durante Tx

Para trazabilidad de activos con tags BLE alimentados por batería, AoA es la arquitectura dominante: el tag permanece simple (antena única, solo habilita CTE en el paquete advertising), y toda la complejidad — arreglo de antenas, conmutador RF, muestreo IQ — reside en el localizador alimentado por red. Este artículo se centra en el lado del receptor AoA, donde viven las decisiones de ingeniería.

Ubicación del CTE en la Estructura del Paquete

El CTE se transmite después del CRC de un paquete BLE estándar, en el mismo canal RF, sin aplicar blanqueamiento:

| Preambulo | Direccion de Acceso | Cabecera PDU + Payload | CRC | CTE |

^

72-160 bits, sin blanquear

La cabecera PDU contiene un campo CPType de 2 bits (CTE Info) en la cabecera extendida de ADV_EXT_IND o en PDUs de canal de datos, que informa al receptor: (a) CTE presente, (b) tipo de CTE (AoA = conmutación 1 us, AoD = slot 2 us), (c) longitud CTE (1-20 unidades de 8 us), (d) longitud del patrón de conmutación de antena.

El CTE en sí es una sinusoide pura a la frecuencia portadora RF (sin modulación, sin blanqueamiento). El receptor la downconvierte y muestrea pares I/Q a una tasa conocida, produciendo una progresión de fase a través del arreglo de antenas que codifica el ángulo de llegada.

2. Estructura de la Extensión de Tono Constante (CTE)

El CTE tiene una estructura interna fija independientemente de su longitud total:

Segmento Duración Contenido Propósito
Intervalo de Guardia (GI) 4 us Igual al último bit CTE Permitir asentamiento AGC, sin muestreo
Período de Referencia 8 us Antena de referencia única Establecer referencia de fase
Slot de Conmutación 1 1 us (AoA) o 2 us (AoD) Antena 1 Muestra IQ tomada
Slot de Conmutación 2 1 us (AoA) o 2 us (AoD) Antena 2 Muestra IQ tomada
Slot de Conmutación N 1 us (AoA) o 2 us (AoD) Antena N Muestra IQ tomada

En modo AoA, cada slot de conmutación es 1 us. Con un período de referencia de 8 us e intervalo de guarda de 4 us, un CTE de longitud máxima (20 unidades x 8 us = 160 us) produce:

  • Guardia: 4 us
  • Referencia: 8 us (1 muestra IQ por us = 8 muestras de referencia)
  • Conmutación: 148 us / 1 us = 148 slots de conmutación

En la práctica, la mayoría de diseños usan 4 a 8 elementos de antena, por lo que solo se necesitan 4-8 slots de conmutación por CTE. Los slots restantes son no usados o empleados para sobremuestreo. Una configuración típica:

Config Longitud CTE Antenas Muestras/Slot Pares IQ Totales Tasa de Actualización
Mínima 2 unidades (16 us) 4 1 4 + 8 ref ~10 Hz
Estándar 4 unidades (32 us) 4 1 4 + 8 ref ~10 Hz
Extendida 8 unidades (64 us) 8 1 8 + 8 ref ~5 Hz
Sobremuestreada 16 unidades (128 us) 8 4 32 + 8 ref ~2 Hz

El compromiso es directo: CTE más largo da más muestras y mejor resolución angular, pero consume más tiempo aire y reduce la tasa de advertising. En los tres canales primarios de advertising de BLE (37, 38, 39), un CTE de 160 us añade aproximadamente 10-15% al tiempo aire total del paquete, lo cuál es aceptable.

Frecuencia y Referencia de Fase del CTE

El CTE se transmite a la frecuencia central del canal RF (ej., 2402 MHz para canal 37). Como no hay modulación, la única variación de fase a través del arreglo de antenas proviene de la diferencia de camino espacial. Para una señal que llega a un ángulo theta respecto a la dirección principal del arreglo, la diferencia de fase entre dos antenas adyacentes separadas por distancia d es:

phase_diff = (2 * pi * d / lambda) * sin(theta)

donde lambda = c / f = 3e8 / 2402e6 = 124.9 mm a 2402 MHz.

Para el espaciamiento estándar de media longitud de onda (d = lambda/2 = 62.5 mm), esto se simplifica a:

phase_diff = pi * sin(theta)

Esto significa que el campo de visión ambiguo máximo es de más/menos 90 grados (un FoV total de 180 grados), con envoltura de fase ocurriendo más allá de más/menos 90 grados. Para cobertura más amplia, se usan arreglos con espaciamiento menor a lambda/2 o múltiples subarreglos.

3. Diseño del Arreglo de Antenas

El arreglo de antenas es el elemento de hardware más critico en un sistema AoA. Su geometría determina directamente la resolución angular, el campo de visión y la susceptibilidad a multicamino.

3.1 Arreglo Lineal

Un Arreglo Lineal Uniforme (ULA) es la configuración más simple y común para BLE AoA:

Parámetro Valor Notas
Número de elementos 4-8 Más elementos = mejor resolución
Espaciamiento de elementos lambda/2 (62.5 mm) Estándar para FoV ambiguo
Longitud del arreglo (4 elem) 187.5 mm Cabe en PCB de localizador
Longitud del arreglo (8 elem) 437.5 mm Puede requerir arreglo externo
Resolución angular (4 elem) ~15 grados A 10 dB SNR
Resolución angular (8 elem) ~8 grados A 10 dB SNR
Campo de visión más/menos 90 grados 180 grados total
Ambigüedad Ambigüedad frente-detrás Señal de +30 y -30 grados se ve identica

La ambigüedad frente-detrás es la limitación fundamental del ULA: una señal que llega de +30 grados produce la misma progresión de fase que una de -30 grados (imagen espejo). Esto se resuelve sea (a) montando el arreglo contra una pared o reflector RF de modo que solo un hemisferio sea visible, o (b) usando un arreglo 2D.

3.2 Arreglo Planar (2D)

Para estimación angular 2D completa (acimut + elevación), se requiere un arreglo planar. Configuraciones comunes:

Tipo Geometría Elementos FoV Acimut FoV Elevación Complejidad
UCA cuadrado Cuadrícula N x N 4, 9, 16 360 grados ~60 grados Moderada
UCA circular Anillo 4-8 360 grados ~60 grados Moderada
Forma de L Dos ULA compartiendo esquina 2N-1 360 grados 360 grados Baja
Triangular 3 elementos a 120 grados 3 360 grados Limitada Baja

El Arreglo Circular Uniforme (UCA) es popular para localizadores montados en techo porque proporciona cobertura acimutal de 360 grados sin ambigüedad frente-detrás:

Posiciones de antena (UCA de 8 elementos, radio r = lambda/2):

x_i = r * cos(2 * pi * i / 8)

y_i = r * sin(2 * pi * i / 8)

Para un localizador montado en techo, el acimut (theta) da la dirección de brújula hacia el tag, y la elevación (phi) da el ángulo bajo la horizontal, desde el cuál se puede estimar la distancia dada la altura conocida del techo:

distance = ceiling_height / tan(phi)

3.3 Seleccion de Elemento de Antena

Las antenas de parche son la elección estándar para arreglos AoA porque tienen un patrón de radiación direccional (ganancia hacia el hemisferio de interés) y un factor de forma compacto:

Tipo de Antena Tamaño (a 2.4 GHz) Ganancia Patrón Idoneidad
Parche PCB 25 x 25 mm 6-7 dBi Hemisferico Excelente (compacto, direccional)
Chip cerámico 5 x 5 mm 2-4 dBi Broadside Bueno (compacto, menos ganancia)
Traza PCB (IFA) 15 x 5 mm 2-3 dBi Broadside Regular (tendencia omnidireccional)
Dipolo (externo) 30 mm 2.15 dBi Toroidal Pobre (problemas de lobulo posterior)
Helicoidal 15 x 8 mm 3-5 dBi Hemisferico Bueno pero alto

Parámetro clave de antena para AoA: estabilidad del centro de fase. El centro de fase de la antena (el punto aparente de radiación) no debe desplazarse a medida que cambia el ángulo de llegada. Las antenas de parche PCB tienen estabilidad de centro de fase de más/menos 1-2 mm, lo que se traduce en más/menos 1-3 grados de error angular a 2.4 GHz. Las antenas de chip cerámico economicas pueden tener desviación de centro de fase de más/menos 5 mm (error de más/menos 7 grados), haciéndolas inadecuadas para AoA de alta precisión.

3.4 Acoplamiento Mutuo y Espaciamiento de Elementos

Cuando los elementos de antena se colocan cerca (menos de lambda), el acoplamiento mutuo causa que el patrón de radiación de cada elemento sea distorsionado por sus vecinos. El coeficiente de acoplamiento S21 entre antenas de parche adyacentes a espaciamiento lambda/2 es típicamente -15 a -20 dB. Esto es manejable pero no despreciable:

Espaciamiento S21 (acoplamiento) Distorsión de patrón Contribución de error angular
lambda/4 (31 mm) -8 a -12 dB Severa 5-10 grados
lambda/2 (62.5 mm) -15 a -20 dB Moderada 1-3 grados
lambda (125 mm) -25 a -30 dB Mínima <1 grado
3lambda/4 (94 mm) -20 a -25 dB Baja <1 grado

Las estrategias de mitigación incluyen: (a) añadir cutouts de plano de tierra entre elementos, (b) usar estructuras de tierra defectivas (DGS), (c) estructuras de banda prohibida electromagnética (EBG) entre elementos, o (d) simplemente aumentar el espaciamiento a 3lambda/4 y aceptar el FoV ambiguo más estrecho (más/menos 42 grados en lugar de más/menos 90 grados).

4. Conmutador RF y Frontend de Muestreo

4.1 Requisitos del Conmutador de Antena

El receptor AoA debe conmutar entre elementos de antena durante cada slot de conmutación de 1 us. El conmutador RF es el componente critico:

Parámetro Requisito Parte Típica Notas
Tiempo de conmutación < 200 ns SKY13330, HMC253, PE42420 Debe asentarse antes de muestra IQ
Pérdida de inserción < 1 dB SKY13330: 0.7 dB Afecta sensibilidad
Aislamiento (off) > 20 dB SKY13330: 25 dB Previene diafonía
Número de vías 4-8 SPxT SP4T, SP8T Coincide con tamaño de arreglo
Frecuencia 2.4 GHz ISM Todas las partes listadas Estándar
Interfaz de control GPIO (3-bit para SP8T) GPIO MCU directo Rapido, deterministico
Linealidad (IIP3) > 20 dBm SKY13330: 35 dBm Previene intermodulación

El tiempo de asentamiento del conmutador es critico. Con un slot de conmutación de 1 us y la muestra IQ tomada en el centro del slot (500 ns después de conmutar), el conmutador debe asentarse en 200-300 ns, dejando 200 ns de señal limpia para muestreo. El SKY13330 (Skyworks) y PE42420 (pSemi) ambos especifican 150-200 ns de tiempo de asentamiento, lo cuál es adecuado.

4.2 Muestreo IQ en SoCs BLE

El muestreo IQ es realizado por el periférico de radio del SoC BLE, no por un ADC externo. El demodulador I/Q interno de la radio proporciona acceso a las muestras I/Q en banda base:

SoC Tasa de Muestra IQ Buffer de Muestras Soporte CTE Control de Conmutador Notas
nRF52811/52833/52840 1-2 MHz (DFE) 128-1024 bytes Si (hardware) GPIO vía PPI Ecosistema DF más maduro
nRF5340 1-2 MHz (DFE) Hasta 4096 bytes Si (hardware) GPIO vía DPPI Dual-core, más buffer
CC2640R2 8 MHz (custom) Limitado No (requiere patch) GPIO manual DF nativo no soportado
CC2642/CC2652 1 MHz Configurable Si (hardware) GPIO vía IOMUX BLE 5.1 nativo
ESP32-C6/H2 Configurable Configurable Si (hardware) GPIO vía matriz GPIO Reciente, menos maduro
BGM240/BG24 1 MHz Configurable Si (hardware) GPIO vía PRS Silabs Gecko

La serie Nordic nRF52/53 tiene la implementación AoA más madura. El Motor de Búsqueda de Dirección (DFE) es un periférico de hardware que:

  1. Detecta presencia de CTE desde la cabecera PDU
  2. Controla el GPIO del conmutador RF vía PPI (Interconexión de Perifericos Programable) a intervalos precisos de 1 us
  3. Muestrea I/Q a hasta 2 MHz (configurable, por defecto 1 MHz = 1 muestra/us)
  4. Almacena muestras en un buffer RAM dedicado
  5. Genera una interrupción cuando el muestreo está completo

4.3 Configuración del Patrón de Conmutación

El patrón de conmutación de antena define cuál antena está activa durante cada slot de conmutación. Para un arreglo de 4 elementos:

Slot de Conmutación Antena Activa Valor GPIO SwitchPattern Notas
Referencia (0-7) Antena 0 (referencia) 0x01 Misma antena para todas las muestras de referencia
Slot 1 Antena 1 0x02 Primera antena de medición
Slot 2 Antena 2 0x04 Segunda antena de medición
Slot 3 Antena 3 0x08 Tercera antena de medición
Slot 4 Antena 0 0x01 Retorno a referencia (opcional)
Slot 5-8 Antenas 1-3 repiten 0x02, 0x04, 0x08 Sobremuestreo (opcional)

El patrón se carga en un buffer en RAM, y el sistema PPI del periférico RADIO toggles los pines GPIO a intervalos de 1 us, sincronizados con la recepción del CTE. Esta conmutación impulsada por hardware elimina el jitter que sería imposible de evitar con toggling de GPIO controlado por software.

5. Algoritmos de Estimación de Ángulo

Una vez recogidas las muestras IQ, el ángulo de llegada debe calcularse. La elección del algoritmo determina la resolución angular, el coste computacional y la robustez al ruido.

5.1 Método de Diferencia de Fase (Basico)

El enfoque más simple calcula la diferencia de fase entre elementos de antena adyacentes y la convierte en un ángulo:

import numpy as np

# Muestras IQ: 4 antenas, 1 muestra cada una (de slots de conmutacion)

# iq[0] = referencia, iq[1..3] = antena 1..3

iq = np.array([complex(i, q) for i, q in iq_samples])

# Fase de cada muestra de antena

phases = np.angle(iq)

# Diferencia de fase entre elementos adyacentes

dphi = np.diff(phases)

# Convertir a angulo (espaciamiento media longitud de onda)

# dphi = pi * sin(theta) => theta = arcsin(dphi / pi)

theta = np.arcsin(np.clip(dphi / np.pi, -1, 1))

# Promediar a traves de pares de elementos

theta_avg = np.mean(theta)

Parámetro Valor Notas
Resolución angular 10-15 grados (4 elem, 10 dB SNR) Limitada por ruido de fase
Computacion O(N) Trivial, ejecuta en microsegundos
Robustez a multicamino Pobre Cualquier reflexión corrompe la fase
FoV ambiguo más/menos 90 grados ULA estándar
SNR requerida > 5 dB Por debajo, la fase se envuelve

El método de diferencia de fase es adecuado para prueba de concepto y aplicaciones de baja precisión (posicionamiento a nivel de habitación). Para sistemas en producción que requieren precisión subgrado, se necesitan algoritmos más sofisticados.

5.2 MUSIC (Multiple Signal Classification)

MUSIC es un algoritmo basado en subespacio que separa el subespacio de señal del subespacio de ruido usando descomposición en autovalores de la matriz de covarianza. Puede resolver múltiples señales simultaneas (reflexiones multicamino) y lograr superresolución:

import numpy as np

from scipy.linalg import eigh

def music_aoa(iq_matrix, num_antennas, num_signals=1, d=0.5, scan_points=180):

# iq_matrix: (num_snapshots, num_antennas) complex

# d: espaciamiento de elementos en longitudes de onda (0.5 = lambda/2)

# 1. Calcular matriz de covarianza

R = np.cov(iq_matrix.T) # (N, N) Hermiteana

# 2. Descomposicion en autovalores

eigenvalues, eigenvectors = eigh(R)

# 3. Ordenar autovalores (descendente)

idx = np.argsort(eigenvalues)[::-1]

eigenvalues = eigenvalues[idx]

eigenvectors = eigenvectors[:, idx]

# 4. Subespacio de ruido (autovalores N-K mas pequenos)

K = num_signals

En = eigenvectors[:, K:] # (N, N-K)

# 5. Vector de steering para angulo de barrido theta

thetas = np.linspace(-90, 90, scan_points)

spectrum = np.zeros(scan_points)

for i, theta in enumerate(np.deg2rad(thetas)):

a = np.exp(-1j * 2 * np.pi * d * np.arange(num_antennas) * np.sin(theta))

# Pseudoespectro MUSIC

spectrum[i] = 1.0 / np.abs(a.conj() @ En @ En.conj().T @ a)

# 6. Busqueda de pico

peak_idx = np.argmax(spectrum)

return thetas[peak_idx], spectrum

Parámetro Valor Notas
Resolución angular 3-5 grados (4 elem, 10 dB SNR) Superresolución
Resolución (8 elem) 1-2 grados Cerca del limite Cramer-Rao
Computacion O(N^3) para descomposición 1-5 ms en Cortex-M4F
Manejo de multicamino Resuelve hasta N-1 señales Si K < N
Snapshots requeridos >= N (típicamente 8-16) Necesita múltiples recepciones CTE
Memoria Covarianza N x N (64 bytes para N=4) Trivial

La ventaja clave de MUSIC es la resolución de multicamino: si el camino directo y una reflexión llegan de ángulos diferentes, MUSIC puede identificar ambos como picos separados en el pseudoespectro. El camino directo es típicamente el pico con mayor potencia, aunque esta suposición puede fallar en entornos NLOS (sin línea de vista).

5.3 ESPRIT (Estimación de Parámetros de Señal vía Invariancia Rotacional)

ESPRIT evita la búsqueda espectral de MUSIC explotando la estructura de invariancia de desplazamiento del arreglo. Es computacionalmente más ligero que MUSIC pero requiere un arreglo uniforme:

Parámetro MUSIC ESPRIT
Tipo de arreglo Cualquiera (ULA, UCA, planar) ULA o subarreglos emparejados solo
Búsqueda espectral Si (180+ evaluaciones) No (forma cerrada)
Computacion O(N^3) + O(barrido x N) O(N^3)
Latencia (Cortex-M4F, N=4) 2-5 ms 1-2 ms
Resolución angular Equivalente Equivalente
Resolución multicamino Si (búsqueda de pico) Si (mapeo de autovalores)
Complejidad de implementación Moderada Moderada

Para BLE AoA con 4-8 antenas, tanto MUSIC como ESPRIT se ejecutan en pocos milisegundos en un Cortex-M4F. La elección entre ellos suele estar dictada por la geometría del arreglo: MUSIC para UCA (localizadores de techo), ESPRIT para ULA (localizadores de pared).

5.4 Cota Inferior de Cramer-Rao (CRLB)

La CRLB define la mejor precisión angular posible dado el SNR, número de antenas y geometría del arreglo:

var(theta) >= lambda^2 / (8 * pi^2 * d^2 * N * (N-1) * SNR * K)

donde N = número de antenas, K = número de snapshots, d = espaciamiento de elementos (metros), SNR = lineal (no dB).

N (antenas) K (snapshots) SNR (dB) CRLB (grados) Práctico (x2 CRLB)
4 1 10 3.8 7.6
4 8 10 1.3 2.7
8 1 10 1.1 2.3
8 8 10 0.4 0.8
4 8 20 0.4 0.8
8 8 20 0.13 0.26

La columna «Práctico» tiene en cuenta impedimentos del mundo real (ruido de fase, acoplamiento mutuo, desbalance de canal) que típicamente duplican la CRLB. Aun así, un arreglo de 8 elementos con 8 snapshots a 20 dB SNR puede lograr teoricamente precisión subgrado.

6. Mitigación de Multicamino y NLOS

Los entornos interiores son ricos en multicamino. Una señal de 2.4 GHz se refleja en estanterías metalicas, paredes de hormigón y cuerpos humanos, creando múltiples caminos desde el tag hasta el localizador. Cada camino llega a un ángulo diferente, y el receptor ve su suma vectorial.

6.1 Impacto del Multicamino en AoA

Entorno Potencia camino directo Potencia camino reflejado Error AoA (diff-fase) Error AoA (MUSIC)
Oficina abierta (LOS) -50 dBm -65 dBm 2-5 grados 1-2 grados
Almacén (LOS parcial) -60 dBm -63 dBm 10-25 grados 3-8 grados
Fábrica (NLOS) -75 dBm -70 dBm 30+ grados 10-20 grados
Pasillo (guíaondas) -55 dBm -57 dBm 15-30 grados 5-10 grados

En condiciones NLOS, el camino directo puede estar 10-15 dB por debajo de la reflexión más fuerte. MUSIC a veces puede resolver ambos caminos, pero identificar qué pico es el camino directo requiere información adicional:

  • Gating RSSI: El camino directo debería tener el RSSI más alto (no siempre cierto en NLOS)
  • Verificación de consistencia: El ángulo del camino directo debería ser consistente a través de múltiples recepciones CTE
  • Fusion multi-localizador: Si 3+ localizadores ven el tag, el camino directo es aquel cuyos ángulos producen una triangulación consistente
  • Filtrado de elevación: Para localizadores de techo, el camino directo debería tener un ángulo de elevación que coincida con la altura de techo conocida

6.2 Suavizado Espacial

El suavizado espacial es una técnica de preprocesamiento que descorrelaciona señales multicamino, permitiendo a MUSIC resolver multicamino coherente (que MUSIC estándar no puede):

Técnica Tipo de Arreglo Descorrelacion Pérdida de Apertura Complejidad
Suavizado hacia adelante ULA Si ~50% Baja
Forward-backward ULA Si ~50% Baja
Suavizado espacial (UCA) UCA Si ~40% Moderada
Suavizado 2D Planar Si ~50% Moderada

El suavizado espacial hacia adelante divide el ULA de N elementos en L subarreglos superpuestos de tamaño M = N – L + 1. Las matrices de covarianza de los subarreglos se promedian, lo que descorrelaciona el multicamino coherente a costa de reducir la apertura efectiva de N a M. Para un arreglo de 4 elementos, subarreglos de 2 elementos (L=2, M=2) pueden resolver 1 señal multicamino, pero la resolución cae a la de un arreglo de 2 elementos — usualmente no vale la pena. Para arreglos de 8 elementos, el suavizado forward-backward con M=5 (L=4) es un buen equilibrio.

6.3 Filtrado Temporal

Incluso con estimación angular perfecta, la salida es ruidosa en el tiempo. Un filtro de Kalman o alfa-beta suaviza las estimaciones de ángulo:

Filtro Estado Ajuste Latencia Suavidad
Media móvil theta Ventana = 5-10 muestras 0.5-1 s Moderada
Alfa-beta theta, omega alpha=0.3, beta=0.05 <0.2 s Buena
Kalman theta, omega Q, R de medición <0.1 s Mejor
Filtro de partículas theta, x, y 100-500 partículas 0.1-0.5 s Mejor (no lineal)

Para seguimiento en tiempo real de activos en movimiento (carretillas elevadoras, AGVs), el filtro alfa-beta es el punto óptimo práctico: se ejecuta en microsegundos, añade latencia mínima y proporciona suavizado adecuado para la mayoría de aplicaciones interiores.

7. Arquitectura del Sistema y Despliegue

7.1 Arquitectura de Hardware del Localizador

Un localizador AoA completo consta de:

Componente Función Parte Típica Coste
SoC BLE Radio, muestreo IQ, cómputo de ángulo nRF52833/5340 $4-7
Conmutador RF Multiplexacion de antena SKY13330-385LF (SP4T) $1.50
Arreglo de antenas Arreglo de parche 4-8 elementos PCB personalizado o TI AOA-RD $3-10
MCU (opcional) Descarga de cómputo de ángulo Ninguno (SoC suficiente) $0
Ethernet/Wi-Fi Backhaul al servidor de posicionamiento W5500 o ESP32 $2-3
Fuente de alimentación PoE o adaptador 12V Modulo PoE $2-4
Carcasa Vivienda transparente a RF ABS/policarbonato $3-8
BOM Total $15-35

7.2 Estrategia de Colocación de Localizadores

Colocación Altura Espaciado Cobertura Precisión Caso de Uso
Montaje en techo 3-4 m 8-15 m 100-200 m2 0.5-1 m Oficina, retail
Montaje en pared 2-3 m 6-10 m 50-100 m2 1-2 m Pasillos, estantes
Bahía alta 8-12 m 15-25 m 300-500 m2 2-5 m Almacén, fábrica
Montaje en suelo 0.5-1 m 4-8 m 30-60 m2 0.3-0.5 m Trazabilidad densa de activos

Los localizadores UCA montados en techo a 3-4 m de altura con espaciado de 10-12 m son el despliegue estándar para posicionamiento interior submétrico. El ángulo de elevación desde el localizador hasta el tag restringe la distancia:

Ángulo de elevación Distancia horizontal (techo 3 m) Distancia horizontal (techo 4 m)
80 grados 0.5 m 0.7 m
60 grados 1.7 m 2.3 m
45 grados 3.0 m 4.0 m
30 grados 5.2 m 6.9 m
20 grados 8.2 m 11.0 m

Por debajo de 20 grados de elevación, la estimación de distancia se vuelve poco fiable (pequenos errores de ángulo causan grandes errores de distancia). Por esto el espaciado de localizadores debe elegirse de modo que el tag siempre esté dentro del cono de elevación 20-80 grados de al menos dos localizadores.

7.3 Servidor de Posicionamiento

El servidor de posicionamiento recibe mediciones de ángulo de múltiples localizadores y computa la posición 2D o 3D:

Método Min localizadores Computacion Precisión Notas
Triangulación (2 AoA) 2 Interseccion de 2 lineas de rumbo 0.5-2 m Sensible a error angular
Mínimos cuadrados (N AoA) 3+ Minimizar residual de N rumbos 0.3-1 m Robusto, estándar
Filtro de Kalman 2+ Espacio de estados con modelo de movimiento 0.2-0.5 m Suaviza en el tiempo
Fingerprinting + AoA 1+ Base de datos hibrida RSSI/AoA 0.5-1 m Funciona con 1 localizador

El método de mínimos cuadrados con 3+ localizadores es el estándar de producción. La estimación de posición minimiza:

minimize sum_i | theta_measured_i - theta_predicted_i(position) |^2

Este es un problema de mínimos cuadrados no lineal resuelto por iteración Gauss-Newton o Levenberg-Marquardt. Con 3-4 localizadores y precisión angular de 5-10 grados, la precisión de posición resultante es típicamente 0.5-1.0 m en 2D.

8. Calibración y Caracterización

8.1 Calibración de Fase

Cada sistema AoA requiere calibración de fase por antena para compensar variaciones de fabricación en el conmutador RF, trazas PCB y elementos de antena. El procedimiento de calibración:

  1. Tag de referencia: Colocar un tag transmisor CTE en un ángulo conocido (0 grados, dirección principal) a 2-3 m de distancia
  2. Recoger muestras IQ: Registrar 100-1000 recepciones CTE
  3. Computar offset de fase por antena: La fase esperada a 0 grados es 0 para todas las antenas. Cualquier desviación es el offset de calibración.
  4. Almacenar tabla de calibración: Offset de fase por antena, almacenado en flash
Fuente de calibración Magnitud de error de fase Frecuencia Método de calibración
Asimetría del conmutador RF 5-20 grados Una vez (fábrica) Offset de fase por antena
Desajuste de traza PCB 2-10 grados Una vez (fábrica) Offset de fase por antena
Centro de fase de antena 1-5 grados Una vez (fábrica) LUT dependiente de ángulo
Deriva de temperatura 1-3 grados Por bin de temperatura LUT compensada por temperatura
Frecuencia (canal) 2-5 grados Por canal Calibración por canal

Sin calibración, los offsets de fase en bruto pueden causar 10-20 grados de error angular sistemático. Después de la calibración, el error residual es típicamente 1-3 grados.

8.2 Caracterización en Cámara Anechoica

La caracterización completa requiere una cámara anechoica con plataforma rotatoria:

Medición Equipo Duración Salida
Patrón de antena (por elemento) VNA + cámara 2-4 horas Ganancia vs ángulo por elemento
Patrón de fase (por elemento) VNA + cámara 2-4 horas Fase vs ángulo por elemento
Acoplamiento mutuo (parámetros-S) VNA 30 minutos Matriz S21 (N x N)
Precisión AoA extremo a extremo Tag CTE + rotador de cámara 4-8 horas Medido vs ángulo verdadero, 360 grados completos
Barrido de temperatura Cámara termica + tag 2-4 horas Offset de fase vs temperatura

El barrido de precisión AoA extremo a extremo es la medición más valiosa. El tag se coloca a distancia fija, y el localizador se rota en incrementos de 5 grados desde -90 a +90 grados. En cada ángulo, se recogen 100 recepciones CTE y se registra el ángulo estimado mediano:

Ángulo verdadero Mediano estimado (sin calibrar) Mediano estimado (calibrado) Desv estándar
-60 grados -47 grados -59 grados 3 grados
-30 grados -24 grados -30 grados 2 grados
0 grados +6 grados 0 grados 1 grado
+30 grados +37 grados +31 grados 2 grados
+60 grados +52 grados +59 grados 3 grados

Los resultados sin calibrar muestran un error sistemático de 6-13 grados, que la tabla de calibración reduce a 0-1 grados. La desviación estándar aumenta a ángulos mayores porque la apertura efectiva proyectada hacia la fuente disminuye.

9. Consumo de Energía en el Lado del Tag

El tag (beacon) solo necesita añadir CTE a sus paquetes advertising. El coste de potencia incremental:

Modo Intervalo advertising Corriente sin CTE Con CTE (16 us) Delta Impacto batería (CR2032, 220 mAh)
1 Hz 1000 ms 12 uA avg 12.3 uA avg +0.3 uA Despreciable (5+ anos)
10 Hz 100 ms 85 uA avg 88 uA avg +3 uA 5+ anos
100 Hz 10 ms 750 uA avg 780 uA avg +30 uA ~8 meses

El CTE añade solo 16-160 us a cada evento de advertising, lo cuál es despreciable comparado con los 3-4 ms de duración total del evento (preambulo + payload + CTE + arranque TX). Incluso a 100 Hz de advertising con 160 us de CTE, la energía adicional es menos del 5% de la energía TX total. Esto significa que los tags habilitados para AoA tienen esencialmente la misma vida de batería que los beacons BLE estándar.

Configuración de CTE en el Tag

Habilitar CTE en el paquete advertising en un tag basado en nRF52:

// Configurar CTE para AoA (slot de conmutacion 1 us, longitud 16 us = 2 unidades)

ble_radio_cte_config_t cte_config = {

.cte_type = BLE_RADIO_CTE_TYPE_AOA,

.cte_length = 2, // 2 x 8 us = 16 us

.cte_time_total = 16, // duracion total CTE en us

.antenna_switching = false, // el tag no conmuta (modo AoA)

};

// Aplicar al conjunto de advertising

sd_ble_gap_cte_set(adv_handle, &cte_config);

La modificación del firmware del tag es mínima: una llamada API para habilitar CTE en el conjunto de advertising. Sin conmutador de antena, sin muestreo IQ, sin cómputo de ángulo. Por eso AoA es atractivo para tags de activos alimentados por batería.

10. Pitfalls Comunes y Depuración

Problema Síntoma Causa Raíz Solución
Offset de ángulo constante Todos los ángulos desplazados 5-15 grados Calibración de fase no aplicada Ejecutar procedimiento de calibración, almacenar offsets
Envoltura de ángulo El ángulo salta de +85 a -85 grados Ambigüedad ULA en endfire Limitar FoV a más/menos 75 grados, o usar UCA
Ángulo ruidoso (std > 10 grados) Dispersión aleatoria alrededor del ángulo verdadero SNR bajo o multicamino Aumentar longitud CTE, añadir suavizado espacial
Ángulo atascado en 0 Todas las estimaciones devuelven 0 Conmutador RF no toggling, o CTE no detectado Verificar cableado GPIO, verificar config PPI
Datos IQ intermitentes Algunas recepciones CTE devuelven cero muestras Overflow de buffer de radio o jitter de temporización Aumentar tamaño de buffer DFE, verificar prioridades de interrupción
Precisión de elevación pobre Acimut OK, elevación desviada 20+ grados Arreglo planar no calibrado para elevación Calibración 2D completa en cámara anechoica
Fallo NLOS El ángulo apunta a la pared en lugar del tag Reflexión fuerte dominando camino directo Añadir fusion multi-localizador, usar detección NLOS
Deriva de temperatura Precisión se degrada tras 2+ horas de operacion Desplazamiento de fase del conmutador RF vs temperatura Tabla de calibración compensada por temperatura
Error dependiente de canal La precisión varia entre canales advertising Offset de fase difiere por frecuencia Tabla de calibración por canal
Sensibilidad a orientación del tag El ángulo cambia cuando el tag rota Antena del tag no omnidireccional Usar tag con antena omnidireccional, o añadir sensor de orientación

Lista de Verificación de Depuración

  1. Verificar que CTE está presente en el paquete advertising (usar nRF Connect o Ellipsis)
  2. Confirmar toggling del conmutador RF en GPIO (osciloscopio en pines de control)
  3. Verificar que el buffer de muestras IQ está poblado (valores no nulos, variados)
  4. Validar que la tabla de calibración de fase está cargada y aplicada
  5. Probar en cámara anechoica (o área exterior abierta) para eliminar multicamino
  6. Verificar salida del algoritmo de estimación vs rotacion conocida
  7. Probar con tag en movimiento a velocidades realistas (0.5-2 m/s)
  8. Desplegar en entorno objetivo y caracterizar con ground truth

11. Comparación de Implementación: Nordic vs TI vs Silicon Labs

Característica Nordic nRF52833/5340 TI CC2642/CC2652 Silicon Labs BG24
Spec BLE 5.1+ 5.2+ 5.2+
Hardware DFE/DF Si (periférico DFE) Si (DMA de radio) Si (RAC + BUFC)
Max tasa de muestra IQ 2 MHz 1 MHz 1 MHz
Tamaño buffer IQ 128-4096 bytes Configurable Configurable
Control de conmutador de antena PPI + GPIO (hardware) IOMUX + GPIO PRS + GPIO
Ejemplo AoA SDK nRF Direction Finding rtls_agent AoA locator
Flexibilidad de patrón de conmutación Patrón GPIO por slot Patrón por slot Patrón por slot
CTE en advertising Si Si Si
CTE en canal de datos Si Si Si
Diseño de referencia AoA nRF AoA locator CC26x2 AoA antenna xGM24 AoA kit
Soporte de comunidad Extenso Moderado Creciente
SDK de estimación de ángulo Nordic AoA library TI RTLS toolbox Silabs AoA plugin

Nordic tiene el ecosistema más maduro con diseños de referencia, ejemplos SDK y soporte de comunidad. El nRF52833 es el SoC de facto para localizadores AoA de producción debido a su hardware DFE probado y extensa documentación.

12. Lista de Verificación de Diseño para Sistemas AoA de Producción

Arreglo de antenas:

  • Espaciamiento de elementos = lambda/2 (62.5 mm) para ULA, o radio = lambda/2 para UCA
  • Acoplamiento mutuo < -15 dB (verificar con medición parámetros-S VNA)
  • Estabilidad de centro de fase < más/menos 2 mm (usar antenas de parche, no de chip)
  • Plano de tierra se extiende al menos lambda/4 más allá del elemento más exterior

Frontend RF:

  • Tiempo de asentamiento del conmutador RF < 200 ns (verificar con osciloscopio)
  • Pérdida de inserción del conmutador < 1 dB (presupuesto de margen de enlace)
  • Aislamiento del conmutador > 20 dB (prevenir diafonía entre elementos)
  • Control GPIO del conmutador enrutado con longitudes de traza coincidentes (< 5 mm skew)

Firmware:

  • Periférico DFE/DF configurado para slots de conmutación de 1 us (modo AoA)
  • Tamaño de buffer IQ >= 2 x (num_antenas + 8) muestras (doble buffer)
  • Patrón de conmutación cargado en RAM del periférico RADIO
  • Tabla de calibración de fase almacenada en flash y aplicada antes de estimación de ángulo
  • Algoritmo de estimación de ángulo seleccionado (diff-fase para PoC, MUSIC para producción)
  • Filtro temporal (alfa-beta o Kalman) aplicado a la salida de ángulo

Lado del tag:

  • CTE habilitado en conjunto de advertising (cte_type = AoA, length = 2-4 unidades)
  • Intervalo de advertising coincide con requisito de tasa de actualización de posicionamiento
  • Antena del tag es omnidireccional (verificar patrón en cámara)
  • Vida de batería calculada con overhead de CTE incluido

Despliegue:

  • Espaciado de localizadores elegido para cobertura de cono de elevación 20-80 grados
  • Mínimo 3 localizadores con LOS a cada área de cobertura
  • Servidor de posicionamiento ejecutando mínimos cuadrados o fusion Kalman
  • Detección y rechazo NLOS implementados
  • Estudio de sitio realizado con ground truth (posiciones medidas)
  • Especificación de precisión verificada en entorno objetivo (no solo cámara)

La detección de dirección AoA transforma el posicionamiento BLE de un círculo RSSI de 3-5 metros en una interseccion de rumbos submétricos. La tecnología es madura — SoCs BLE 5.1 con DFE de hardware, diseños de antena de referencia y bibliotecas de estimación de ángulo de código abierto están todos disponibles. El desafío de ingeniería no está en el procesamiento de señales sino en la capa física: diseño del arreglo de antenas, integridad del conmutador RF, calibración de fase y mitigación de multicamino. Haga eso bien, y su sistema de Bluetooth Beacon entrega precisión submétrica. Hagalo mal, y tiene un costoso sensor RSSI con antenas extra.