Wenn ein Bluetooth Beacon in einem Lagerhaus sendet, sagt die RSSI-basierte Entfernungsmessung, dass sich der Tag „irgendwo innerhalb von 3 bis 5 Metern“ befindet — ein Unsicherheitskreis, der fuer ganggenaue Lokalisierung unbrauchbar ist. BLE 5.1 fuehrte die Direction Finding mittels Angle of Arrival (AoA) ein, die den RSSI-Kreis durch eine Peilungslinie mit einer Genauigkeit von wenigen Grad ersetzt und submetergenaue Positionierung bei Verwendung von zwei oder mehr Lokalisatorantennen ermoeglicht. Dieser Artikel behandelt die gesamte AoA-Signalkette — von der CTE-Wellenformstruktur ueber Antennenarray-Geometrie, IQ-Sampling bis hin zu Winkelschaetzverfahren — mit den Ingenieursparametern, Kompromissen und Kalibrierungsverfahren, die darueber entscheiden, ob Ihr System 2 Grad Genauigkeit oder 20 Grad Rauschen erreicht.

## 1. BLE 5.1 Direction Finding: AoA vs AoD

BLE 5.1 definiert zwei Direction-Finding-Modi. Beide nutzen eine 72- bis 160-Bit Constant Tone Extension (CTE), die nach dem Paket-Payload angehaengt wird, unterscheiden sich aber darin, wer Antennen schaltet und wer IQ-Daten sampelt:

| Parameter | Angle of Arrival (AoA) | Angle of Departure (AoD) |
|———–|————————|————————–|
| Antennenarray-Position | Empfaenger (Lokalisator) | Sender (Beacon/Tag) |
| Antennenumschaltung | Empfaenger schaltet waehrend CTE | Sender schaltet waehrend CTE |
| IQ-Sampling | Empfaenger sampelt | Empfaenger sampelt (Einzelantenne) |
| Typischer Anwendungsfall | Asset-Tracking, Indoor-Navigation | Objektsuche, Naeherungsrichtung |
| Beacon-Komplexitaet | Einfach (Einzelantenne, fuegt CTE hinzu) | Komplex (Array + Schalter erforderlich) |
| Lokalisator-Komplexitaet | Komplex (Array + Schalter + Sampler) | Einfach (Einzelantenne) |
| CTE in Advertising-PDU | Ja (ADV_EXT_IND) | Nein |
| CTE in Datenkanal-PDU | Ja | Ja |
| Tag-Firmware | CTEConfig zu Tx hinzufuegen | RF-Schalter-GPIO waehrend Tx steuern |

Fuer Asset-Tracking mit batteriebetriebenen BLE-Tags ist AoA die dominierende Architektur: Der Tag bleibt einfach (Einzelantenne, aktiviert nur CTE im Advertising-Paket), und die gesamte Komplexitaet — Antennenarray, RF-Schalter, IQ-Sampling — liegt im netzbetriebenen Lokalisator. Dieser Artikel konzentriert sich auf die Empfaengerseite des AoA, wo die Ingenieursentscheidungen liegen.

### CTE-Platzierung in der Paketstruktur

Das CTE wird nach dem CRC eines Standard-BLE-Pakets auf demselben RF-Kanal ohne Whitening uebertragen:

„`
| Praeambel | Access Address | PDU-Header + Payload | CRC | CTE |
^
72-160 Bit, nicht gewhitet
„`

Der PDU-Header enthaelt ein 2-Bit CPType-Feld (CTE Info) im erweiterten Header von ADV_EXT_IND oder in Datenkanal-PDUs, das dem Empfaenger mitteilt: (a) CTE vorhanden, (b) CTE-Typ (AoA = 1 us Schalt, AoD = 2 us Slot), (c) CTE-Laenge (1-20 Einheiten zu 8 us), (d) Antennenschaltmuster-Laenge.

Das CTE selbst ist eine reine Sinuswelle bei der RF-Traegerfrequenz (keine Modulation, kein Whitening). Der Empfaenger wandelt sie herunter und sampelt I/Q-Paare mit einer bekannten Rate, wodurch eine Phasenfortschreitung ueber das Antennenarray entsteht, die den Ankunftswinkel codiert.

## 2. Constant Tone Extension (CTE) Struktur

Das CTE hat unabhaengig von seiner Gesamtlaenge eine feste interne Struktur:

| Segment | Dauer | Inhalt | Zweck |
|———|———-|———|———|
| Guard Interval (GI) | 4 us | Gleich wie letztes CTE-Bit | AGC-Settling ermoeglichen, kein Sampling |
| Referenzperiode | 8 us | Einzelne Referenzantenne | Phasenreferenz herstellen |
| Schalt-Slot 1 | 1 us (AoA) oder 2 us (AoD) | Antenne 1 | IQ-Sample genommen |
| Schalt-Slot 2 | 1 us (AoA) oder 2 us (AoD) | Antenne 2 | IQ-Sample genommen |
| … | … | … | … |
| Schalt-Slot N | 1 us (AoA) oder 2 us (AoD) | Antenne N | IQ-Sample genommen |

Im AoA-Modus ist jeder Schalt-Slot 1 us lang. Mit einer 8 us Referenzperiode und 4 us Guard Interval erzeugt ein maximal langes CTE (20 Einheiten x 8 us = 160 us):

– Guard: 4 us
– Referenz: 8 us (1 IQ-Sample pro us = 8 Referenz-Samples)
– Schaltung: 148 us / 1 us = 148 Schalt-Slots

In der Praxis verwenden die meisten Designs 4 bis 8 Antennenelemente, sodass nur 4-8 Schalt-Slots pro CTE benoetigt werden. Die restlichen Slots sind ungenutzt oder werden fuer Oversampling verwendet. Eine typische Konfiguration:

| Konfig | CTE-Laenge | Antennen | Samples/Slot | Gesamt IQ-Paare | Update-Rate |
|——–|———–|———-|————–|—————-|————-|
| Minimal | 2 Einheiten (16 us) | 4 | 1 | 4 + 8 Ref | ~10 Hz |
| Standard | 4 Einheiten (32 us) | 4 | 1 | 4 + 8 Ref | ~10 Hz |
| Erweitert | 8 Einheiten (64 us) | 8 | 1 | 8 + 8 Ref | ~5 Hz |
| Oversampled | 16 Einheiten (128 us) | 8 | 4 | 32 + 8 Ref | ~2 Hz |

