Video 1

Video 2

Its pure python code, it processes all our UDP packets and estimates the 3D position.

Created a new Tag

We created a new tag which is much smaller (27x41mm + antenna) than the other one. It can be programmed via ISP or UART (if you burn a bootloader), features the same chip as the Arduino, so the firmware is compatible. We decided also to implement some sleep code. With some random LDO the tag features 1.5mA in sleep mode now. I am sure this can be better if we add some more sleep code to the uC and use a more efficient converter.

...and although the "t" in the URL on the board got wiped away by a drilling hole, I like it!


For a good and accurate indoor location system you require a lot of hardware. Although the range of the DWM1000 chip can do up to several hundret meters, indoors its different. Our test show, that you require an anchor every 10-30m to achieve good results indoors (open space).

Usually the anchor and tags have to do the ranging and the processing. In this approach each anchor has an additional Wifi interface to use the common infrastructure and offload the data in nearly realtime over TCP/IP. This way, hardware requirements and the processing of the anchors can be reduced to a minimum. Also, the tags do not need high processing power to calculate, which increases battery lifetime immense. It requires a PC do the range processing though.

The advantage of this approach is, anchors and tags have extremely reduced hardware requirements and are thus extremely low priced.

Accuracy Tests

There is a numerous number of accuracy statements, also for UWB ranging principles. But you never know how the measurements were done, so I did some myself with the tag and anchor in TWR mode. All figures below are drawn from unfiltered data. I have dozens of measurements, but just want to show you some in close range (LOS), and mid-long range (non-LOS). I want to do some further tests outside.

The accuracy is well in the 10cm for the LOS measurement. In case of a NLOS scenario it also makes sense that the PDF of the range measurement is a bit wider...

Maximum Range Tests

I decided to do some measurements on the maximum range of the DWM1000. The datasheet mentions 300m. According to the stated detections threshold this is a reasonable value at 6.5 GHz. In any case, you can use the DW1000 and then an external antenna which adds some antenna gain.

You can see on the picture, I mounted my hardware at the car, ensuring enough free space from the antenna to the car frame. I then took the tag and moved away... anchor and tag were using TWR with DW1000.MODE_LONGDATA_RANGE_ACCURACY mode.

I collected all range and power data and plotted these over time. See yourself: In the first plot you can see me walking away and coming back. In general 200m range is possible in this mode!

However, it seems that not all packets arrive at the other side (and vice versa) which results in "no range" measurements. I am pretty happy, ranges up to 50m seem pretty stable.

I also uploaded this measurement data in csv format, if you want to have a closer look.

I made a second try coming back from 200m while walking a bit slower than in the first measurement. You can see a pretty clear and stable range measurement from 130m on to 90m. Measurement comes back at 60m. The detection threshold in this mode can be as low as -105 dBm approximately. This power level is also very stable, so the signal seems to keep track of the LOS component and this has little impact from fading or other fluctuation.