How to send custom message over UWB? DW1001

I want to send additional parameters along with positional data in both directions that is from tag to the listener and vice versa.

For example, if I want to send three variables a,b, and c from tags to listener along with positional data how can it be done? I am using DW1001 device. I was exploring the examples and source codes but nothing exists that directly tells me how to do it.


This cannot be done in current release.

This should be possible in the next release.

Any idea about the actual date for new firmware release? if we write own firmware do you think it is possible (not sure what needs to be done)?

If you write your own firmware you can send anything you like. You can define the packet structures to include anything you want and you can control if and when those packets are sent.

Any starting point for learning it? what do I have to use?

From a data point of view the DW1000 is very simple, all the complexity is in the configuration and timing measurement. The data transmission process can be summarized as:

Load a data packet into a memory location.
Load the packet size into a register.
Enable transmit.

Wait for a receive interrupt.
Read the packet size.
Read the correct number of bytes from the DW1000 into a buffer.

What the size and contents of the data packet used is up to you, normally it’ll be a struct or if you have multiple packet types a union of structs.

The simplest approach would probably be to codify the supplied code to use a different data packet structure. As for how exactly to do this I can’t offer much help, I’ve not used the decawave supplied software since it didn’t do what I needed.

1 Like

Great. So you wrote your own firmware? basically, I can use DWM1001 as it is DWM1000 + NRF52 device. What libraries did you use ?

And you can use a DWM1000 as if it’s a DW1000.
I was using an mBed platform for the prototype so I used the DW1000 driver from here as a starting point for the communications to the device, modified it a little to add extra features as needed (e.g. they have a send frame and send string but only receive string not a more generic receive frame) and wrote my own two way range protocol on top of it.
I then used the mpfit library for least squares position calculations.