Der Kompromiss ist unkompliziert: Laengeres CTE liefert mehr Samples und bessere Winkelaufloesung, verbraucht aber mehr Sendezeit und reduziert die Advertising-Rate. Auf den drei primaeren Advertising-Kanaelen von BLE (37, 38, 39) fuegt ein 160 us CTE etwa 10-15% zur Gesamt-Paket-Sendezeit hinzu, was akzeptabel ist.

### CTE-Frequenz und Phasenreferenz

Das CTE wird bei der Kanalmittenfrequenz (z.B. 2402 MHz fuer Kanal 37) uebertragen. Da keine Modulation vorhanden ist, stammt die einzige Phasenvariation ueber das Antennenarray vom raeumlichen Pfadunterschied. Fuer ein Signal, das im Winkel theta zur Array-Hauptachse eintrifft, betraegt die Phasendifferenz zwischen zwei benachbarten Antennen im Abstand d:

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

wobei lambda = c / f = 3e8 / 2402e6 = 124,9 mm bei 2402 MHz.

Fuer den Standardabstand einer halben Wellenlaenge (d = lambda/2 = 62,5 mm) vereinfacht sich dies zu:

„`
phase_diff = pi * sin(theta)
„`

Dies bedeutet, dass das maximale eindeutige Sichtfeld bei plus/minus 90 Grad (180 Grad Gesamt-FoV) liegt, mit Phasenumbruch jenseits von plus/minus 90 Grad. Fuer breitere Abdeckung werden Arrays mit weniger als lambda/2 Abstand oder mehrere Sub-Arrays verwendet.

## 3. Antennenarray-Design

Das Antennenarray ist das wichtigste Hardware-Element in einem AoA-System. Seine Geometrie bestimmt direkt die Winkelaufloesung, das Sichtfeld und die Anfaelligkeit fuer Mehrwegeausbreitung.

### 3.1 Lineares Array

Ein Uniform Linear Array (ULA) ist die einfachste und haeufigste Konfiguration fuer BLE AoA:

| Parameter | Wert | Hinweise |
|———–|——-|——-|
| Elementanzahl | 4-8 | Mehr Elemente = bessere Aufloesung |
| Elementabstand | lambda/2 (62,5 mm) | Standard fuer eindeutiges FoV |
| Array-Laenge (4 Elem.) | 187,5 mm | Passt auf Lokalisator-PCB |
| Array-Laenge (8 Elem.) | 437,5 mm | Kann externes Array erfordern |
| Winkelaufloesung (4 Elem.) | ~15 Grad | Bei 10 dB SNR |
| Winkelaufloesung (8 Elem.) | ~8 Grad | Bei 10 dB SNR |
| Sichtfeld | plus/minus 90 Grad | 180 Grad insgesamt |
| Mehrdeutigkeit | Vorne-Hinten-Mehrdeutigkeit | Signal von +30 und -30 Grad sieht identisch aus |

Die Vorne-Hinten-Mehrdeutigkeit ist die grundlegende Einschraenkung der ULA: Ein Signal aus +30 Grad erzeugt die gleiche Phasenfortschreitung wie eines aus -30 Grad (Spiegelbild). Dies wird behoben durch (a) Montage des Arrays an einer Wand oder einem RF-Reflektor, sodass nur eine Hemisphaere sichtbar ist, oder (b) Verwendung eines 2D-Arrays.

### 3.2 Planares (2D) Array

Fuer vollstaendige 2D-Winkelschaetzung (Azimut + Elevation) ist ein planares Array erforderlich. Haeufige Konfigurationen:

| Typ | Geometrie | Elemente | Azimut-FoV | Elevation-FoV | Komplexitaet |
|——|———-|———-|————-|—————|————|
| Quadratisches UCA | N x N Raster | 4, 9, 16 | 360 Grad | ~60 Grad | Mittel |
| Kreisf. UCA | Ring | 4-8 | 360 Grad | ~60 Grad | Mittel |
| L-foermig | Zwei ULA, gemeinsame Ecke | 2N-1 | 360 Grad | 360 Grad | Niedrig |
| Dreieckig | 3 Elemente bei 120 Grad | 3 | 360 Grad | Begrenzt | Niedrig |

Das Uniform Circular Array (UCA) ist beliebt fuer deckenmontierte Lokalisatoren, da es 360-Grad-Azimutabdeckung ohne Vorne-Hinten-Mehrdeutigkeit bietet:

„`
Antennenpositionen (8-Elemente-UCA, Radius r = lambda/2):
x_i = r * cos(2 * pi * i / 8)
y_i = r * sin(2 * pi * i / 8)
„`

Fuer einen deckenmontierten Lokalisator gibt der Azimut (theta) die Kompasspeilung zum Tag und die Elevation (phi) den Winkel unterhalb der Horizontalen, aus dem bei bekannter Deckenhohe die Entfernung geschaetzt werden kann:

„`
distance = ceiling_height / tan(phi)
„`

### 3.3 Antennenelement-Auswahl

Patch-Antennen sind die Standardwahl fuer AoA-Arrays, da sie ein gerichtetes Strahlungsdiagramm (Gewinn zur Hemisphaere von Interesse) und eine kompakte Bauform haben:

| Antennentyp | Groesse (bei 2,4 GHz) | Gewinn | Diagramm | Eignung |
|————-|——————-|——|———|————-|
| PCB-Patch | 25 x 25 mm | 6-7 dBi | Hemisphaerisch | Ausgezeichnet (kompakt, gerichtet) |
| Keramik-Chip | 5 x 5 mm | 2-4 dBi | Broadside | Gut (kompakt, weniger Gewinn) |
| PCB-Leiter (IFA) | 15 x 5 mm | 2-3 dBi | Broadside | Maessig (omnidirektionale Tendenz) |
| Dipol (extern) | 30 mm | 2,15 dBi | Toroidal | Schlecht (Rueckenkeule) |
| Helical | 15 x 8 mm | 3-5 dBi | Hemisphaerisch | Gut aber hoch |

