Cuando un Bluetooth Beacon transmite en un almacen, la medicion basada en RSSI indica que la etiqueta esta «en algun lugar dentro de 3 a 5 metros» — un circulo de incertidumbre inutil para localizacion a nivel de pasillo. BLE 5.1 introdujo la deteccion de direccion por Angulo de Llegada (AoA), que reemplaza el circulo RSSI con una linea de rumbo precisa a unos pocos grados, habilitando posicionamiento submetrico cuando se usan dos o mas antenas localizadoras. Este articulo cubre la cadena completa de senal AoA — desde la estructura de la onda CTE hasta la geometria del arreglo de antenas, muestreo IQ y algoritmos de estimacion de angulo — con los parametros de ingenieria, compromisos y procedimientos de calibracion que determinan si su sistema logra 2 grados de precision o 20 grados de ruido.
## 1. Deteccion de Direccion BLE 5.1: AoA vs AoD
BLE 5.1 define dos modos de deteccion de direccion. Ambos explotan una extension de tono constante (CTE) de 72 a 160 bits agregada despues del payload del paquete, pero difieren en quien conmuta antenas y quien muestrea datos IQ:
| Parametro | Angulo de Llegada (AoA) | Angulo de Salida (AoD) |
|———–|————————|————————–|
| Ubicacion del arreglo | Receptor (localizador) | Transmisor (beacon/tag) |
| Conmutacion de antena | Receptor conmuta durante CTE | Transmisor conmuta durante CTE |
| Muestreo IQ | Receptor muestrea | Receptor muestrea (antena unica) |
| Caso de uso tipico | Trazabilidad de activos, navegacion interior | Busqueda de objetos, direccion de proximidad |
| Complejidad del beacon | Simple (antena unica, anade CTE) | Compleja (requiere arreglo + conmutador) |
| Complejidad del localizador | Compleja (arreglo + conmutador + muestreador) | Simple (antena unica) |
| CTE en PDU advertising | Si (ADV_EXT_IND) | No |
| CTE en PDU canal de datos | Si | Si |
| Firmware en tag | Anadir CTEConfig a Tx | Controlar GPIO del conmutador RF durante Tx |
Para trazabilidad de activos con tags BLE alimentados por bateria, AoA es la arquitectura dominante: el tag permanece simple (antena unica, 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 articulo se centra en el lado del receptor AoA, donde viven las decisiones de ingenieria.
### Ubicacion del CTE en la Estructura del Paquete
El CTE se transmite despues del CRC de un paquete BLE estandar, 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 = conmutacion 1 us, AoD = slot 2 us), (c) longitud CTE (1-20 unidades de 8 us), (d) longitud del patron de conmutacion de antena.
El CTE en si es una sinusoide pura a la frecuencia portadora RF (sin modulacion, sin blanqueamiento). El receptor la downconvierte y muestrea pares I/Q a una tasa conocida, produciendo una progresion de fase a traves del arreglo de antenas que codifica el angulo de llegada.
## 2. Estructura de la Extension de Tono Constante (CTE)
El CTE tiene una estructura interna fija independientemente de su longitud total:
| Segmento | Duracion | Contenido | Proposito |
|———|———-|———|———|
| Intervalo de Guardia (GI) | 4 us | Igual al ultimo bit CTE | Permitir asentamiento AGC, sin muestreo |
| Periodo de Referencia | 8 us | Antena de referencia unica | Establecer referencia de fase |
| Slot de Conmutacion 1 | 1 us (AoA) o 2 us (AoD) | Antena 1 | Muestra IQ tomada |
| Slot de Conmutacion 2 | 1 us (AoA) o 2 us (AoD) | Antena 2 | Muestra IQ tomada |
| … | … | … | … |
| Slot de Conmutacion N | 1 us (AoA) o 2 us (AoD) | Antena N | Muestra IQ tomada |
En modo AoA, cada slot de conmutacion es 1 us. Con un periodo de referencia de 8 us e intervalo de guarda de 4 us, un CTE de longitud maxima (20 unidades x 8 us = 160 us) produce:
– Guardia: 4 us
– Referencia: 8 us (1 muestra IQ por us = 8 muestras de referencia)
– Conmutacion: 148 us / 1 us = 148 slots de conmutacion
En la practica, la mayoria de disenos usan 4 a 8 elementos de antena, por lo que solo se necesitan 4-8 slots de conmutacion por CTE. Los slots restantes son no usados o empleados para sobremuestreo. Una configuracion tipica:
| Config | Longitud CTE | Antenas | Muestras/Slot | Pares IQ Totales | Tasa de Actualizacion |
|——–|———–|———-|————–|—————-|————-|
| Minima | 2 unidades (16 us) | 4 | 1 | 4 + 8 ref | ~10 Hz |
| Estandar | 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 mas largo da mas muestras y mejor resolucion angular, pero consume mas 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 anade aproximadamente 10-15% al tiempo aire total del paquete, lo cual 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 modulacion, la unica variacion de fase a traves del arreglo de antenas proviene de la diferencia de camino espacial. Para una sennal que llega a un angulo theta respecto a la direccion 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 estandar 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 vision ambiguo maximo es de mas/menos 90 grados (un FoV total de 180 grados), con envoltura de fase ocurriendo mas alla de mas/menos 90 grados. Para cobertura mas amplia, se usan arreglos con espaciamiento menor a lambda/2 o multiples subarreglos.
## 3. Diseno del Arreglo de Antenas
El arreglo de antenas es el elemento de hardware mas critico en un sistema AoA. Su geometria determina directamente la resolucion angular, el campo de vision y la susceptibilidad a multicamino.
### 3.1 Arreglo Lineal
Un Arreglo Lineal Uniforme (ULA) es la configuracion mas simple y comun para BLE AoA:
| Parametro | Valor | Notas |
|———–|——-|——-|
| Numero de elementos | 4-8 | Mas elementos = mejor resolucion |
| Espaciamiento de elementos | lambda/2 (62.5 mm) | Estandar 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 |
| Resolucion angular (4 elem) | ~15 grados | A 10 dB SNR |
| Resolucion angular (8 elem) | ~8 grados | A 10 dB SNR |
| Campo de vision | mas/menos 90 grados | 180 grados total |
| Ambiguedad | Ambiguedad frente-detras | Sennal de +30 y -30 grados se ve identica |
La ambiguedad frente-detras es la limitacion fundamental del ULA: una sennal que llega de +30 grados produce la misma progresion 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 estimacion angular 2D completa (acimut + elevacion), se requiere un arreglo planar. Configuraciones comunes:
| Tipo | Geometria | Elementos | FoV Acimut | FoV Elevacion | Complejidad |
|——|———-|———-|————-|—————|————|
| UCA cuadrado | Cuadricula 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 ambiguedad frente-detras:
«`
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 direccion de brujula hacia el tag, y la elevacion (phi) da el angulo bajo la horizontal, desde el cual 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 eleccion estandar para arreglos AoA porque tienen un patron de radiacion direccional (ganancia hacia el hemisferio de interes) y un factor de forma compacto:
| Tipo de Antena | Tamano (a 2.4 GHz) | Ganancia | Patron | Idoneidad |
|————-|——————-|——|———|————-|
| Parche PCB | 25 x 25 mm | 6-7 dBi | Hemisferico | Excelente (compacto, direccional) |
| Chip ceramico | 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 |
Parametro clave de antena para AoA: estabilidad del centro de fase. El centro de fase de la antena (el punto aparente de radiacion) no debe desplazarse a medida que cambia el angulo de llegada. Las antenas de parche PCB tienen estabilidad de centro de fase de mas/menos 1-2 mm, lo que se traduce en mas/menos 1-3 grados de error angular a 2.4 GHz. Las antenas de chip ceramico economicas pueden tener desviacion de centro de fase de mas/menos 5 mm (error de mas/menos 7 grados), hacienolas inadecuadas para AoA de alta precision.
### 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 patron de radiacion de cada elemento sea distorsionado por sus vecinos. El coeficiente de acoplamiento S21 entre antenas de parche adyacentes a espaciamiento lambda/2 es tipicamente -15 a -20 dB. Esto es manejable pero no despreciable:
| Espaciamiento | S21 (acoplamiento) | Distorsion de patron | Contribucion 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 | Minima | <1 grado |
| 3lambda/4 (94 mm) | -20 a -25 dB | Baja | <1 grado |
Las estrategias de mitigacion incluyen: (a) anadir cutouts de plano de tierra entre elementos, (b) usar estructuras de tierra defectivas (DGS), (c) estructuras de banda prohibida electromagnetica (EBG) entre elementos, o (d) simplemente aumentar el espaciamiento a 3lambda/4 y aceptar el FoV ambiguo mas estrecho (mas/menos 42 grados en lugar de mas/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 conmutacion de 1 us. El conmutador RF es el componente critico:
| Parametro | Requisito | Parte Tipica | Notas |
|-----------|-------------|---------------|-------|
| Tiempo de conmutacion | < 200 ns | SKY13330, HMC253, PE42420 | Debe asentarse antes de muestra IQ |
| Perdida de insercion | < 1 dB | SKY13330: 0.7 dB | Afecta sensibilidad |
| Aislamiento (off) | > 20 dB | SKY13330: 25 dB | Previene diafonia |
| Numero de vias | 4-8 SPxT | SP4T, SP8T | Coincide con tamano de arreglo |
| Frecuencia | 2.4 GHz ISM | Todas las partes listadas | Estandar |
| Interfaz de control | GPIO (3-bit para SP8T) | GPIO MCU directo | Rapido, deterministico |
| Linealidad (IIP3) | > 20 dBm | SKY13330: 35 dBm | Previene intermodulacion |
El tiempo de asentamiento del conmutador es critico. Con un slot de conmutacion de 1 us y la muestra IQ tomada en el centro del slot (500 ns despues de conmutar), el conmutador debe asentarse en 200-300 ns, dejando 200 ns de sennal limpia para muestreo. El SKY13330 (Skyworks) y PE42420 (pSemi) ambos especifican 150-200 ns de tiempo de asentamiento, lo cual es adecuado.
### 4.2 Muestreo IQ en SoCs BLE
El muestreo IQ es realizado por el periferico 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 via PPI | Ecosistema DF mas maduro |
| nRF5340 | 1-2 MHz (DFE) | Hasta 4096 bytes | Si (hardware) | GPIO via DPPI | Dual-core, mas buffer |
| CC2640R2 | 8 MHz (custom) | Limitado | No (requiere patch) | GPIO manual | DF nativo no soportado |
| CC2642/CC2652 | 1 MHz | Configurable | Si (hardware) | GPIO via IOMUX | BLE 5.1 nativo |
| ESP32-C6/H2 | Configurable | Configurable | Si (hardware) | GPIO via matriz GPIO | Reciente, menos maduro |
| BGM240/BG24 | 1 MHz | Configurable | Si (hardware) | GPIO via PRS | Silabs Gecko |
La serie Nordic nRF52/53 tiene la implementacion AoA mas madura. El Motor de Busqueda de Direccion (DFE) es un periferico de hardware que:
1. Detecta presencia de CTE desde la cabecera PDU
2. Controla el GPIO del conmutador RF via PPI (Interconexion 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 interrupcion cuando el muestreo esta completo
### 4.3 Configuracion del Patron de Conmutacion
El patron de conmutacion de antena define cual antena esta activa durante cada slot de conmutacion. Para un arreglo de 4 elementos:
| Slot de Conmutacion | 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 medicion |
| Slot 2 | Antena 2 | 0x04 | Segunda antena de medicion |
| Slot 3 | Antena 3 | 0x08 | Tercera antena de medicion |
| Slot 4 | Antena 0 | 0x01 | Retorno a referencia (opcional) |
| Slot 5-8 | Antenas 1-3 repiten | 0x02, 0x04, 0x08 | Sobremuestreo (opcional) |
El patron se carga en un buffer en RAM, y el sistema PPI del periferico RADIO toggles los pines GPIO a intervalos de 1 us, sincronizados con la recepcion del CTE. Esta conmutacion impulsada por hardware elimina el jitter que seria imposible de evitar con toggling de GPIO controlado por software.
## 5. Algoritmos de Estimacion de Angulo
Una vez recogidas las muestras IQ, el angulo de llegada debe calcularse. La eleccion del algoritmo determina la resolucion angular, el coste computacional y la robustez al ruido.
### 5.1 Metodo de Diferencia de Fase (Basico)
El enfoque mas simple calcula la diferencia de fase entre elementos de antena adyacentes y la convierte en un angulo:
«`python
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)
«`
| Parametro | Valor | Notas |
|———–|——-|——-|
| Resolucion 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 reflexion corrompe la fase |
| FoV ambiguo | mas/menos 90 grados | ULA estandar |
| SNR requerida | > 5 dB | Por debajo, la fase se envuelve |
El metodo de diferencia de fase es adecuado para prueba de concepto y aplicaciones de baja precision (posicionamiento a nivel de habitacion). Para sistemas en produccion que requieren precision subgrado, se necesitan algoritmos mas sofisticados.
### 5.2 MUSIC (Multiple Signal Classification)
MUSIC es un algoritmo basado en subespacio que separa el subespacio de sennal del subespacio de ruido usando descomposicion en autovalores de la matriz de covarianza. Puede resolver multiples sennales simultaneas (reflexiones multicamino) y lograr superresolucion:
«`python
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
«`
| Parametro | Valor | Notas |
|———–|——-|——-|
| Resolucion angular | 3-5 grados (4 elem, 10 dB SNR) | Superresolucion |
| Resolucion (8 elem) | 1-2 grados | Cerca del limite Cramer-Rao |
| Computacion | O(N^3) para descomposicion | 1-5 ms en Cortex-M4F |
| Manejo de multicamino | Resuelve hasta N-1 sennales | Si K < N |
| Snapshots requeridos | >= N (tipicamente 8-16) | Necesita multiples recepciones CTE |
| Memoria | Covarianza N x N (64 bytes para N=4) | Trivial |
La ventaja clave de MUSIC es la resolucion de multicamino: si el camino directo y una reflexion llegan de angulos diferentes, MUSIC puede identificar ambos como picos separados en el pseudoespectro. El camino directo es tipicamente el pico con mayor potencia, aunque esta suposicion puede fallar en entornos NLOS (sin linea de vista).
### 5.3 ESPRIT (Estimacion de Parametros de Sennal via Invariancia Rotacional)
ESPRIT evita la busqueda espectral de MUSIC explotando la estructura de invariancia de desplazamiento del arreglo. Es computacionalmente mas ligero que MUSIC pero requiere un arreglo uniforme:
| Parametro | MUSIC | ESPRIT |
|———–|——-|——–|
| Tipo de arreglo | Cualquiera (ULA, UCA, planar) | ULA o subarreglos emparejados solo |
| Busqueda 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 |
| Resolucion angular | Equivalente | Equivalente |
| Resolucion multicamino | Si (busqueda de pico) | Si (mapeo de autovalores) |
| Complejidad de implementacion | Moderada | Moderada |
Para BLE AoA con 4-8 antenas, tanto MUSIC como ESPRIT se ejecutan en pocos milisegundos en un Cortex-M4F. La eleccion entre ellos suele estar dictada por la geometria 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 precision angular posible dado el SNR, numero de antenas y geometria del arreglo:
«`
var(theta) >= lambda^2 / (8 * pi^2 * d^2 * N * (N-1) * SNR * K)
«`
donde N = numero de antenas, K = numero de snapshots, d = espaciamiento de elementos (metros), SNR = lineal (no dB).
| N (antenas) | K (snapshots) | SNR (dB) | CRLB (grados) | Practico (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 «Practico» tiene en cuenta impedimentos del mundo real (ruido de fase, acoplamiento mutuo, desbalance de canal) que tipicamente duplican la CRLB. Aun asi, un arreglo de 8 elementos con 8 snapshots a 20 dB SNR puede lograr teoricamente precision subgrado.
## 6. Mitigacion de Multicamino y NLOS
Los entornos interiores son ricos en multicamino. Una sennal de 2.4 GHz se refleja en estanterias metalicas, paredes de hormigon y cuerpos humanos, creando multiples caminos desde el tag hasta el localizador. Cada camino llega a un angulo 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 |
| Almacen (LOS parcial) | -60 dBm | -63 dBm | 10-25 grados | 3-8 grados |
| Fabrica (NLOS) | -75 dBm | -70 dBm | 30+ grados | 10-20 grados |
| Pasillo (guiaondas) | -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 reflexion mas fuerte. MUSIC a veces puede resolver ambos caminos, pero identificar que pico es el camino directo requiere informacion adicional:
– **Gating RSSI**: El camino directo deberia tener el RSSI mas alto (no siempre cierto en NLOS)
– **Verificacion de consistencia**: El angulo del camino directo deberia ser consistente a traves de multiples recepciones CTE
– **Fusion multi-localizador**: Si 3+ localizadores ven el tag, el camino directo es aquel cuyos angulos producen una triangulacion consistente
– **Filtrado de elevacion**: Para localizadores de techo, el camino directo deberia tener un angulo de elevacion que coincida con la altura de techo conocida
### 6.2 Suavizado Espacial
El suavizado espacial es una tecnica de preprocesamiento que descorrelaciona sennales multicamino, permitiendo a MUSIC resolver multicamino coherente (que MUSIC estandar no puede):
| Tecnica | Tipo de Arreglo | Descorrelacion | Perdida 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 tamano 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 sennal multicamino, pero la resolucion 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 estimacion angular perfecta, la salida es ruidosa en el tiempo. Un filtro de Kalman o alfa-beta suaviza las estimaciones de angulo:
| Filtro | Estado | Ajuste | Latencia | Suavidad |
|——–|——-|——–|———|————|
| Media movil | 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 medicion | <0.1 s | Mejor |
| Filtro de particulas | theta, x, y | 100-500 particulas | 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 optimo practico: se ejecuta en microsegundos, anade latencia minima y proporciona suavizado adecuado para la mayoria de aplicaciones interiores.
## 7. Arquitectura del Sistema y Despliegue
### 7.1 Arquitectura de Hardware del Localizador
Un localizador AoA completo consta de:
| Componente | Funcion | Parte Tipica | Coste |
|-----------|----------|---------------|------|
| SoC BLE | Radio, muestreo IQ, computo de angulo | 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 computo de angulo | Ninguno (SoC suficiente) | $0 |
| Ethernet/Wi-Fi | Backhaul al servidor de posicionamiento | W5500 o ESP32 | $2-3 |
| Fuente de alimentacion | 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 Colocacion de Localizadores
| Colocacion | Altura | Espaciado | Cobertura | Precision | 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 |
| Bahia alta | 8-12 m | 15-25 m | 300-500 m2 | 2-5 m | Almacen, fabrica |
| 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 estandar para posicionamiento interior submetrico. El angulo de elevacion desde el localizador hasta el tag restringe la distancia:
| Angulo de elevacion | 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 elevacion, la estimacion de distancia se vuelve poco fiable (pequenos errores de angulo causan grandes errores de distancia). Por esto el espaciado de localizadores debe elegirse de modo que el tag siempre este dentro del cono de elevacion 20-80 grados de al menos dos localizadores.
### 7.3 Servidor de Posicionamiento
El servidor de posicionamiento recibe mediciones de angulo de multiples localizadores y computa la posicion 2D o 3D:
| Metodo | Min localizadores | Computacion | Precision | Notas |
|--------|-------------|-------------|----------|-------|
| Triangulacion (2 AoA) | 2 | Interseccion de 2 lineas de rumbo | 0.5-2 m | Sensible a error angular |
| Minimos cuadrados (N AoA) | 3+ | Minimizar residual de N rumbos | 0.3-1 m | Robusto, estandar |
| 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 metodo de minimos cuadrados con 3+ localizadores es el estandar de produccion. La estimacion de posicion minimiza:
```
minimize sum_i | theta_measured_i - theta_predicted_i(position) |^2
```
Este es un problema de minimos cuadrados no lineal resuelto por iteracion Gauss-Newton o Levenberg-Marquardt. Con 3-4 localizadores y precision angular de 5-10 grados, la precision de posicion resultante es tipicamente 0.5-1.0 m en 2D.
## 8. Calibracion y Caracterizacion
### 8.1 Calibracion de Fase
Cada sistema AoA requiere calibracion de fase por antena para compensar variaciones de fabricacion en el conmutador RF, trazas PCB y elementos de antena. El procedimiento de calibracion:
1. **Tag de referencia**: Colocar un tag transmisor CTE en un angulo conocido (0 grados, direccion 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 desviacion es el offset de calibracion.
4. **Almacenar tabla de calibracion**: Offset de fase por antena, almacenado en flash
| Fuente de calibracion | Magnitud de error de fase | Frecuencia | Metodo de calibracion |
|-------------------|----------------------|-----------|-------------------|
| Asimetria del conmutador RF | 5-20 grados | Una vez (fabrica) | Offset de fase por antena |
| Desajuste de traza PCB | 2-10 grados | Una vez (fabrica) | Offset de fase por antena |
| Centro de fase de antena | 1-5 grados | Una vez (fabrica) | LUT dependiente de angulo |
| Deriva de temperatura | 1-3 grados | Por bin de temperatura | LUT compensada por temperatura |
| Frecuencia (canal) | 2-5 grados | Por canal | Calibracion por canal |
Sin calibracion, los offsets de fase en bruto pueden causar 10-20 grados de error angular sistematico. Despues de la calibracion, el error residual es tipicamente 1-3 grados.
### 8.2 Caracterizacion en Camara Anechoica
La caracterizacion completa requiere una camara anechoica con plataforma rotatoria:
| Medicion | Equipo | Duracion | Salida |
|-------------|-----------|----------|--------|
| Patron de antena (por elemento) | VNA + camara | 2-4 horas | Ganancia vs angulo por elemento |
| Patron de fase (por elemento) | VNA + camara | 2-4 horas | Fase vs angulo por elemento |
| Acoplamiento mutuo (parametros-S) | VNA | 30 minutos | Matriz S21 (N x N) |
| Precision AoA extremo a extremo | Tag CTE + rotador de camara | 4-8 horas | Medido vs angulo verdadero, 360 grados completos |
| Barrido de temperatura | Camara termica + tag | 2-4 horas | Offset de fase vs temperatura |
El barrido de precision AoA extremo a extremo es la medicion mas 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 angulo, se recogen 100 recepciones CTE y se registra el angulo estimado mediano:
| Angulo verdadero | Mediano estimado (sin calibrar) | Mediano estimado (calibrado) | Desv estandar |
|------------|-------------------------------|-------------------------------|---------|
| -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 sistematico de 6-13 grados, que la tabla de calibracion reduce a 0-1 grados. La desviacion estandar aumenta a angulos mayores porque la apertura efectiva proyectada hacia la fuente disminuye.
## 9. Consumo de Energia en el Lado del Tag
El tag (beacon) solo necesita anadir CTE a sus paquetes advertising. El coste de potencia incremental:
| Modo | Intervalo advertising | Corriente sin CTE | Con CTE (16 us) | Delta | Impacto bateria (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 anade solo 16-160 us a cada evento de advertising, lo cual es despreciable comparado con los 3-4 ms de duracion total del evento (preambulo + payload + CTE + arranque TX). Incluso a 100 Hz de advertising con 160 us de CTE, la energia adicional es menos del 5% de la energia TX total. Esto significa que los tags habilitados para AoA tienen esencialmente la misma vida de bateria que los beacons BLE estandar.
### Configuracion de CTE en el Tag
Habilitar CTE en el paquete advertising en un tag basado en nRF52:
```c
// 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 modificacion del firmware del tag es minima: una llamada API para habilitar CTE en el conjunto de advertising. Sin conmutador de antena, sin muestreo IQ, sin computo de angulo. Por eso AoA es atractivo para tags de activos alimentados por bateria.
## 10. Pitfalls Comunes y Depuracion
| Problema | Sintoma | Causa Raiz | Solucion |
|-------|---------|------------|-----|
| Offset de angulo constante | Todos los angulos desplazados 5-15 grados | Calibracion de fase no aplicada | Ejecutar procedimiento de calibracion, almacenar offsets |
| Envoltura de angulo | El angulo salta de +85 a -85 grados | Ambiguedad ULA en endfire | Limitar FoV a mas/menos 75 grados, o usar UCA |
| Angulo ruidoso (std > 10 grados) | Dispersion aleatoria alrededor del angulo verdadero | SNR bajo o multicamino | Aumentar longitud CTE, anadir suavizado espacial |
| Angulo 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 temporizacion | Aumentar tamano de buffer DFE, verificar prioridades de interrupcion |
| Precision de elevacion pobre | Acimut OK, elevacion desviada 20+ grados | Arreglo planar no calibrado para elevacion | Calibracion 2D completa en camara anechoica |
| Fallo NLOS | El angulo apunta a la pared en lugar del tag | Reflexion fuerte dominando camino directo | Anadir fusion multi-localizador, usar deteccion NLOS |
| Deriva de temperatura | Precision se degrada tras 2+ horas de operacion | Desplazamiento de fase del conmutador RF vs temperatura | Tabla de calibracion compensada por temperatura |
| Error dependiente de canal | La precision varia entre canales advertising | Offset de fase difiere por frecuencia | Tabla de calibracion por canal |
| Sensibilidad a orientacion del tag | El angulo cambia cuando el tag rota | Antena del tag no omnidireccional | Usar tag con antena omnidireccional, o anadir sensor de orientacion |
### Lista de Verificacion de Depuracion
1. Verificar que CTE esta 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 esta poblado (valores no nulos, variados)
4. Validar que la tabla de calibracion de fase esta cargada y aplicada
5. Probar en camara anechoica (o area exterior abierta) para eliminar multicamino
6. Verificar salida del algoritmo de estimacion 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. Comparacion de Implementacion: Nordic vs TI vs Silicon Labs
| Caracteristica | Nordic nRF52833/5340 | TI CC2642/CC2652 | Silicon Labs BG24 |
|———|———————-|——————-|——————-|
| Spec BLE | 5.1+ | 5.2+ | 5.2+ |
| Hardware DFE/DF | Si (periferico DFE) | Si (DMA de radio) | Si (RAC + BUFC) |
| Max tasa de muestra IQ | 2 MHz | 1 MHz | 1 MHz |
| Tamano 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 patron de conmutacion | Patron GPIO por slot | Patron por slot | Patron por slot |
| CTE en advertising | Si | Si | Si |
| CTE en canal de datos | Si | Si | Si |
| Diseno de referencia AoA | nRF AoA locator | CC26x2 AoA antenna | xGM24 AoA kit |
| Soporte de comunidad | Extenso | Moderado | Creciente |
| SDK de estimacion de angulo | Nordic AoA library | TI RTLS toolbox | Silabs AoA plugin |
Nordic tiene el ecosistema mas maduro con disenos de referencia, ejemplos SDK y soporte de comunidad. El nRF52833 es el SoC de facto para localizadores AoA de produccion debido a su hardware DFE probado y extensa documentacion.
## 12. Lista de Verificacion de Diseno para Sistemas AoA de Produccion
**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 medicion parametros-S VNA)
- [ ] Estabilidad de centro de fase < mas/menos 2 mm (usar antenas de parche, no de chip)
- [ ] Plano de tierra se extiende al menos lambda/4 mas alla del elemento mas exterior
**Frontend RF:**
- [ ] Tiempo de asentamiento del conmutador RF < 200 ns (verificar con osciloscopio)
- [ ] Perdida de insercion del conmutador < 1 dB (presupuesto de margen de enlace)
- [ ] Aislamiento del conmutador > 20 dB (prevenir diafonia entre elementos)
– [ ] Control GPIO del conmutador enrutado con longitudes de traza coincidentes (< 5 mm skew)
**Firmware:**
- [ ] Periferico DFE/DF configurado para slots de conmutacion de 1 us (modo AoA)
- [ ] Tamano de buffer IQ >= 2 x (num_antenas + 8) muestras (doble buffer)
– [ ] Patron de conmutacion cargado en RAM del periferico RADIO
– [ ] Tabla de calibracion de fase almacenada en flash y aplicada antes de estimacion de angulo
– [ ] Algoritmo de estimacion de angulo seleccionado (diff-fase para PoC, MUSIC para produccion)
– [ ] Filtro temporal (alfa-beta o Kalman) aplicado a la salida de angulo
**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 actualizacion de posicionamiento
– [ ] Antena del tag es omnidireccional (verificar patron en camara)
– [ ] Vida de bateria calculada con overhead de CTE incluido
**Despliegue:**
– [ ] Espaciado de localizadores elegido para cobertura de cono de elevacion 20-80 grados
– [ ] Minimo 3 localizadores con LOS a cada area de cobertura
– [ ] Servidor de posicionamiento ejecutando minimos cuadrados o fusion Kalman
– [ ] Deteccion y rechazo NLOS implementados
– [ ] Estudio de sitio realizado con ground truth (posiciones medidas)
– [ ] Especificacion de precision verificada en entorno objetivo (no solo camara)
La deteccion de direccion AoA transforma el posicionamiento BLE de un circulo RSSI de 3-5 metros en una interseccion de rumbos submetricos. La tecnologia es madura — SoCs BLE 5.1 con DFE de hardware, disenos de antena de referencia y bibliotecas de estimacion de angulo de codigo abierto estan todos disponibles. El desafio de ingenieria no esta en el procesamiento de sennales sino en la capa fisica: diseno del arreglo de antenas, integridad del conmutador RF, calibracion de fase y mitigacion de multicamino. Haga eso bien, y su sistema de Bluetooth Beacon entrega precision submetrica. Hagalo mal, y tiene un costoso sensor RSSI con antenas extra.