Hello all,
I'm working on a localization system using the nRF52832 chip and Bluetooth Low Energy (BLE), but I'm running into challenges due to how BLE transmits signals. I need advice on the best approach to achieve accurate localization. Currently I am using example code of a 'Beacon' device from the NRF connect 2.9 library.
Background:
The goal is initially achieving 2D localization and potentially expanding to 3D localization in the future. The system will operate in a complex medium such as the human body, where signal propagation is highly variable. The object to be localized will be a small PCB constantly emitting a BLE signal, currently experiments will be done with the NRF52DK but eventually a personalized PCB and antenna will be created.
I plan to use an antenna array surrounding the BLE emitting device with 5-8 antennas designed in-house, which will pick up BLE signals emitted from the nRF52832 beacon. For now, I'm considering using an FPGA board to process the data from the antenna array to perform the localization calculations.
What I Know So Far:
-
BLE Transmissions Use Chirps, Not Continuous Waves:
- BLE typically uses Gaussian Frequency-Shift Keying (GFSK) modulation, meaning it transmits short packets with frequency hopping.
- This makes it hard to measure phase shifts directly because there’s no continuous sine wave like in traditional RF localization methods.
-
CTE (Constant Tone Extension) Is Not Available on nRF52832:
- I know that BLE 5.1 introduced Angle of Arrival (AoA) and Angle of Departure (AoD) techniques, which require CTE (Constant Tone Extension) to add a continuous signal for phase-based localization.
- However, nRF52832 does NOT support CTE—only nRF52833, nRF52840, and nRF52811 do.
- Without CTE, I cannot use standard BLE phase-based localization.
-
Alternative BLE Localization Techniques Exist:
- RSSI-based localization (measuring signal strength) is possible, but it's often inaccurate due to multipath interference and signal fading.
- Time of Flight (ToF) and RTT (Round Trip Time) are other approaches, but nRF52832 lacks built-in support for these.
My Questions:
-
What is the best localization method for the nRF52832 using BLE? Ideally in the cm range of accuracy, as the operational space to localize this BLE emitting pcb is within a 0.5x0.5x1m area. Most literature online describes localization performed in large rooms, giving higher acceptable margins of error.
- Should I rely on RSSI-based fingerprinting or another technique?
- Are there any better ways to get phase-related data from standard BLE packets?
-
Is there a way to generate a "continuous tone" or workaround the lack of CTE on nRF52832?
- Could I modify the BLE firmware to transmit a pseudo-continuous tone (e.g., by sending custom packets at a fixed frequency)?
- Would forcing a device into a continuous advertising state help with phase-based methods?
-
Has anyone successfully implemented high-accuracy BLE localization on nRF52832?
- Any real-world insights, libraries, or firmware modifications that worked?
Any advice, references, or alternative approaches would be greatly appreciated.
Thanks!