Wichtiger Antennenparameter fuer AoA: Phasenzentrum-Stabilitaet. Das Phasenzentrum der Antenne (der scheinbare Sendepunkt) darf sich nicht verschieben, wenn sich der Ankunftswinkel aendert. PCB-Patchantennen haben eine Phasenzentrum-Stabilitaet von plus/minus 1-2 mm, was bei 2,4 GHz plus/minus 1-3 Grad Winkelfehler entspricht. Guenstige Keramik-Chipantennen koennen Phasenzentrum-Verschiebungen von plus/minus 5 mm (plus/minus 7 Grad Fehler) aufweisen und sind fuer hochgenaues AoA ungeeignet.

### 3.4 Gegenseitige Kopplung und Elementabstand

Wenn Antennenelemente nahe beieinander (weniger als lambda) platziert werden, verursacht gegenseitige Kopplung eine Verzerrung des Strahlungsdiagramms jedes Elements durch seine Nachbarn. Der Kopplungskoeffizient S21 zwischen benachbarten Patchantennen bei lambda/2-Abstand betraegt typischerweise -15 bis -20 dB. Dies ist handhabbar, aber nicht vernachlaessigbar:

| Abstand | S21 (Kopplung) | Diagrammverzerrung | Winkelfehlerbeitrag |
|———|—————-|——————-|————————|
| lambda/4 (31 mm) | -8 bis -12 dB | Schwerwiegend | 5-10 Grad |
| lambda/2 (62,5 mm) | -15 bis -20 dB | Mittel | 1-3 Grad |
| lambda (125 mm) | -25 bis -30 dB | Minimal | <1 Grad | | 3lambda/4 (94 mm) | -20 bis -25 dB | Gering | <1 Grad | Massnahmen umfassen: (a) Ground-Plane-Aussparungen zwischen Elementen, (b) Defected Ground Structures (DGS), (c) Electromagnetic Bandgap-Strukturen (EBG) zwischen Elementen, oder (d) Erhoehung des Abstands auf 3lambda/4 unter Akzeptanz des schmaleren eindeutigen FoV (plus/minus 42 Grad statt plus/minus 90 Grad). ## 4. RF-Schalter und Sampling-Frontend ### 4.1 Antennenschalter-Anforderungen Der AoA-Empfaenger muss waehrend jedes 1 us Schalt-Slots zwischen Antennenelementen umschalten. Der RF-Schalter ist die kritische Komponente: | Parameter | Anforderung | Typisches Bauteil | Hinweise | |-----------|-------------|---------------|-------| | Schaltzeit | < 200 ns | SKY13330, HMC253, PE42420 | Muss vor IQ-Sample settleln | | Einfuegedaempfung | < 1 dB | SKY13330: 0,7 dB | Beeinflusst Empfindlichkeit | | Isolation (aus) | > 20 dB | SKY13330: 25 dB | Verhindert Uebersprechen |
| Anzahl Wege | 4-8 SPxT | SP4T, SP8T | Entspricht Array-Groesse |
| Frequenz | 2,4 GHz ISM | Alle aufgelisteten | Standard |
| Steuerschnittstelle | GPIO (3-Bit fuer SP8T) | Direktes MCU-GPIO | Schnell, deterministisch |
| Linearitaet (IIP3) | > 20 dBm | SKY13330: 35 dBm | Verhindert Intermodulation |

Die Schalter-Settling-Zeit ist kritisch. Bei einem 1 us Schalt-Slot und einem IQ-Sample in der Slot-Mitte (500 ns nach Umschaltung) muss der Schalter innerhalb 200-300 ns settlen und 200 ns sauberes Signal fuer das Sampling bleiben. SKY13330 (Skyworks) und PE42420 (pSemi) spezifizieren beide 150-200 ns Settling-Zeit, was ausreichend ist.

### 4.2 IQ-Sampling in BLE-SoCs

Das IQ-Sampling wird vom Radio-Peripheriegeraet des BLE-SoC durchgefuehrt, nicht von einem externen ADC. Der interne I/Q-Demodulator des Radios gewaehrt Zugriff auf die Basisband-I/Q-Samples:

| SoC | IQ-Sample-Rate | Sample-Buffer | CTE-Unterstuetzung | Antennenschalter-Steuerung | Hinweise |
|—–|—————|—————|————-|———————-|——-|
| nRF52811/52833/52840 | 1-2 MHz (DFE) | 128-1024 Bytes | Ja (Hardware) | GPIO via PPI | Ausgereiftestes DF-Oekosystem |
| nRF5340 | 1-2 MHz (DFE) | Bis 4096 Bytes | Ja (Hardware) | GPIO via DPPI | Dual-Core, mehr Buffer |
| CC2640R2 | 8 MHz (custom) | Begrenzt | Nein (Patch erforderlich) | Manuelles GPIO | Natives DF nicht unterstuetzt |
| CC2642/CC2652 | 1 MHz | Konfigurierbar | Ja (Hardware) | GPIO via IOMUX | BLE 5.1 nativ |
| ESP32-C6/H2 | Konfigurierbar | Konfigurierbar | Ja (Hardware) | GPIO via GPIO-Matrix | Neu, weniger ausgereift |
| BGM240/BG24 | 1 MHz | Konfigurierbar | Ja (Hardware) | GPIO via PRS | Silabs Gecko |

Die Nordic nRF52/53-Serie hat die ausgereifteste AoA-Implementierung. Die Direction Finding Engine (DFE) ist ein Hardware-Peripheriegeraet, das:

1. CTE-Vorhandensein aus dem PDU-Header erkennt
2. Den RF-Schalter-GPIO via PPI (Programmable Peripheral Interconnect) in praezisen 1 us-Intervallen steuert
3. I/Q mit bis zu 2 MHz sampelt (konfigurierbar, Standard 1 MHz = 1 Sample/us)
4. Samples in einem dedizierten RAM-Buffer speichert
5. Einen Interrupt bei Abschluss des Samplings generiert

### 4.3 Schaltmuster-Konfiguration

Das Antennenschaltmuster definiert, welche Antenne waehrend jedes Schalt-Slots aktiv ist. Fuer ein 4-Elemente-Array:

