I was looking for Decawave 1001 for some ranging projects where besides the actual distance measures I need also to know the waveforms that the tag I’m trying to locate, receive from the anchors.
Is there an option to do that with the Decawave board or the only information in output are the actual distances between the tag and the anchors?
Up, no answer?
I just need to have some sort of output on USB, GPIO or whatever and be able to read this information with my Raspberry Pi
I’ve read section 4 https://www.decawave.com/sites/default/files/aps010_dw1000_wsn.pdf and it seems the waveforms are in some way coded/decoded by the Decawave. I need to read them via my onboard computer (Raspberry)
You cannot capture the UWB waveforms directly, except you are using a quite expensive tools like data aquisition systems with 10+GHz sample rate - the UWB pulses has sub-nanosecond duration typically.
You can read the demodulated I and Q data from DW1000’s CIR buffer.
Why do you need these waveforms?
Could you explain to me (or point out the section of the datasheet) explaining what are the demodulated Q and I?
I would like to know the waveform received by the decawave (or the information decawave uC reads before the actual processing to find out what’s the distance) because I would like to implement my algorithm to estimate the distance given the received waveform
I don’t think that information is available. The CIR buffer is the closest the DW1000 lets you get to the raw data and that’s after frame detection and correlation has taken place rather than the raw sample data.
The I and Q data in the CIR buffer are the in phase and quadrature phase signal levels post correlation.
Ah that could be a problem if the decawave itself already take some decision on what’s the actual frame with the message…
I’ll look into the CIR buffer anyway
It almost sounds like you are trying to use a chip costing a few $ to do a job that would normally require a $100,000 oscilloscope. I’m sorry but I don’t think you’re going to get what you are after.
Are you sure you need to see the actual waveform?
Maybe knowing the actual waveform received by the Decawave is too overkill as request but I would like to be able to process the information received by the Decawave by myself to estimate the position/distance. This is why I was asking if there’s a way to read the raw data decoded before the chip process it and then deliver in output the actual coordinates/distances
Basically, I was hoping that the Decawave was able to manage the UWB communication and deliver some kind of data that I would process with the Raspberry to estimate the final distance
Some basics (simplified):
DW1000 IC has a kind of internal counter running at 64GHz frequency (~15.6ps period). During receiving a frame the chip “timestamps” it, capturing the counter value.
It can also transmit the frame at the predefined time wrt this counter with the same accuracy.
If you know timestamps for each frame from each device - you can easily calculate time of flight and thus the distance.
There are some issues like clock offset between devices - this is solved by using double sided two way ranging scheme or using CIR buffer to calculate the clock offset of the other device.
So, I should be able, at least, to calculate the ToF knowing the value of the counter but now, the problem is: is the value of the counter accessible somehow?
That’s exactly what the DW1000 chip does. It is a radio that can send and receive data packets and give very accurate timestamps for when they were sent and received. The decawave chip doesn’t and can’t calculate any distances or positions.
Everything else, distance calculation, position calculation etc… is purely a function of firmware running on an external processor. A lot of people use one of the decawave modules with a built in processor and then run the decawave supplied PANS system that does do these calculations but there is no requirement to do that. They supply modules without processors or just the chip.
While you could do everything on a RasPi it’s probably not the best approach, the interrupt latency in linux will make for slow communications. A better approach would be to use a microcontroller to handle the real time communications (I use a 100MHz M4) and have that pass either raw timestamps or calculated ranges to the RasPi to perform further calculations on.
Look at the DW1000 user manual for details of what exactly the decawave chip does and doesn’t do.
Thanks a lot for the answer.
The main problem of using an external microcontroller is that I need to create my own board to connect all the devices (I think?)
With the Development Board that Decawave provides and a Raspberry Pi (that I already own) would be 100 times easier for me to implement everything and test it.