MDEK1001 Simple distance measurement


I have the MDEK1001 dev kit hooked up and reading tag position in 3d space just fine using 4 anchors and 1 tag. I am using a 6th tag as a passive tag connected to a windows computer with terminal program.

Is there an easy way to just read simple distance from one tag to another, or one tag to an anchor with this setup but with less anchors?

I really just need to know how far away one tag is from my anchor or two tags are from a single anchor. I would read this in using my base station computer with passive tag via com connection.

Thank you


I had the same problem, and found two possible workarounds :P. In the first one you can use the passive node to sniff the distances from an active tag to the anchors when you have only two working anchors (if you turn the third anchor on, it will start giving the position instead).

The second method, which I used most, was using the “nRF connect” android APP to get notifications from the tag. You just connect to the tag using bluetooth, and request notifications from the 003bbdf2-c634-4b3d-ab56-7ec889b89a37 characteristic. The Tag will start sending you the distance to the anchors (if you have one or two anchors on) or its calculated position if you have 3+anchors (I’m not sure, but I believe once I compiled a code for the tag without the localization engine on, and in this case I could get the distances to 3 anchors, need to check if my memory is not tricking me).

What you will get is something like this:
A 17:02:56.780 “(0x) 01-02-08-C9-38-02-00-00-64-39-4E-74-0B-00-00-64” received
Where you have (from what I could grasp from my tests):

  • First byte 01 means distances to anchors, 02 means calculated position
  • Second byte number of anchors being reported/ used
  • Third and forth bytes anchor address (in this case C908 was my first anchor)
  • Fifth to eigth bytes: distance, in my case the distance to the first anchor was 0x00000238 = 568mm
  • Ninth byte = quality factor of the distance, in this case 0x64 =100%
    Then you repeat the same 7 bytes for the second anchor, which was 4E39.

Just for information, this is how it looks like when you get position instead ofdistance to anchors:
A 11:14:18.884 “(0x) 02-A6-09-00-00-2E-07-00-00-9C-04-00-00-32-03-08-C9-D3-0C-00” received
In this case you get 02, followed for 4bytes for the X position, 4 bytes for Y and 4 bytes for Z. After that you have a byte for the quality factor (0x32 in this case), the number of anchors being used (0x03) and the same sequence as described above for the distance to each anchor… However the module only sends 20 bytes, so you actually miss the distance to the anchors (I didn’t look further if there was a way to get the full frame, I’m sure there must be as the Decawave software shows you this information).

Best regards!

Thanks Chplorenz, I will give that a try.

I have a Windows 7 computer that does not have many good options for getting the BLE data. I tried the nRF tool you mentioned and it worked great on my Android phone. In option 1 above you mention the passive tag. If I connect the passive tag to my pc via usb and try the les command over the COM connection it does not give me any data. I can get all of the other data from the passive tag status and such. If I power up all 4 anchors then the les command works to get x,y,z positon data but I need 4 anchors running.

If I only have 2 anchors the les command no longer gives me any response. Will this work to do the same setup but use only 2 anchors to get discrete distance data from the 2 anchors to my floating tag using the hardwired passive tag on my computer?

Thanks for any help you can provide.

“les” command on a passive device will only print x,y,z (location) information for each tag in the system

“les” command on an active tag (over shell) will print our ranges to each anchor and x,y,z (if LE enabled and location possible, must have at least 3 ranges, anchor geometry, etc.)

in your system if you want ranges, then you have to log on the tag or the Android App.

tag sends location + distances in BLE messages
tag sends only location in UWB messages
passive node only uses UWB

So I am still really struggling with this.
We have a lot of customers still using windows 7. I have tried many ways to use my Computers BLE dongle to connect to the tag and it is close but I still think windows 7 is lacking and things I tried using library will in the end not work.

With the passive tag I have connected to my computer using USB mapped as a COM port I can use the les command from hyperterm but it will only work with 3 anchors reporting xyz position.

I would love to use the USB connected dwm1001 with only 1 roaming tag and 2 anchors to get distance from roaming tag to the 2 anchors.

chplorenz you hand mentioned sniffing with the passive tag. Is there an easy way to do this?

Any thoughts on this would be great. Thanks in advance.
So reading more of the API if I use the dwm_loc_get TLV request (not in shell mode) but just sending serial commands
would that give me what I would need? (Type 0x0C)

4.3.9 dwm_loc_get

[size=x-small][size=x-small][font=Calibri,Calibri][size=x-small][font=Calibri,Calibri] [/font][/size][/font][/size]Description [/size]

[size=small][font=Calibri,Calibri][size=small][font=Calibri,Calibri]Get last distances to the anchors (tag is currently ranging to) and the associated position. The interrupt is triggered when all TWR measurements have completed and the LE has finished. If the LE is disabled, the distances will just be returned. This API works the same way in both Responsive and Low-Power tag modes. [/font][/size][/font][/size][size=x-small][font=Calibri,Calibri][size=x-small][font=Calibri,Calibri]Parameter [/font][/size][/font][/size]

@chplorenz, Thank you so much for your “how to parse results” post.

Did I somehow miss where this is documented in the official documentation?

Is angle and azimuth data also available over BLE?