| Schalt-Slot | Aktive Antenne | SwitchPattern GPIO-Wert | Hinweise |
|————-|—————|————————-|——-|
| Referenz (0-7) | Antenne 0 (Referenz) | 0x01 | Gleiche Antenne fuer alle Referenz-Samples |
| Slot 1 | Antenne 1 | 0x02 | Erste Messantenne |
| Slot 2 | Antenne 2 | 0x04 | Zweite Messantenne |
| Slot 3 | Antenne 3 | 0x08 | Dritte Messantenne |
| Slot 4 | Antenne 0 | 0x01 | Zurueck zur Referenz (optional) |
| Slot 5-8 | Antennen 1-3 wiederholen | 0x02, 0x04, 0x08 | Oversampling (optional) |

Das Muster wird in einen Puffer im RAM geladen, und das PPI-System der RADIO-Peripherie schaltet die GPIO-Pins in 1 us-Intervallen, synchronisiert mit dem CTE-Empfang. Dieses hardwaregesteuerte Schalten eliminiert Jitter, der bei softwaregesteuertem GPIO-Toggling unvermeidbar waere.

## 5. Winkelschaetzverfahren

Sobald IQ-Samples gesammelt wurden, muss der Ankunftswinkel berechnet werden. Die Wahl des Algorithmus bestimmt die Winkelaufloesung, den Rechenaufwand und die Rauschrobustheit.

### 5.1 Phasendifferenzmethode (Basis)

Der einfachste Ansatz berechnet die Phasendifferenz zwischen benachbarten Antennenelementen und wandelt sie in einen Winkel um:

„`python
import numpy as np

# IQ-Samples: 4 Antennen, je 1 Sample (aus Schalt-Slots)
# iq[0] = Referenz, iq[1..3] = Antenne 1..3
iq = np.array([complex(i, q) for i, q in iq_samples])

# Phase jedes Antennen-Samples
phases = np.angle(iq)

# Phasendifferenz zwischen benachbarten Elementen
dphi = np.diff(phases)

# In Winkel umrechnen (halbe Wellenlaenge Abstand)
# dphi = pi * sin(theta) => theta = arcsin(dphi / pi)
theta = np.arcsin(np.clip(dphi / np.pi, -1, 1))

# Ueber Elementpaare mitteln
theta_avg = np.mean(theta)
„`

| Parameter | Wert | Hinweise |
|———–|——-|——-|
| Winkelaufloesung | 10-15 Grad (4 Elem., 10 dB SNR) | Durch Phasenrauschen begrenzt |
| Berechnung | O(N) | Trivial, laeuft in Mikrosekunden |
| Mehrwegrobustheit | Schlecht | Jede Reflexion stoert Phase |
| Eindeutiges FoV | plus/minus 90 Grad | Standard-ULA |
| Erford. SNR | > 5 dB | Darunter Phasenumbruch |

Die Phasendifferenzmethode eignet sich fuer Proof-of-Concept und Anwendungen mit geringer Genauigkeit (Raumebene). Fuer Produktionssysteme mit Subgrad-Genauigkeit sind anspruchsvollere Algorithmen erforderlich.

### 5.2 MUSIC (Multiple Signal Classification)

MUSIC ist ein subspace-basierter Algorithmus, der den Signal-Subraum vom Rausch-Subraum mittels Eigenzerlegung der Kovarianzmatrix trennt. Er kann mehrere simultane Signale (Mehrwegreflexionen) aufloesen und Superresolution erreichen:

„`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: Elementabstand in Wellenlaengen (0.5 = lambda/2)

# 1. Kovarianzmatrix berechnen
R = np.cov(iq_matrix.T) # (N, N) hermitesch

# 2. Eigenzerlegung
eigenvalues, eigenvectors = eigh(R)

# 3. Eigenwerte absteigend sortieren
idx = np.argsort(eigenvalues)[::-1]
eigenvalues = eigenvalues[idx]
eigenvectors = eigenvectors[:, idx]

# 4. Rausch-Subraum (N-K kleinste Eigenvektoren)
K = num_signals
En = eigenvectors[:, K:] # (N, N-K)

# 5. Steering-Vektor fuer Scan-Winkel 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))
# MUSIC-Pseudospektrum
spectrum[i] = 1.0 / np.abs(a.conj() @ En @ En.conj().T @ a)

# 6. Peak-Suche
peak_idx = np.argmax(spectrum)
return thetas[peak_idx], spectrum
„`

| Parameter | Wert | Hinweise |
|———–|——-|——-|
| Winkelaufloesung | 3-5 Grad (4 Elem., 10 dB SNR) | Superresolution |
| Aufloesung (8 Elem.) | 1-2 Grad | Nahe Cramer-Rao-Grenze |
| Berechnung | O(N^3) fuer Eigenzerlegung | 1-5 ms auf Cortex-M4F |
| Mehrwegbehandlung | Loest bis zu N-1 Signale auf | Wenn K < N | | Erford. Snapshots | >= N (typisch 8-16) | Benoetigt mehrere CTE-Empfaenge |
| Speicher | N x N Kovarianz (64 Bytes fuer N=4) | Trivial |

MUSICs Hauptvorteil ist die Mehrwegaufloesung: Wenn der direkte Pfad und eine Reflexion aus unterschiedlichen Winkeln eintreffen, kann MUSIC beide als separate Peaks im Pseudospektrum identifizieren. Der direkte Pfad ist typischerweise der Peak mit der hoechsten Leistung, obwohl diese Annahme in NLOS-Umgebungen (keine Sichtverbindung) scheitern kann.

### 5.3 ESPRIT (Estimation of Signal Parameters via Rotational Invariance)

ESPRIT vermeidet die Spektralsuche von MUSIC durch Ausnutzung der Verschiebungsinvarianzstruktur des Arrays. Es ist rechnerisch leichter als MUSIC, erfordert aber ein gleichmaessiges Array:

| Parameter | MUSIC | ESPRIT |
|———–|——-|——–|
| Array-Typ | Beliebig (ULA, UCA, planar) | Nur ULA oder gepaarte Sub-Arrays |
| Spektralsuche | Ja (180+ Auswertungen) | Nein (geschlossene Form) |
| Berechnung | O(N^3) + O(Scan x N) | O(N^3) |
| Latenz (Cortex-M4F, N=4) | 2-5 ms | 1-2 ms |
| Winkelaufloesung | Aequivalent | Aequivalent |
| Mehrwegaufloesung | Ja (Peak-Suche) | Ja (Eigenwert-Mapping) |
| Implementierungskomplexitaet | Mittel | Mittel |

