Ultra Wide Band Extension

From GCtronic wiki
Jump to: navigation, search


The following figure shows the architecture details during the development phase:

On the nRF52832 the firmware is developed using the C API based on the PANS stack released by Decawave. The communication with the Elisa-3 robot is accomplished through I2C (the robot is the slave). The nRF52 is programmed/debugged through the SWD interface using an external nRF dev kit attached to the computer via USB. An additional UART is attached to the UWB module in order to get logging info.


Power taken from the regulated 3V3 digital of Elisa.
On Elisa need to be added 2 simple female connectors, 2 and 3 pins. Painted in white on one side to help not crossing the cabling.

I2C protocol

The nRF52 (master) writes all the actuators at once and read all the sensors data at once.


At the moment there are two firmwares for nRF52: one configures the module as a TAG node and the other one as an ANCHOR node. Once the two modules are programmed, the Android application is used to put the two nodes in the same network. Once configured, the TAG node will receive distances information and reflects the distance to the RGB led (intensity proportional to distance) while printing also this information to the UART.
The nRF52 poll the Elisa-3 robot at about 20 Hz in a separate thread.

Source code

Both the examples (dwm-simple-anchor and dwm-simple-tag) are based on the dwm-simple example that can be found in the Decawave source code package.

To build the examples, clone the repo (https://github.com/gctronic/dwm1001_anchor and https://github.com/gctronic/dwm1001_tag) inside the DWM1001_DWM1001-DEV_MDEK1001_Sources_and_Docs_v9\DWM1001\Source_Code\DWM1001_on_board_package\dwm\examples directory. Then use the Segger Embedded Studio for ARM to build the project.

The Elisa-3 firmware can be cloned from the repo https://github.com/gctronic/elisa3_firmware_advanced, uwb branch. The project can be built with Atmel Studio. The selector must placed in position 15.


There is the possibility to update the firmware of the nodes via OTA (Over The Air).
First the initiator anchor is updated via BLE, then this anchor will automatically update the remaining network nodes via UWB.

For more information refer to DWM1001 Firmware API Guide, chapter 4.3.
Not tested yet.


  1. DWM1001_Datasheet.pdf
  2. DWM1001_Firmware_User_Guide.pdf
  3. DWM1001_Firmware_API_Guide.pdf
  4. DWM1001_Gateway_Quick_Deployment_Guide.pdf
  5. System_Overview_and_Performance_for_DWM1001.pdf