I have 5 dwm1001-dev boards. I want to get all the pairwise distances between the tags into one connected to my laptop. I am reading the documentation but I have not found a suitable solution so far, i.e., I simply want to get the distance data and collect them. I did something similar with arduino mini pro and I suppose the dwm1001-dev boards offer more flexibility. Could you please let me know the best way or orient me how to do this?
For the sake of clarity, I want to find the simplest way to get all the pairwise distances between tags to one tag connected to a laptop via USB (UART).
As the DWM1001-Dev boards feature Bluetooth-Low-Engery (BLE), it would be recommended to send data this way to your main board, as it doesn’t use any air time on the UWB frequency range - correct me if I’m wrong. I suppose you are developing with the Nordic nRF5 SDK, so you can check out this link to get examples on how to send data to other nRF52832 devices. On the page, all the way down, there are multiple BLE examples given.
Thank you for your answer. But I would like to get the pairwise distances via the UWB message. If it is not possible, can I get at least al the distances a node gets.
These days I am looking for the documentation available but I am not able to find any example. I seem to understand that I should use the SEGGER IDE, are not there examples to do this or modify the software?
The only information I need are the distances between nodes.
Technically, this is possible, yes. There are different types of data frames that can be sent by the chip, some are frames without data payload in them but you can also send custom data up to 1024 bytes (See section 3.1 and 7.2.11 of the DW1000 User Manual). This means, that you could calculate the distance between the pairs on a host controller and then either use the data packet used for the measurement or use a seperate packet for transmitting the distance written to the TX_BUFFER register.
Again, thank you for your answer and your time. Still, I am confused on how to proceed. Can I do what you mentioned with the DWM-1001-DEV? I am reading the “DW1001 Firmware Application Guide” document and I am not able to find any function (Section 5. API Function Descriptions) where you can get distances between specific nodes. Thus, I’d like to ask two more questions:
1- Can we bypass the PANS library with the DWM-1001-DEV? Is this the way you meant in your previous post?
2- Is there any open-source project that can be used with the DWM-1001-DEV?
3- In the “DW1001 Firmware Application Guide” document", I read “1) Location engine improvements - is possible to retrieve distances between TN and ANs…Data offload is possible only via IoT data”. What is IoT Data, we wanted to get the distances with the highest possible frequency (that’s why I mentioned to send this information within the own UWB message).
I feel like there is missing some basic information about the DWM-10001-Dev board here.
The dev board simply is an extension for the DWM1001C with an USB-translator on-board for easy access to the main chip, a nRF52832.
Let me show you some of the hardware for further understanding.
The DWM1001C looks the following:
The main chip isn’t your DW1000 uwb chip. It actually is the smaller chip on the left, containing a programmable controller.
The uwb chip (DW1000) is in simple terms a “dumb” chip, that just acts as the nRF is telling it to do. The DW1000 just contains of so-called registers, that store almost all of the DW1000s configuration. The nRF has to program those configuration values into the DW1000 before being able to use it.
All that is taken care of by your PANS library, but at some point you probably have to go with your own driver anyway, because the PANS library is restricted to development use only and cannot be used commercially.
So, to answer your questions:
Yes, you can bypass the PANS library. Currently, you are accessing methods of the PANS library, but you can write your own methods or even whole libraries yourself as well. It’s all just reading and writing to the DW1000 via SPI (Serial Peripherial Interface), a communication protocol used in many modern electronics.
Yes, there are many projects on github using the DWM1001. Whether those projects are open source and usable is a different question.
The PANS library operates on a higher level than you expect right now, meaning all the fancy stuff with communicating the distances between nodes is already being taken care of in the background. That is why you can’t find a distance method.
Typically, you would set the DW1000s configuration to either being a tag or node by calling “dwm_cfg_anchor_set” or “dwm_cfg_tag_set”. You then could get your location by “dwm_pos_get”.
I didn’t read quite much into the library as for me it is more of a nice-to-have and a proof of concept. I’d highly recommend to write your own code and library.
Finally, the DW1000 is a fine piece of work, but it can be quite hard to work with, especially for beginners in the field.
As you wrote “we” in your first question, may I ask what kind of goal you’re looking forward to achieve? Is it more of a test and see where it goes or do you want to build your own RTLS commercially?
Again, thank your for your time and your answer.
I was aware of the first part of your message (i.e., the nRF52832 is the MCU controlling the DWM1000).
I can understand the limitations of Decawave-Qorvo libraries in terms of the localization algorithm itself, but I am a bit surprised the PANs library does not allow to just get the distance data, which is the very basic (and essential) magnitude that an UWB system can provide. That’s why I asked for any open-source project to use as starting point, but nobody in the forum (except you) answered.
Regarding your question, this is just a master degree project I am carrying out with some of my students, basically to get the distances and design a centralized localization algorithm for educational purposes. There is no purpose to sell anything commercially.