Fuer BLE AoA mit 4-8 Antennen laufen sowohl MUSIC als auch ESPRIT innerhalb weniger Millisekunden auf einem Cortex-M4F. Die Wahl wird meist durch die Array-Geometrie bestimmt: MUSIC fuer UCA (deckenmontierte Lokalisatoren), ESPRIT fuer ULA (wandmontierte Lokalisatoren).

### 5.4 Cramer-Rao-Untergrenze (CRLB)

Die CRLB definiert die bestmoegliche Winkelgenauigkeit bei gegebenem SNR, Antennenanzahl und Array-Geometrie:

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

wobei N = Antennenanzahl, K = Snapshot-Anzahl, d = Elementabstand (Meter), SNR = linear (nicht dB).

| N (Antennen) | K (Snapshots) | SNR (dB) | CRLB (Grad) | Praktisch (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 |

Die „Praktisch“-Spalte beruecksichtigt reale Beeintraechtigungen (Phasenrauschen, gegenseitige Kopplung, Kanalungleichgewicht), die typischerweise die CRLB verdoppeln. Dennoch kann ein 8-Elemente-Array mit 8 Snapshots bei 20 dB SNR theoretisch Subgrad-Genauigkeit erreichen.

## 6. Mehrweg- und NLOS-Minderung

Innenraeume sind mehrwegreich. Ein 2,4-GHz-Signal reflektiert an Metallregalen, Betonwaenden und menschlichen Koerpern und erzeugt mehrere Pfade vom Tag zum Lokalisator. Jeder Pfad trifft aus einem anderen Winkel ein, und der Empfaenger sieht deren Vektorsumme.

### 6.1 Mehrweg-Auswirkung auf AoA

| Umgebung | Direkter Pfad | Reflektierter Pfad | AoA-Fehler (Phasendiff.) | AoA-Fehler (MUSIC) |
|————|——————-|———————|———————-|——————-|
| Buero (LOS) | -50 dBm | -65 dBm | 2-5 Grad | 1-2 Grad |
| Lager (teilweise LOS) | -60 dBm | -63 dBm | 10-25 Grad | 3-8 Grad |
| Fabrik (NLOS) | -75 dBm | -70 dBm | 30+ Grad | 10-20 Grad |
| Korridor (Wellenleiter) | -55 dBm | -57 dBm | 15-30 Grad | 5-10 Grad |

Unter NLOS-Bedingungen kann der direkte Pfad 10-15 dB unter der staerksten Reflexion liegen. MUSIC kann manchmal beide Pfade aufloesen, aber die Identifizierung des direkten Pfads erfordert zusaetzliche Informationen:

– **RSSI-Gating**: Der direkte Pfad sollte das hoechste RSSI haben (in NLOS nicht immer wahr)
– **Konsistenzpruefung**: Der Winkel des direkten Pfads sollte ueber mehrere CTE-Empfaenge konsistent sein
– **Multi-Lokalisator-Fusion**: Wenn 3+ Lokalisatoren den Tag sehen, ist der direkte Pfad derjenige, dessen Winkel eine konsistente Triangulation ergeben
– **Elevationsfilterung**: Fuer deckenmontierte Lokalisatoren sollte der direkte Pfad eine Elevation haben, die zur bekannten Deckenhoeh passt

### 6.2 Raeumliches Glattung

Raeumliche Glattung ist eine Vorverarbeitungstechnik, die Mehrwegsignale dekorreliert und es MUSIC ermoeglicht, kohaerenten Mehrweg (den Standard-MUSIC nicht aufloesen kann) zu behandeln:

| Technik | Array-Typ | Dekorrelation | Aperturverlust | Komplexitaet |
|———–|———–|—————|———————|————|
| Vorwaerts-Glaettung | ULA | Ja | ~50% | Niedrig |
| Vorwaerts-Rueckwaerts | ULA | Ja | ~50% | Niedrig |
| Raeuml. Glaettung (UCA) | UCA | Ja | ~40% | Mittel |
| 2D-Glaettung | Planar | Ja | ~50% | Mittel |

Vorwaerts-Glaettung teilt das N-Elemente-ULA in L ueberlappende Sub-Arrays der Groesse M = N – L + 1. Die Kovarianzmatrizen der Sub-Arrays werden gemittelt, was kohaerenten Mehrweg dekorreliert, aber die effektive Apertur von N auf M reduziert. Fuer ein 4-Elemente-Array koennen 2-Elemente-Sub-Arrays (L=2, M=2) ein Mehrwegsignal aufloesen, aber die Aufloesung faellt auf die eines 2-Elemente-Arrays — meist nicht den Kompromiss wert. Fuer 8-Elemente-Arrays ist Vorwaerts-Rueckwaerts-Glaettung mit M=5 (L=4) ein guter Kompromiss.

### 6.3 Zeitliche Filterung

Selbst bei perfekter Winkelschaetzung ist die Ausgabe zeitlich verrauscht. Ein Kalman- oder Alpha-Beta-Filter glaettet die Winkelschaetzungen:

| Filter | Zustand | Tuning | Latenz | Glaettung |
|——–|——-|——–|———|————|
| Moving Average | theta | Fenster = 5-10 Samples | 0,5-1 s | Mittel |
| Alpha-Beta | theta, omega | alpha=0,3, beta=0,05 | <0,2 s | Gut | | Kalman | theta, omega | Q, R aus Messung | <0,1 s | Beste | | Partikelfilter | theta, x, y | 100-500 Partikel | 0,1-0,5 s | Beste (nichtlinear) | Fuer Echtzeit-Tracking von bewegten Assets (Gabelstapler, AGVs) ist der Alpha-Beta-Filter der praktische Sweetspot: Er laeuft in Mikrosekunden, addiert minimale Latenz und bietet angemessene Glaettung fuer die meisten Indoor-Anwendungen. ## 7. Systemarchitektur und Einsatz ### 7.1 Lokalisator-Hardware-Architektur Ein vollstaendiger AoA-Lokalisator besteht aus: | Komponente | Funktion | Typisches Bauteil | Kosten | |-----------|----------|---------------|------| | BLE-SoC | Radio, IQ-Sampling, Winkelberechnung | nRF52833/5340 | $4-7 | | RF-Schalter | Antennenmultiplexing | SKY13330-385LF (SP4T) | $1,50 | | Antennenarray | 4-8 Elemente Patch-Array | Custom-PCB oder TI AOA-RD | $3-10 | | MCU (optional) | Winkelberechnung-Offload | Keine (SoC ausreichend) | $0 | | Ethernet/Wi-Fi | Backhaul zum Positionierungsserver | W5500 oder ESP32 | $2-3 | | Stromversorgung | PoE oder 12V-Adapter | PoE-Modul | $2-4 | | Gehaeuse | RF-transparentes Gehaeuse | ABS/Polycarbonat | $3-8 | | **BOM gesamt** | | | **$15-35** | ### 7.2 Lokalisator-Platzierungsstrategie | Platzierung | Hoehe | Abstand | Abdeckung | Genauigkeit | Anwendungsfall | |-----------|--------|---------|----------|----------|----------| | Deckenmontage | 3-4 m | 8-15 m | 100-200 m2 | 0,5-1 m | Buero, Einzelhandel | | Wandmontage | 2-3 m | 6-10 m | 50-100 m2 | 1-2 m | Gaenge, Regale | | Hochregallager | 8-12 m | 15-25 m | 300-500 m2 | 2-5 m | Lager, Fabrik | | Bodenmontage | 0,5-1 m | 4-8 m | 30-60 m2 | 0,3-0,5 m | Dichtes Asset-Tracking | Deckenmontierte UCA-Lokalisatoren in 3-4 m Hoehe mit 10-12 m Abstand sind die Standard-Einsatzform fuer submetergenaue Indoor-Positionierung. Der Elevationswinkel vom Lokalisator zum Tag beschraenkt die Entfernung: | Elevation | Horizontale Distanz (3 m Decke) | Horizontale Distanz (4 m Decke) | |----------------|-----------------------------------|-----------------------------------| | 80 Grad | 0,5 m | 0,7 m | | 60 Grad | 1,7 m | 2,3 m | | 45 Grad | 3,0 m | 4,0 m | | 30 Grad | 5,2 m | 6,9 m | | 20 Grad | 8,2 m | 11,0 m | Unter 20 Grad Elevation wird die Entfernungsschaetzung unzuverlaessig (kleine Winkelfehler verursachen grosse Entfernungsfehler). Deshalb sollte der Lokalisatorabstand so gewaehlt werden, dass sich der Tag immer im 20-80 Grad-Elevationskegel von mindestens zwei Lokalisatoren befindet. ### 7.3 Positionierungsserver Der Positionierungsserver empfaengt Winkelmessungen von mehreren Lokalisatoren und berechnet die 2D- oder 3D-Position: | Methode | Min. Lokalisatoren | Berechnung | Genauigkeit | Hinweise | |--------|-------------|-------------|----------|-------| | Triangulation (2 AoA) | 2 | Schnittpunkt von 2 Peilungslinien | 0,5-2 m | Empfindlich gegen Winkelfehler | | Kleinste Quadrate (N AoA) | 3+ | Residuum von N Peilungen minimieren | 0,3-1 m | Robust, Standard | | Kalman-Filter | 2+ | Zustandsraum mit Bewegungsmodell | 0,2-0,5 m | Zeitliche Glaettung | | Fingerprinting + AoA | 1+ | Hybride RSSI/AoA-Datenbank | 0,5-1 m | Funktioniert mit 1 Lokalisator | Die Methode der kleinsten Quadrate mit 3+ Lokalisatoren ist der Produktionsstandard. Die Positionschaetzung minimiert: ``` minimize sum_i | theta_measured_i - theta_predicted_i(position) |^2 ``` Dies ist ein nichtlineares Kleinste-Quadrate-Problem, geloest durch Gauss-Newton- oder Levenberg-Marquardt-Iteration. Mit 3-4 Lokalisatoren und 5-10 Grad Winkelgenauigkeit betraegt die resultierende Positionsgenauigkeit typischerweise 0,5-1,0 m in 2D. ## 8. Kalibrierung und Charakterisierung ### 8.1 Phasenkalibrierung Jedes AoA-System erfordert eine pro-Antennen-Phasenkalibrierung zur Kompensation von Fertigungsschwankungen im RF-Schalter, den PCB-Leiterbahnen und Antennenelementen. Kalibrierungsverfahren: 1. **Referenz-Tag**: Einen CTE-sendenden Tag in bekanntem Winkel (0 Grad, Hauptachse) in 2-3 m Entfernung platzieren 2. **IQ-Samples sammeln**: 100-1000 CTE-Empfaenge aufzeichnen 3. **Phasen-Offset pro Antenne berechnen**: Die erwartete Phase bei 0 Grad ist 0 fuer alle Antennen. Jede Abweichung ist der Kalibrierungs-Offset. 4. **Kalibrierungstabelle speichern**: Pro-Antennen-Phasen-Offset, in Flash gespeichert | Kalibrierungsquelle | Phasenfehler-Groesse | Haeufigkeit | Kalibrierungsmethode | |-------------------|----------------------|-----------|-------------------| | RF-Schalter-Asymmetrie | 5-20 Grad | Einmal (Werk) | Pro-Antennen-Phasen-Offset | | PCB-Leiterbahn-Mismatch | 2-10 Grad | Einmal (Werk) | Pro-Antennen-Phasen-Offset | | Antennen-Phasenzentrum | 1-5 Grad | Einmal (Werk) | Winkelabhaengige LUT | | Temperaturdrift | 1-3 Grad | Pro Temperatur-Bin | Temperaturkompensierte LUT | | Frequenz (Kanal) | 2-5 Grad | Pro Kanal | Pro-Kanal-Kalibrierung | Ohne Kalibrierung koennen rohe Phasen-Offsets 10-20 Grad systematischen Winkelfehler verursachen. Nach der Kalibrierung ist der Restfehler typischerweise 1-3 Grad. ### 8.2 Anechoic-Chamber-Charakterisierung Vollstaendige Charakterisierung erfordert eine Anechoic Chamber mit Drehteller: | Messung | Geraet | Dauer | Ausgabe | |-------------|-----------|----------|--------| | Antennendiagramm (pro Element) | VNA + Chamber | 2-4 Stunden | Gewinn vs. Winkel pro Element | | Phasendiagramm (pro Element) | VNA + Chamber | 2-4 Stunden | Phase vs. Winkel pro Element | | Gegenseitige Kopplung (S-Parameter) | VNA | 30 Minuten | S21-Matrix (N x N) | | End-to-End-AoA-Genauigkeit | CTE-Tag + Kammer-Rotator | 4-8 Stunden | Gemessen vs. wahrer Winkel, 360 Grad | | Temperatur-Sweep | Thermokammer + Tag | 2-4 Stunden | Phasen-Offset vs. Temperatur | Der End-to-End-AoA-Genauigkeits-Sweep ist die wertvollste Messung. Der Tag wird in fester Entfernung platziert und der Lokalisator in 5-Grad-Schritten von -90 bis +90 Grad gedreht. Bei jedem Winkel werden 100 CTE-Empfaenge gesammelt und der Median des geschaetzten Winkels aufgezeichnet: | Wahrer Winkel | Median geschaetzt (unkalibriert) | Median geschaetzt (kalibriert) | Stdabw. | |------------|-------------------------------|-------------------------------|---------| | -60 Grad | -47 Grad | -59 Grad | 3 Grad | | -30 Grad | -24 Grad | -30 Grad | 2 Grad | | 0 Grad | +6 Grad | 0 Grad | 1 Grad | | +30 Grad | +37 Grad | +31 Grad | 2 Grad | | +60 Grad | +52 Grad | +59 Grad | 3 Grad | Die unkalibrierten Ergebnisse zeigen einen systematischen Fehler von 6-13 Grad, den die Kalibrierungstabelle auf 0-1 Grad reduziert. Die Standardabweichung steigt bei groesseren Winkeln, da die projizierte effektive Apertur zur Quelle abnimmt. ## 9. Stromverbrauch auf der Tag-Seite Der Tag (Beacon) muss nur CTE an seine Advertising-Pakete anhaengen. Die inkrementelle Stromkosten: | Modus | Advertising-Intervall | Strom ohne CTE | Mit CTE (16 us) | Delta | Batterieauswirkung (CR2032, 220 mAh) | |------|---------------------|----------------|-----------------|-------|--------------------------------| | 1 Hz | 1000 ms | 12 uA avg | 12,3 uA avg | +0,3 uA | Vernachlaessigbar (5+ Jahre) | | 10 Hz | 100 ms | 85 uA avg | 88 uA avg | +3 uA | 5+ Jahre | | 100 Hz | 10 ms | 750 uA avg | 780 uA avg | +30 uA | ~8 Monate | Das CTE fuegt nur 16-160 us zu jedem Advertising-Ereignis hinzu, was gegenueber der 3-4 ms Gesamtereignisdauer (Praeambel + Payload + CTE + TX-Startup) vernachlaessigbar ist. Selbst bei 100 Hz Advertising mit 160 us CTE ist die zusaetzliche Energie weniger als 5% der Gesamt-TX-Energie. Das bedeutet, dass AoA-faehige Tags im Wesentlichen die gleiche Batterielebensdauer haben wie Standard-BLE-Beacons. ### CTE-Konfiguration auf dem Tag CTE im Advertising-Paket auf einem nRF52-basierten Tag aktivieren: ```c // CTE fuer AoA konfigurieren (1 us Schalt-Slot, 16 us Laenge = 2 Einheiten) 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, // CTE-Gesamtdauer in us .antenna_switching = false, // Tag schaltet nicht (AoA-Modus) }; // Auf Advertising-Set anwenden sd_ble_gap_cte_set(adv_handle, &cte_config); ``` Die Tag-Firmware-Aenderung ist minimal: ein API-Aufruf zum Aktivieren von CTE im Advertising-Set. Kein Antennenschalter, kein IQ-Sampling, keine Winkelberechnung. Deshalb ist AoA attraktiv fuer batteriebetriebene Asset-Tags. ## 10. Haeufige Fehler und Fehlersuche | Problem | Symptom | Ursache | Loesung | |-------|---------|------------|-----| | Konstanter Winkel-Offset | Alle Winkel um 5-15 Grad verschoben | Phasenkalibrierung nicht angewendet | Kalibrierungsverfahren durchfuehren, Offsets speichern | | Winkel-Umbruch | Winkel springt von +85 auf -85 Grad | ULA-Mehrdeutigkeit bei Endfire | FoV auf plus/minus 75 Grad beschraenken, oder UCA verwenden | | Rauschiger Winkel (Std > 10 Grad) | Zufaellige Streuung um wahren Winkel | Niedriges SNR oder Mehrweg | CTE-Laenge erhoehen, raeumliche Glaettung hinzufuegen |
| Winkel bei 0 feststeckend | Alle Schaetzungen geben 0 zurueck | RF-Schalter toggelt nicht, oder CTE nicht erkannt | GPIO-Verkabelung pruefen, PPI-Konfig verifizieren |
| Intermittierende IQ-Daten | Einige CTE-Empfaenge geben Null-Samples | Radio-Buffer-Ueberlauf oder Timing-Jitter | DFE-Buffer vergroessern, Interrupt-Prioritaeten pruefen |
| Schlechte Elevationsgenauigkeit | Azimut OK, Elevation um 20+ Grad abweichend | Planar-Array nicht fuer Elevation kalibriert | Vollstaendige 2D-Kalibrierung in Anechoic Chamber |
| NLOS-Versagen | Winkel zeigt zur Wand statt zum Tag | Starke Reflexion dominiert direkten Pfad | Multi-Lokalisator-Fusion hinzufuegen, NLOS-Erkennung verwenden |
| Temperaturdrift | Genauigkeit verschlechtert sich nach 2+ Stunden Betrieb | RF-Schalter-Phasenverschiebung vs. Temperatur | Temperaturkompensierte Kalibrierungstabelle |
| Kanalabhaengiger Fehler | Genauigkeit variiert ueber Advertising-Kanaele | Phasen-Offset unterscheidet sich pro Frequenz | Pro-Kanal-Kalibrierungstabelle |
| Tag-Orientierungsempfindlichkeit | Winkel aendert sich bei Tag-Drehung | Tag-Antenne nicht omnidirektional | Tag mit omnidirektionaler Antenne verwenden, oder Orientierungssensor hinzufuegen |

### Fehlersuche-Checkliste

1. Verifizieren, dass CTE im Advertising-Paket vorhanden ist (nRF Connect oder Ellipsis verwenden)
2. Bestaetigen, dass RF-Schalter auf GPIO toggelt (Oszilloskop an Schalter-Steuelpins)
3. Pruefen, dass IQ-Sample-Buffer gefuellt ist (non-zero, variierende Werte)
4. Validieren, dass Phasenkalibrierungstabelle geladen und angewendet ist
5. In Anechoic Chamber (oder offenes Aussenbereich) testen, um Mehrweg zu eliminieren
6. Algorithmusausgabe gegen bekannte Drehung verifizieren
7. Mit bewegtem Tag bei realistischen Geschwindigkeiten (0,5-2 m/s) testen
8. In Zielumgebung einsetzen und mit Ground Truth charakterisieren

## 11. Implementationsvergleich: Nordic vs TI vs Silicon Labs

| Feature | Nordic nRF52833/5340 | TI CC2642/CC2652 | Silicon Labs BG24 |
|———|———————-|——————-|——————-|
| BLE-Spec | 5.1+ | 5.2+ | 5.2+ |
| DFE/DF-Hardware | Ja (DFE-Peripherie) | Ja (Radio-DMA) | Ja (RAC + BUFC) |
| Max. IQ-Sample-Rate | 2 MHz | 1 MHz | 1 MHz |
| IQ-Buffer-Groesse | 128-4096 Bytes | Konfigurierbar | Konfigurierbar |
| Antennenschalter-Steuerung | PPI + GPIO (Hardware) | IOMUX + GPIO | PRS + GPIO |
| SDK AoA-Beispiel | nRF Direction Finding | rtls_agent | AoA locator |
| Schaltmuster-Flexibilitaet | Pro-Slot GPIO-Muster | Pro-Slot-Muster | Pro-Slot-Muster |
| CTE in Advertising | Ja | Ja | Ja |
| CTE in Datenkanal | Ja | Ja | Ja |
| AoA-Referenzdesign | nRF AoA locator | CC26x2 AoA antenna | xGM24 AoA kit |
| Community-Support | Umfassend | Mittel | Wachsend |
| Winkelschaetzungs-SDK | Nordic AoA library | TI RTLS toolbox | Silabs AoA plugin |

Nordic hat das ausgereifteste Oekosystem mit Referenzdesigns, SDK-Beispielen und Community-Support. Der nRF52833 ist der De-facto-SoC fuer Produktions-AoA-Lokalisatoren aufgrund seiner bewaehrten DFE-Hardware und umfassenden Dokumentation.

## 12. Design-Checkliste fuer Produktions-AoA-Systeme

**Antennenarray:**
– [ ] Elementabstand = lambda/2 (62,5 mm) fuer ULA, oder Radius = lambda/2 fuer UCA
– [ ] Gegenseitige Kopplung < -15 dB (mit VNA-S-Parameter-Messung verifizieren) - [ ] Phasenzentrum-Stabilitaet < plus/minus 2 mm (Patchantennen verwenden, keine Chipantennen) - [ ] Ground Plane erstreckt sich mindestens lambda/4 ueber aeusserstes Element hinaus **RF-Frontend:** - [ ] RF-Schalter-Settling-Zeit < 200 ns (mit Oszilloskop verifizieren) - [ ] Schalter-Einfuegedaempfung < 1 dB (Link-Budget) - [ ] Schalter-Isolation > 20 dB (Element-Uebersprechen verhindern)
– [ ] GPIO-Schalter-Steuerung mit angeglichener Leiterbahnllaenge (< 5 mm Skew) **Firmware:** - [ ] DFE/DF-Peripherie fuer 1 us Schalt-Slots (AoA-Modus) konfiguriert - [ ] IQ-Buffer-Groesse >= 2 x (Anzahl_Antennen + 8) Samples (Double-Buffer)
– [ ] Schaltmuster in RADIO-Peripherie-RAM geladen
– [ ] Phasenkalibrierungstabelle in Flash gespeichert und vor Winkelschaetzung angewendet
– [ ] Winkelschaetzalgorithmus ausgewaehlt (Phasendiff. fuer PoC, MUSIC fuer Produktion)
– [ ] Zeitfilter (Alpha-Beta oder Kalman) auf Winkelausgabe angewendet

**Tag-Seite:**
– [ ] CTE in Advertising-Set aktiviert (cte_type = AoA, length = 2-4 Einheiten)
– [ ] Advertising-Intervall entspricht Positionierungs-Update-Rate-Anforderung
– [ ] Tag-Antenne ist omnidirektional (Diagramm in Kammer verifizieren)
– [ ] Batterielebensdauer mit CTE-Overhead berechnet

**Einsatz:**
– [ ] Lokalisatorabstand fuer 20-80 Grad-Elevationskegel-Abdeckung gewaehlt
– [ ] Mindestens 3 Lokalisatoren mit LOS zu jedem Abdeckungsbereich
– [ ] Positionierungsserver mit Kleinste-Quadrate- oder Kalman-Fusion
– [ ] NLOS-Erkennung und -Zurueckweisung implementiert
– [ ] Site-Survey mit Ground Truth durchgefuehrt
– [ ] Genauigkeitsspezifikation in Zielumgebung verifiziert (nicht nur Kammer)

AoA Direction Finding transformiert BLE-Positionierung von einem 3-5 Meter RSSI-Kreis in eine submetergenaue Peilungskreuzung. Die Technologie ist ausgereift — BLE 5.1-SoCs mit Hardware-DFE, Referenzantennendesigns und Open-Source-Winkelschaetzungsbibliotheken sind alle verfuegbar. Die Ingenieursaufgabe liegt nicht in der Signalverarbeitung sondern in der physischen Schicht: Antennenarray-Design, RF-Schalter-Integritaet, Phasenkalibrierung und Mehrwegminderung. Machen Sie das richtig, und Ihr Bluetooth Beacon-System liefert submetergenaue Positionierung. Machen Sie es falsch, und Sie haben einen teuren RSSI-Sensor mit zusaetzlichen Antennen.