Quand un Bluetooth Beacon emet dans un entrepot, la mesure basee sur RSSI indique que le tag se trouve « quelque part dans un rayon de 3 a 5 metres » — un cercle d’incertitude inutilisable pour la localisation au niveau des allees. BLE 5.1 a introduit la detection de direction par Angle d’Arrivee (AoA), qui remplace le cercle RSSI par une ligne de releve precise a quelques degres pres, permettant un positionnement sub-metrique lorsque deux antennes de localisation ou plus sont utilisees. Cet article couvre toute la chaine de signal AoA — de la structure d’onde CTE a la geometrie du reseau d’antennes, l’echantillonnage IQ et les algorithmes d’estimation d’angle — avec les parametres d’ingenierie, les compromis et les procedures de calibration qui determinent si votre systeme atteint une precision de 2 degres ou un bruit de 20 degres.
## 1. Detection de Direction BLE 5.1 : AoA vs AoD
BLE 5.1 definit deux modes de detection de direction. Les deux exploitent une Constant Tone Extension (CTE) de 72 a 160 bits ajoutee apres le payload du paquet, mais different dans qui commute les antennes et qui echantillonne les donnees IQ :
| Parametre | Angle d’Arrivee (AoA) | Angle de Depart (AoD) |
|———–|————————|————————–|
| Emplacement du reseau | Recepteur (localisateur) | Emetteur (beacon/tag) |
| Commutation d’antenne | Recepteur commute pendant CTE | Emetteur commute pendant CTE |
| Echantillonnage IQ | Recepteur echantillonne | Recepteur echantillonne (antenne unique) |
| Cas d’usage typique | Suivi d’actifs, navigation interieure | Recherche d’objets, direction de proximite |
| Complexite du beacon | Simple (antenne unique, ajoute CTE) | Complexe (necessite reseau + commutateur) |
| Complexite du localisateur | Complexe (reseau + commutateur + echantillonneur) | Simple (antenne unique) |
| CTE dans PDU advertising | Oui (ADV_EXT_IND) | Non |
| CTE dans PDU canal de donnees | Oui | Oui |
| Firmware du tag | Ajouter CTEConfig au Tx | Controler GPIO du commutateur RF pendant Tx |
Pour le suivi d’actifs avec des tags BLE alimentes par batterie, AoA est l’architecture dominante : le tag reste simple (antenne unique, active juste le CTE dans le paquet advertising), et toute la complexite — reseau d’antennes, commutateur RF, echantillonnage IQ — reside dans le localisateur alimente par secteur. Cet article se concentre sur le cote recepteur de l’AoA, ou se trouvent les decisions d’ingenierie.
### Placement du CTE dans la Structure du Paquet
Le CTE est transmis apres le CRC d’un paquet BLE standard, sur le meme canal RF, sans appliquer de blanchiment :
« `
| Preambule | Adresse d’Acces | En-tete PDU + Payload | CRC | CTE |
^
72-160 bits, non blanchi
« `
L’en-tete PDU contient un champ CPType de 2 bits (CTE Info) dans l’en-tete etendu d’ADV_EXT_IND ou dans les PDU de canal de donnees, qui indique au recepteur : (a) CTE present, (b) type de CTE (AoA = commutation 1 us, AoD = slot 2 us), (c) longueur CTE (1-20 unites de 8 us), (d) longueur du motif de commutation d’antenne.
Le CTE lui-meme est une sinusoide pure a la frequence porteuse RF (pas de modulation, pas de blanchiment). Le recepteur la convertit vers le bas et echantillonne les paires I/Q a un rythme connu, produisant une progression de phase a travers le reseau d’antennes qui code l’angle d’arrivee.
## 2. Structure de la Constant Tone Extension (CTE)
Le CTE a une structure interne fixe independamment de sa longueur totale :
| Segment | Duree | Contenu | Objectif |
|———|———-|———|———|
| Intervalle de Garde (GI) | 4 us | Identique au dernier bit CTE | Permettre la stabilisation AGC, pas d’echantillonnage |
| Periode de Reference | 8 us | Antenne de reference unique | Etablir la reference de phase |
| Slot de Commutation 1 | 1 us (AoA) ou 2 us (AoD) | Antenne 1 | Echantillon IQ preleve |
| Slot de Commutation 2 | 1 us (AoA) ou 2 us (AoD) | Antenne 2 | Echantillon IQ preleve |
| … | … | … | … |
| Slot de Commutation N | 1 us (AoA) ou 2 us (AoD) | Antenne N | Echantillon IQ preleve |
En mode AoA, chaque slot de commutation dure 1 us. Avec une periode de reference de 8 us et un intervalle de garde de 4 us, un CTE de longueur maximale (20 unites x 8 us = 160 us) produit :
– Garde : 4 us
– Reference : 8 us (1 echantillon IQ par us = 8 echantillons de reference)
– Commutation : 148 us / 1 us = 148 slots de commutation
En pratique, la plupart des conceptions utilisent 4 a 8 elements d’antenne, donc seulement 4-8 slots de commutation sont necessaires par CTE. Les slots restants sont inutilises ou utilises pour le sur-echantillonnage. Une configuration typique :
| Config | Longueur CTE | Antennes | Echantillons/Slot | Total Paires IQ | Taux de Mise a Jour |
|——–|———–|———-|————–|—————-|————-|
| Minimale | 2 unites (16 us) | 4 | 1 | 4 + 8 ref | ~10 Hz |
| Standard | 4 unites (32 us) | 4 | 1 | 4 + 8 ref | ~10 Hz |
| Etendue | 8 unites (64 us) | 8 | 1 | 8 + 8 ref | ~5 Hz |
| Sur-echantillonnee | 16 unites (128 us) | 8 | 4 | 32 + 8 ref | ~2 Hz |
Le compromis est simple : un CTE plus long donne plus d’echantillons et une meilleure resolution angulaire, mais consomme plus de temps d’emission et reduit le taux d’advertising. Sur les trois canaux d’advertising primaires de BLE (37, 38, 39), un CTE de 160 us ajoute environ 10-15% au temps d’emission total du paquet, ce qui est acceptable.
### Frequence et Reference de Phase du CTE
Le CTE est transmis a la frequence centrale du canal RF (par ex., 2402 MHz pour le canal 37). Comme il n’y a pas de modulation, la seule variation de phase a travers le reseau d’antennes provient de la difference de chemin spatial. Pour un signal arrivant a un angle theta par rapport a l’axe principal du reseau, la difference de phase entre deux antennes adjacentes separees par une distance d est :
« `
phase_diff = (2 * pi * d / lambda) * sin(theta)
« `
ou lambda = c / f = 3e8 / 2402e6 = 124,9 mm a 2402 MHz.
Pour l’espacement standard de demi-longueur d’onde (d = lambda/2 = 62,5 mm), cela se simplifie en :
« `
phase_diff = pi * sin(theta)
« `
Cela signifie que le champ de vision non ambigu maximal est de plus/moins 90 degres (un FoV total de 180 degres), avec repliement de phase au-dela de plus/moins 90 degres. Pour une couverture plus large, on utilise des reseaux avec un espacement inferieur a lambda/2 ou plusieurs sous-reseaux.
## 3. Conception du Reseau d’Antennes
Le reseau d’antennes est l’element materiel le plus critique dans un systeme AoA. Sa geometrie determine directement la resolution angulaire, le champ de vision et la susceptibilite aux trajets multiples.
### 3.1 Reseau Lineaire
Un Reseau Lineaire Uniforme (ULA) est la configuration la plus simple et la plus courante pour BLE AoA :
| Parametre | Valeur | Notes |
|———–|——-|——-|
| Nombre d’elements | 4-8 | Plus d’elements = meilleure resolution |
| Espacement des elements | lambda/2 (62,5 mm) | Standard pour FoV non ambigu |
| Longueur du reseau (4 elem) | 187,5 mm | Convient au PCB du localisateur |
| Longueur du reseau (8 elem) | 437,5 mm | Peut necessiter un reseau externe |
| Resolution angulaire (4 elem) | ~15 degres | A 10 dB SNR |
| Resolution angulaire (8 elem) | ~8 degres | A 10 dB SNR |
| Champ de vision | plus/moins 90 degres | 180 degres au total |
| Ambiguite | Ambiguite avant-arriere | Signal de +30 et -30 degres identique |
L’ambiguite avant-arriere est la limitation fondamentale de l’ULA : un signal arrivant de +30 degres produit la meme progression de phase qu’un signal de -30 degres (image miroir). Cela est resolu soit (a) en montant le reseau contre un mur ou un reflecteur RF de sorte qu’un seul hemisphere soit visible, ou (b) en utilisant un reseau 2D.
### 3.2 Reseau Planaire (2D)
Pour l’estimation angulaire 2D complete (azimut + elevation), un reseau planaire est necessaire. Configurations courantes :
| Type | Geometrie | Elements | FoV Azimut | FoV Elevation | Complexite |
|——|———-|———-|————-|—————|————|
| UCA carre | Grille N x N | 4, 9, 16 | 360 degres | ~60 degres | Moyenne |
| UCA circulaire | Anneau | 4-8 | 360 degres | ~60 degres | Moyenne |
| En L | Deux ULA partageant un coin | 2N-1 | 360 degres | 360 degres | Faible |
| Triangulaire | 3 elements a 120 degres | 3 | 360 degres | Limitee | Faible |
Le Reseau Circulaire Uniforme (UCA) est populaire pour les localisateurs montes au plafond car il offre une couverture azimutale de 360 degres sans ambiguite avant-arriere :
« `
Positions d’antenne (UCA 8 elements, rayon r = lambda/2) :
x_i = r * cos(2 * pi * i / 8)
y_i = r * sin(2 * pi * i / 8)
« `
Pour un localisateur monte au plafond, l’azimut (theta) donne le releve de boussole vers le tag, et l’elevation (phi) donne l’angle sous l’horizontale, a partir duquel la distance peut etre estimee connaissant la hauteur du plafond :
« `
distance = ceiling_height / tan(phi)
« `
### 3.3 Selection de l’Element d’Antenne
Les antennes patch sont le choix standard pour les reseaux AoA car elles ont un diagramme de rayonnement directif (gain vers l’hemisphere d’interet) et un facteur de forme compact :
| Type d’Antenne | Taille (a 2,4 GHz) | Gain | Diagramme | Adequation |
|————-|——————-|——|———|————-|
| Patch PCB | 25 x 25 mm | 6-7 dBi | Hemispherique | Excellent (compact, directif) |
| Chip ceramique | 5 x 5 mm | 2-4 dBi | Broadside | Bon (compact, moins de gain) |
| Trace PCB (IFA) | 15 x 5 mm | 2-3 dBi | Broadside | Moyen (tendance omnidirectionnelle) |
| Dipole (externe) | 30 mm | 2,15 dBi | Toroidal | Mauvais (problemes de lobe arriere) |
| Helical | 15 x 8 mm | 3-5 dBi | Hemispherique | Bon mais haut |
Parametre d’antenne cle pour AoA : stabilite du centre de phase. Le centre de phase de l’antenne (le point d’emission apparent) ne doit pas se deplacer lorsque l’angle d’arrivee change. Les antennes patch PCB ont une stabilite de centre de phase de plus/moins 1-2 mm, ce qui se traduit par plus/moins 1-3 degres d’erreur angulaire a 2,4 GHz. Les antennes chip ceramique bon marche peuvent avoir une derivation du centre de phase de plus/moins 5 mm (erreur de plus/moins 7 degres), les rendant inadaptees a l’AoA haute precision.
### 3.4 Couplage Mutuel et Espacement des Elements
Lorsque les elements d’antenne sont places proches (moins de lambda), le couplage mutuel fait que le diagramme de rayonnement de chaque element est deforme par ses voisins. Le coefficient de couplage S21 entre antennes patch adjacentes a un espacement lambda/2 est generalement de -15 a -20 dB. C’est gerable mais non negligeable :
| Espacement | S21 (couplage) | Deformation du diagramme | Contribution d’erreur angulaire |
|———|—————-|——————-|————————|
| lambda/4 (31 mm) | -8 a -12 dB | Severe | 5-10 degres |
| lambda/2 (62,5 mm) | -15 a -20 dB | Moyenne | 1-3 degres |
| lambda (125 mm) | -25 a -30 dB | Minimale | <1 degre |
| 3lambda/4 (94 mm) | -20 a -25 dB | Faible | <1 degre |
Les strategies de mitigation incluent : (a) ajouter des decoupes de plan de masse entre les elements, (b) utiliser des Defected Ground Structures (DGS), (c) des structures Electromagnetic Bandgap (EBG) entre les elements, ou (d) augmenter simplement l'espacement a 3lambda/4 et accepter le FoV non ambigu plus etroit (plus/moins 42 degres au lieu de plus/moins 90 degres).
## 4. Commutateur RF et Frontend d'Echantillonnage
### 4.1 Exigences du Commutateur d'Antenne
Le recepteur AoA doit commuter entre les elements d'antenne pendant chaque slot de commutation de 1 us. Le commutateur RF est le composant critique :
| Parametre | Exigence | Composant Typique | Notes |
|-----------|-------------|---------------|-------|
| Temps de commutation | < 200 ns | SKY13330, HMC253, PE42420 | Doit se stabiliser avant echantillon IQ |
| Perte d'insertion | < 1 dB | SKY13330 : 0,7 dB | Affecte la sensibilite |
| Isolation (off) | > 20 dB | SKY13330 : 25 dB | Empeche la diaphonie |
| Nombre de voies | 4-8 SPxT | SP4T, SP8T | Correspond a la taille du reseau |
| Frequence | 2,4 GHz ISM | Tous les composants listes | Standard |
| Interface de controle | GPIO (3-bit pour SP8T) | GPIO MCU direct | Rapide, deterministe |
| Linearite (IIP3) | > 20 dBm | SKY13330 : 35 dBm | Empeche l’intermodulation |
Le temps de stabilisation du commutateur est critique. Avec un slot de commutation de 1 us et l’echantillon IQ preleve au centre du slot (500 ns apres commutation), le commutateur doit se stabiliser en 200-300 ns, laissant 200 ns de signal propre pour l’echantillonnage. Le SKY13330 (Skyworks) et le PE42420 (pSemi) specifient tous deux un temps de stabilisation de 150-200 ns, ce qui est adequat.
### 4.2 Echantillonnage IQ dans les SoCs BLE
L’echantillonnage IQ est realise par le peripherique radio du SoC BLE, pas par un ADC externe. Le demodulateur I/Q interne de la radio fournit l’acces aux echantillons I/Q en bande de base :
| SoC | Taux Echantillon IQ | Buffer Echantillons | Support CTE | Controle Commutateur | Notes |
|—–|—————|—————|————-|———————-|——-|
| nRF52811/52833/52840 | 1-2 MHz (DFE) | 128-1024 octets | Oui (materiel) | GPIO via PPI | Ecosysteme DF le plus mature |
| nRF5340 | 1-2 MHz (DFE) | Jusqu’a 4096 octets | Oui (materiel) | GPIO via DPPI | Dual-core, plus de buffer |
| CC2640R2 | 8 MHz (custom) | Limite | Non (requiert patch) | GPIO manuel | DF natif non supporte |
| CC2642/CC2652 | 1 MHz | Configurable | Oui (materiel) | GPIO via IOMUX | BLE 5.1 natif |
| ESP32-C6/H2 | Configurable | Configurable | Oui (materiel) | GPIO via matrice GPIO | Recent, moins mature |
| BGM240/BG24 | 1 MHz | Configurable | Oui (materiel) | GPIO via PRS | Silabs Gecko |
La serie Nordic nRF52/53 a l’implementation AoA la plus mature. Le Direction Finding Engine (DFE) est un peripherique materiel qui :
1. Detecte la presence du CTE depuis l’en-tete PDU
2. Controle le GPIO du commutateur RF via PPI (Programmable Peripheral Interconnect) a des intervalles precis de 1 us
3. Echantillonne I/Q jusqu’a 2 MHz (configurable, defaut 1 MHz = 1 echantillon/us)
4. Stocke les echantillons dans un buffer RAM dedie
5. Genere une interruption a la fin de l’echantillonnage
### 4.3 Configuration du Motif de Commutation
Le motif de commutation d’antenne definit quelle antenne est active pendant chaque slot de commutation. Pour un reseau de 4 elements :
| Slot de Commutation | Antenne Active | Valeur GPIO SwitchPattern | Notes |
|————-|—————|————————-|——-|
| Reference (0-7) | Antenne 0 (reference) | 0x01 | Meme antenne pour tous les echantillons de reference |
| Slot 1 | Antenne 1 | 0x02 | Premiere antenne de mesure |
| Slot 2 | Antenne 2 | 0x04 | Deuxieme antenne de mesure |
| Slot 3 | Antenne 3 | 0x08 | Troisieme antenne de mesure |
| Slot 4 | Antenne 0 | 0x01 | Retour a la reference (optionnel) |
| Slot 5-8 | Antennes 1-3 repetent | 0x02, 0x04, 0x08 | Sur-echantillonnage (optionnel) |
Le motif est charge dans un buffer en RAM, et le systeme PPI du peripherique RADIO bascule les broches GPIO a des intervalles de 1 us, synchronises avec la reception du CTE. Cette commutation pilotee par le materiel elimine la gigue qui serait impossible a eviter avec une bascule GPIO controlee par logiciel.
## 5. Algorithmes d’Estimation d’Angle
Une fois les echantillons IQ collectes, l’angle d’arrivee doit etre calcule. Le choix de l’algorithme determine la resolution angulaire, le cout computationnel et la robustesse au bruit.
### 5.1 Methode de Difference de Phase (Basique)
L’approche la plus simple calcule la difference de phase entre les elements d’antenne adjacents et la convertit en angle :
« `python
import numpy as np
# Echantillons IQ : 4 antennes, 1 echantillon chacune (des slots de commutation)
# iq[0] = reference, iq[1..3] = antenne 1..3
iq = np.array([complex(i, q) for i, q in iq_samples])
# Phase de chaque echantillon d’antenne
phases = np.angle(iq)
# Difference de phase entre elements adjacents
dphi = np.diff(phases)
# Convertir en angle (espacement demi-longueur d’onde)
# dphi = pi * sin(theta) => theta = arcsin(dphi / pi)
theta = np.arcsin(np.clip(dphi / np.pi, -1, 1))
# Moyenner sur les paires d’elements
theta_avg = np.mean(theta)
« `
| Parametre | Valeur | Notes |
|———–|——-|——-|
| Resolution angulaire | 10-15 degres (4 elem, 10 dB SNR) | Limitee par le bruit de phase |
| Calcul | O(N) | Trivial, s’execute en microsecondes |
| Robustesse aux trajets multiples | Mauvaise | Toute reflexion corrompt la phase |
| FoV non ambigu | plus/moins 90 degres | ULA standard |
| SNR requis | > 5 dB | En dessous, la phase se replie |
La methode de difference de phase convient pour la preuve de concept et les applications de faible precision (positionnement au niveau piece). Pour les systemes de production necessitant une precision sub-degre, des algorithmes plus sophistiques sont necessaires.
### 5.2 MUSIC (Multiple Signal Classification)
MUSIC est un algorithme base sur les sous-espaces qui separe le sous-espace signal du sous-espace bruit en utilisant la decomposition en valeurs propres de la matrice de covariance. Il peut resoudre plusieurs signaux simultanes (reflexions multi-trajets) et atteindre une super-resolution :
« `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) complexe
# d : espacement des elements en longueurs d’onde (0.5 = lambda/2)
# 1. Calculer la matrice de covariance
R = np.cov(iq_matrix.T) # (N, N) hermitienne
# 2. Decomposition en valeurs propres
eigenvalues, eigenvectors = eigh(R)
# 3. Trier les valeurs propres (decroissant)
idx = np.argsort(eigenvalues)[::-1]
eigenvalues = eigenvalues[idx]
eigenvectors = eigenvectors[:, idx]
# 4. Sous-espace de bruit (N-K plus petits vecteurs propres)
K = num_signals
En = eigenvectors[:, K:] # (N, N-K)
# 5. Vecteur de steering pour l’angle de balayage 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))
# Pseudo-spectre MUSIC
spectrum[i] = 1.0 / np.abs(a.conj() @ En @ En.conj().T @ a)
# 6. Recherche de pic
peak_idx = np.argmax(spectrum)
return thetas[peak_idx], spectrum
« `
| Parametre | Valeur | Notes |
|———–|——-|——-|
| Resolution angulaire | 3-5 degres (4 elem, 10 dB SNR) | Super-resolution |
| Resolution (8 elem) | 1-2 degres | Pres de la borne Cramer-Rao |
| Calcul | O(N^3) pour decomposition | 1-5 ms sur Cortex-M4F |
| Gestion multi-trajets | Resout jusqu’a N-1 signaux | Si K < N |
| Snapshots requis | >= N (typiquement 8-16) | Necessite plusieurs receptions CTE |
| Memoire | Covariance N x N (64 octets pour N=4) | Trivial |
L’avantage cle de MUSIC est la resolution multi-trajets : si le chemin direct et une reflexion arrivent sous des angles differents, MUSIC peut identifier les deux comme des pics separes dans le pseudo-spectre. Le chemin direct est typiquement le pic avec la puissance la plus elevee, bien que cette hypothese puisse echouer dans les environnements NLOS (sans ligne de vue).
### 5.3 ESPRIT (Estimation of Signal Parameters via Rotational Invariance)
ESPRIT evite la recherche spectrale de MUSIC en exploitant la structure d’invariance de deplacement du reseau. Il est computationnellement plus leger que MUSIC mais necessite un reseau uniforme :
| Parametre | MUSIC | ESPRIT |
|———–|——-|——–|
| Type de reseau | Quelconque (ULA, UCA, planaire) | ULA ou sous-reseaux apparies uniquement |
| Recherche spectrale | Oui (180+ evaluations) | Non (forme fermee) |
| Calcul | O(N^3) + O(balayage x N) | O(N^3) |
| Latence (Cortex-M4F, N=4) | 2-5 ms | 1-2 ms |
| Resolution angulaire | Equivalent | Equivalent |
| Resolution multi-trajets | Oui (recherche de pic) | Oui (mapping de valeurs propres) |
| Complexite d’implementation | Moyenne | Moyenne |
Pour BLE AoA avec 4-8 antennes, MUSIC et ESPRIT s’executent tous deux en quelques millisecondes sur un Cortex-M4F. Le choix est generalement dicte par la geometrie du reseau : MUSIC pour UCA (localisateurs de plafond), ESPRIT pour ULA (localisateurs muraux).
### 5.4 Borne Inferieure de Cramer-Rao (CRLB)
La CRLB definit la meilleure precision angulaire possible compte tenu du SNR, du nombre d’antennes et de la geometrie du reseau :
« `
var(theta) >= lambda^2 / (8 * pi^2 * d^2 * N * (N-1) * SNR * K)
« `
ou N = nombre d’antennes, K = nombre de snapshots, d = espacement des elements (metres), SNR = lineaire (pas dB).
| N (antennes) | K (snapshots) | SNR (dB) | CRLB (degres) | Pratique (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 colonne « Pratique » tient compte des impairments du monde reel (bruit de phase, couplage mutuel, desequilibre de canal) qui doublent generalement la CRLB. Neanmoins, un reseau de 8 elements avec 8 snapshots a 20 dB SNR peut theoriquement atteindre une precision sub-degre.
## 6. Mitigation des Trajets Multiples et NLOS
Les environnements interieurs sont riches en trajets multiples. Un signal a 2,4 GHz se reflete sur les etageres metalliques, les murs en beton et les corps humains, creant plusieurs chemins du tag au localisateur. Chaque chemin arrive sous un angle different, et le recepteur voit leur somme vectorielle.
### 6.1 Impact des Trajets Multiples sur l’AoA
| Environnement | Puissance chemin direct | Puissance chemin reflechi | Erreur AoA (diff-phase) | Erreur AoA (MUSIC) |
|————|——————-|———————|———————-|——————-|
| Bureau ouvert (LOS) | -50 dBm | -65 dBm | 2-5 degres | 1-2 degres |
| Entrepot (LOS partiel) | -60 dBm | -63 dBm | 10-25 degres | 3-8 degres |
| Usine (NLOS) | -75 dBm | -70 dBm | 30+ degres | 10-20 degres |
| Couloir (guide d’onde) | -55 dBm | -57 dBm | 15-30 degres | 5-10 degres |
En conditions NLOS, le chemin direct peut etre 10-15 dB en dessous de la reflexion la plus forte. MUSIC peut parfois resoudre les deux chemins, mais identifier quel pic est le chemin direct necessite des informations supplementaires :
– **Gating RSSI** : Le chemin direct devrait avoir le RSSI le plus eleve (pas toujours vrai en NLOS)
– **Verification de coherence** : L’angle du chemin direct devrait etre coherent a travers plusieurs receptions CTE
– **Fusion multi-localisateurs** : Si 3+ localisateurs voient le tag, le chemin direct est celui dont les angles produisent une triangulation coherente
– **Filtrage d’elevation** : Pour les localisateurs de plafond, le chemin direct devrait avoir un angle d’elevation correspondant a la hauteur de plafond connue
### 6.2 Lissage Spatial
Le lissage spatial est une technique de pretraitement qui decorrele les signaux multi-trajets, permettant a MUSIC de resoudre les multi-trajets coherents (que MUSIC standard ne peut pas) :
| Technique | Type de Reseau | Decorrelation | Perte d’Ouverture | Complexite |
|———–|———–|—————|———————|————|
| Lissage vers l’avant | ULA | Oui | ~50% | Faible |
| Avant-arriere | ULA | Oui | ~50% | Faible |
| Lissage spatial (UCA) | UCA | Oui | ~40% | Moyenne |
| Lissage 2D | Planaire | Oui | ~50% | Moyenne |
Le lissage vers l’avant divise l’ULA de N elements en L sous-reseaux chevauchants de taille M = N – L + 1. Les matrices de covariance des sous-reseaux sont moyennees, ce qui decorrele les multi-trajets coherents au prix de la reduction de l’ouverture effective de N a M. Pour un reseau de 4 elements, des sous-reseaux de 2 elements (L=2, M=2) peuvent resoudre 1 signal multi-trajet, mais la resolution tombe a celle d’un reseau de 2 elements — generalement pas un bon compromis. Pour les reseaux de 8 elements, le lissage avant-arriere avec M=5 (L=4) est un bon equilibre.
### 6.3 Filtrage Temporel
Meme avec une estimation d’angle parfaite, la sortie est bruitee dans le temps. Un filtre de Kalman ou alpha-beta lisse les estimations d’angle :
| Filtre | Etat | Reglage | Latence | Lissage |
|——–|——-|——–|———|————|
| Moyenne mobile | theta | Fenetre = 5-10 echantillons | 0,5-1 s | Moyen |
| Alpha-beta | theta, omega | alpha=0,3, beta=0,05 | <0,2 s | Bon |
| Kalman | theta, omega | Q, R de mesure | <0,1 s | Meilleur |
| Filtre de particules | theta, x, y | 100-500 particules | 0,1-0,5 s | Meilleur (non lineaire) |
Pour le suivi en temps reel d'actifs en mouvement (chariots eleveurs, AGVs), le filtre alpha-beta est le sweet spot pratique : il s'execute en microsecondes, ajoute une latence minimale et fournit un lissage adequat pour la plupart des applications interieures.
## 7. Architecture Systeme et Deploiement
### 7.1 Architecture Materielle du Localisateur
Un localisateur AoA complet se compose de :
| Composant | Fonction | Composant Typique | Cout |
|-----------|----------|---------------|------|
| SoC BLE | Radio, echantillonnage IQ, calcul d'angle | nRF52833/5340 | $4-7 |
| Commutateur RF | Multiplexage d'antenne | SKY13330-385LF (SP4T) | $1,50 |
| Reseau d'antennes | Reseau patch 4-8 elements | PCB custom ou TI AOA-RD | $3-10 |
| MCU (optionnel) | Delestage calcul d'angle | Aucun (SoC suffisant) | $0 |
| Ethernet/Wi-Fi | Backhaul vers serveur de positionnement | W5500 ou ESP32 | $2-3 |
| Alimentation | PoE ou adaptateur 12V | Module PoE | $2-4 |
| Boitier | Logement transparent aux RF | ABS/polycarbonate | $3-8 |
| **BOM Total** | | | **$15-35** |
### 7.2 Strategie de Placement des Localisateurs
| Placement | Hauteur | Espacement | Couverture | Precision | Cas d'usage |
|-----------|--------|---------|----------|----------|----------|
| Montage plafond | 3-4 m | 8-15 m | 100-200 m2 | 0,5-1 m | Bureau, commerce |
| Montage mural | 2-3 m | 6-10 m | 50-100 m2 | 1-2 m | Couloirs, allees |
| Haut stockage | 8-12 m | 15-25 m | 300-500 m2 | 2-5 m | Entrepot, usine |
| Montage au sol | 0,5-1 m | 4-8 m | 30-60 m2 | 0,3-0,5 m | Suivi d'actifs dense |
Les localisateurs UCA montes au plafond a 3-4 m de hauteur avec un espacement de 10-12 m sont le deploiement standard pour le positionnement interieur sub-metrique. L'angle d'elevation du localisateur au tag contraint la distance :
| Angle d'elevation | Distance horizontale (plafond 3 m) | Distance horizontale (plafond 4 m) |
|----------------|-----------------------------------|-----------------------------------|
| 80 degres | 0,5 m | 0,7 m |
| 60 degres | 1,7 m | 2,3 m |
| 45 degres | 3,0 m | 4,0 m |
| 30 degres | 5,2 m | 6,9 m |
| 20 degres | 8,2 m | 11,0 m |
En dessous de 20 degres d'elevation, l'estimation de distance devient peu fiable (de petites erreurs d'angle causent de grandes erreurs de distance). C'est pourquoi l'espacement des localisateurs doit etre choisi de sorte que le tag soit toujours dans le cone d'elevation 20-80 degres d'au moins deux localisateurs.
### 7.3 Serveur de Positionnement
Le serveur de positionnement recoit les mesures d'angle de plusieurs localisateurs et calcule la position 2D ou 3D :
| Methode | Min localisateurs | Calcul | Precision | Notes |
|--------|-------------|-------------|----------|-------|
| Triangulation (2 AoA) | 2 | Intersection de 2 lignes de releve | 0,5-2 m | Sensible a l'erreur d'angle |
| Moindres carres (N AoA) | 3+ | Minimiser le residu de N releves | 0,3-1 m | Robuste, standard |
| Filtre de Kalman | 2+ | Espace d'etats avec modele de mouvement | 0,2-0,5 m | Lisse dans le temps |
| Fingerprinting + AoA | 1+ | Base de donnees hybride RSSI/AoA | 0,5-1 m | Fonctionne avec 1 localisateur |
La methode des moindres carres avec 3+ localisateurs est le standard de production. L'estimation de position minimise :
```
minimize sum_i | theta_measured_i - theta_predicted_i(position) |^2
```
C'est un probleme de moindres carres non lineaire resolu par iteration Gauss-Newton ou Levenberg-Marquardt. Avec 3-4 localisateurs et une precision angulaire de 5-10 degres, la precision de position resultante est generalement de 0,5-1,0 m en 2D.
## 8. Calibration et Caracterisation
### 8.1 Calibration de Phase
Chaque systeme AoA necessite une calibration de phase par antenne pour compenser les variations de fabrication dans le commutateur RF, les traces PCB et les elements d'antenne. Procedure de calibration :
1. **Tag de reference** : Placer un tag emetteur CTE a un angle connu (0 degres, axe principal) a 2-3 m de distance
2. **Collecter echantillons IQ** : Enregistrer 100-1000 receptions CTE
3. **Calculer l'offset de phase par antenne** : La phase attendue a 0 degres est 0 pour toutes les antennes. Toute deviation est l'offset de calibration.
4. **Stocker la table de calibration** : Offset de phase par antenne, stocke en flash
| Source de calibration | Amplitude d'erreur de phase | Frequence | Methode de calibration |
|-------------------|----------------------|-----------|-------------------|
| Asymetrie du commutateur RF | 5-20 degres | Une fois (usine) | Offset de phase par antenne |
| Desadaptation de trace PCB | 2-10 degres | Une fois (usine) | Offset de phase par antenne |
| Centre de phase d'antenne | 1-5 degres | Une fois (usine) | LUT dependante de l'angle |
| Derive de temperature | 1-3 degres | Par bin de temperature | LUT compensee en temperature |
| Frequence (canal) | 2-5 degres | Par canal | Calibration par canal |
Sans calibration, les offsets de phase bruts peuvent causer 10-20 degres d'erreur angulaire systematique. Apres calibration, l'erreur residuelle est generalement de 1-3 degres.
### 8.2 Caracterisation en Chambre Anechoique
La caracterisation complete necessite une chambre anechoique avec plateforme rotative :
| Mesure | Equipement | Duree | Sortie |
|-------------|-----------|----------|--------|
| Diagramme d'antenne (par element) | VNA + chambre | 2-4 heures | Gain vs angle par element |
| Diagramme de phase (par element) | VNA + chambre | 2-4 heures | Phase vs angle par element |
| Couplage mutuel (parametres-S) | VNA | 30 minutes | Matrice S21 (N x N) |
| Precision AoA bout-en-bout | Tag CTE + rotateur de chambre | 4-8 heures | Mesure vs angle vrai, 360 degres complets |
| Balayage de temperature | Chambre thermique + tag | 2-4 heures | Offset de phase vs temperature |
Le balayage de precision AoA bout-en-bout est la mesure la plus precieuse. Le tag est place a distance fixe, et le localisateur est rotate par increments de 5 degres de -90 a +90 degres. A chaque angle, 100 receptions CTE sont collectees et l'angle estime median est enregistre :
| Angle vrai | Median estime (non calibre) | Median estime (calibre) | Ecart type |
|------------|-------------------------------|-------------------------------|---------|
| -60 degres | -47 degres | -59 degres | 3 degres |
| -30 degres | -24 degres | -30 degres | 2 degres |
| 0 degres | +6 degres | 0 degres | 1 degre |
| +30 degres | +37 degres | +31 degres | 2 degres |
| +60 degres | +52 degres | +59 degres | 3 degres |
Les resultats non calibres montrent une erreur systematique de 6-13 degres, que la table de calibration reduit a 0-1 degre. L'ecart type augmente aux angles plus grands car l'ouverture effective projetee vers la source diminue.
## 9. Consommation Electrique du Cote Tag
Le tag (beacon) doit seulement ajouter le CTE a ses paquets advertising. Le cout energetique incrementiel :
| Mode | Intervalle advertising | Courant sans CTE | Avec CTE (16 us) | Delta | Impact batterie (CR2032, 220 mAh) |
|------|---------------------|----------------|-----------------|-------|--------------------------------|
| 1 Hz | 1000 ms | 12 uA avg | 12,3 uA avg | +0,3 uA | Negligeable (5+ ans) |
| 10 Hz | 100 ms | 85 uA avg | 88 uA avg | +3 uA | 5+ ans |
| 100 Hz | 10 ms | 750 uA avg | 780 uA avg | +30 uA | ~8 mois |
Le CTE ajoute seulement 16-160 us a chaque evenement d'advertising, ce qui est negligeable par rapport aux 3-4 ms de duree totale de l'evenement (preambule + payload + CTE + demarrage TX). Meme a 100 Hz d'advertising avec 160 us de CTE, l'energie supplementaire est inferieure a 5% de l'energie TX totale. Cela signifie que les tags compatibles AoA ont essentiellement la meme duree de vie de batterie que les beacons BLE standards.
### Configuration du CTE sur le Tag
Activer le CTE dans le paquet advertising sur un tag base sur nRF52 :
```c
// Configurer CTE pour AoA (slot de commutation 1 us, longueur 16 us = 2 unites)
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, // duree totale CTE en us
.antenna_switching = false, // le tag ne commute pas (mode AoA)
};
// Appliquer a l'ensemble d'advertising
sd_ble_gap_cte_set(adv_handle, &cte_config);
```
La modification du firmware du tag est minimale : un seul appel d'API pour activer le CTE dans l'ensemble d'advertising. Pas de commutateur d'antenne, pas d'echantillonnage IQ, pas de calcul d'angle. C'est pourquoi l'AoA est attrayant pour les tags d'actifs alimentes par batterie.
## 10. Pieges Courants et Debogage
| Probleme | Symptome | Cause Racine | Solution |
|-------|---------|------------|-----|
| Offset d'angle constant | Tous les angles decales de 5-15 degres | Calibration de phase non appliquee | Executer la procedure de calibration, stocker les offsets |
| Repliement d'angle | L'angle saute de +85 a -85 degres | Ambiguite ULA en endfire | Limiter le FoV a plus/moins 75 degres, ou utiliser UCA |
| Angle bruite (ecart type > 10 degres) | Dispersion aleatoire autour de l’angle vrai | SNR faible ou trajets multiples | Augmenter la longueur CTE, ajouter le lissage spatial |
| Angle bloque a 0 | Toutes les estimations renvoient 0 | Commutateur RF ne commute pas, ou CTE non detecte | Verifier le cablage GPIO, verifier la config PPI |
| Donnees IQ intermittentes | Certaines receptions CTE renvoient zero echantillon | Depassement de buffer radio ou gigue de minuterie | Augmenter la taille du buffer DFE, verifier les priorites d’interruption |
| Precision d’elevation mediocre | Azimut OK, elevation decale de 20+ degres | Reseau planaire non calibre pour l’elevation | Calibration 2D complete en chambre anechoique |
| Echec NLOS | L’angle pointe vers le mur au lieu du tag | Reflexion forte dominant le chemin direct | Ajouter la fusion multi-localisateurs, utiliser la detection NLOS |
| Derive de temperature | La precision se degrade apres 2+ heures de fonctionnement | Decalage de phase du commutateur RF vs temperature | Table de calibration compensee en temperature |
| Erreur dependante du canal | La precision varie entre les canaux d’advertising | L’offset de phase differe par frequence | Table de calibration par canal |
| Sensibilite a l’orientation du tag | L’angle change quand le tag pivote | Antenne du tag non omnidirectionnelle | Utiliser un tag avec antenne omnidirectionnelle, ou ajouter un capteur d’orientation |
### Liste de Verification de Debogage
1. Verifier que le CTE est present dans le paquet advertising (utiliser nRF Connect ou Ellipsis)
2. Confirmer la commutation du commutateur RF sur GPIO (oscilloscope sur les broches de controle)
3. Verifier que le buffer d’echantillons IQ est peuple (valeurs non nulles, variees)
4. Valider que la table de calibration de phase est chargee et appliquee
5. Tester en chambre anechoique (ou zone exterieure ouverte) pour eliminer les trajets multiples
6. Verifier la sortie de l’algorithme d’estimation vs rotation connue
7. Tester avec un tag en mouvement a des vitesses realistes (0,5-2 m/s)
8. Deployer dans l’environnement cible et caracteriser avec verite terrain
## 11. Comparaison d’Implementation : Nordic vs TI vs Silicon Labs
| Fonctionnalite | Nordic nRF52833/5340 | TI CC2642/CC2652 | Silicon Labs BG24 |
|———|———————-|——————-|——————-|
| Spec BLE | 5.1+ | 5.2+ | 5.2+ |
| Hardware DFE/DF | Oui (peripherique DFE) | Oui (DMA radio) | Oui (RAC + BUFC) |
| Taux echantillon IQ max | 2 MHz | 1 MHz | 1 MHz |
| Taille buffer IQ | 128-4096 octets | Configurable | Configurable |
| Controle commutateur antenne | PPI + GPIO (materiel) | IOMUX + GPIO | PRS + GPIO |
| Exemple AoA SDK | nRF Direction Finding | rtls_agent | AoA locator |
| Flexibilite du motif de commutation | Motif GPIO par slot | Motif par slot | Motif par slot |
| CTE dans advertising | Oui | Oui | Oui |
| CTE dans canal de donnees | Oui | Oui | Oui |
| Design de reference AoA | nRF AoA locator | CC26x2 AoA antenna | xGM24 AoA kit |
| Support communaute | Etendu | Moyen | En croissance |
| SDK d’estimation d’angle | Nordic AoA library | TI RTLS toolbox | Silabs AoA plugin |
Nordic a l’ecosysteme le plus mature avec des designs de reference, des exemples SDK et un support communaute. Le nRF52833 est le SoC de facto pour les localisateurs AoA de production grace a son materiel DFE eprouve et sa documentation extensive.
## 12. Liste de Verification de Conception pour Systemes AoA de Production
**Reseau d’antennes :**
– [ ] Espacement des elements = lambda/2 (62,5 mm) pour ULA, ou rayon = lambda/2 pour UCA
– [ ] Couplage mutuel < -15 dB (verifier avec mesure de parametres-S VNA)
- [ ] Stabilite du centre de phase < plus/moins 2 mm (utiliser des antennes patch, pas des antennes chip)
- [ ] Le plan de masse s'etend d'au moins lambda/4 au-dela de l'element le plus exterieur
**Frontend RF :**
- [ ] Temps de stabilisation du commutateur RF < 200 ns (verifier avec oscilloscope)
- [ ] Perte d'insertion du commutateur < 1 dB (budget de marge de liaison)
- [ ] Isolation du commutateur > 20 dB (empecher la diaphonie entre elements)
– [ ] Controle GPIO du commutateur route avec des longueurs de trace adaptees (< 5 mm d'ecart)
**Firmware :**
- [ ] Peripherique DFE/DF configure pour les slots de commutation de 1 us (mode AoA)
- [ ] Taille du buffer IQ >= 2 x (nombre_antennes + 8) echantillons (double buffer)
– [ ] Motif de commutation charge dans la RAM du peripherique RADIO
– [ ] Table de calibration de phase stockee en flash et appliquee avant l’estimation d’angle
– [ ] Algorithme d’estimation d’angle selectionne (diff-phase pour PoC, MUSIC pour production)
– [ ] Filtre temporel (alpha-beta ou Kalman) applique a la sortie d’angle
**Cote tag :**
– [ ] CTE active dans l’ensemble d’advertising (cte_type = AoA, length = 2-4 unites)
– [ ] Intervalle d’advertising correspond a l’exigence de taux de mise a jour de positionnement
– [ ] L’antenne du tag est omnidirectionnelle (verifier le diagramme en chambre)
– [ ] Duree de vie de la batterie calculee avec le surcout CTE inclus
**Deploiement :**
– [ ] Espacement des localisateurs choisi pour la couverture du cone d’elevation 20-80 degres
– [ ] Minimum 3 localisateurs avec LOS vers chaque zone de couverture
– [ ] Serveur de positionnement executant les moindres carres ou la fusion Kalman
– [ ] Detection et rejet NLOS implementes
– [ ] Etude de site realisee avec verite terrain (positions mesurees)
– [ ] Specification de precision verifiee dans l’environnement cible (pas seulement en chambre)
La detection de direction AoA transforme le positionnement BLE d’un cercle RSSI de 3-5 metres en une intersection de releves sub-metriques. La technologie est mature — des SoCs BLE 5.1 avec DFE materiel, des designs d’antenne de reference et des bibliotheques d’estimation d’angle open source sont tous disponibles. Le defi d’ingenierie ne reside pas dans le traitement du signal mais dans la couche physique : conception du reseau d’antennes, integrite du commutateur RF, calibration de phase et mitigation des trajets multiples. Faites cela correctement, et votre systeme de Bluetooth Beacon livre une precision sub-metrique. Faites-le mal, et vous avez un capteur RSSI couteux avec des antennes supplementaires.