Video 1 (Single Tag)

Video 2 (Multi Tag)

Its pure python code that processes all our UDP packets and estimates the 3D position of multiple tags

Level 2. (July 2017)

We went to the next level. Localino v2.0 is an STM32F1 series based indoor location anchor or tag. The cool thing, it has a massive amount of flash and memory, additional I/O pins to stack up additional sensors and is code compatible to the v1.0 / v1.3 hardware. Jiaey! There are some other minor adaptions like a more robust USB connector, sideways switch... and for sure, the Anchor also has Wifi.

If you are used to Arduino IDE you can use it and still flash this device. Anyhow, also CoIDE or Keil will work. It is also compatible to decawaves API which also uses an STMF1 series MCU.

We have also updated our firmware and the python processor that now supports the location and tracking of multi-tags in a self-organizing network. All you require is a minimum of 3 Localino v2.0 anchor and some Localino v2.0 tags. The self-organizing approach is pretty cool and works really well. There is no scheduler required at all, which makes the system really scalable.

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...

Read more »