New, updated DWM1001 for Zephyr with examples project

I have updated + ported the original DWM1001 for Zephyr project to Zephyr 2.0 levels.
Take a look at [the README] (https://github.com/foldedtoad/dwm1001/blob/master/README.md) file in the project.

This project remove the dependency on a special version of Zephyr which contained the DWM1001 board definitions. Now the board definition is defined and merged at configuration time with the definitions in the base Zephyr distribution.

Also changed is the BLE support: now uses a custom 128-bit UUID for the service and characteristics. Other changes to the BLE support as well.

A new example addition shows how to configure and access the DWM1001’s embedded accelerometer (LIS2DH). See the board’s Device Tree file (nrf52_dwm1001.dts) for details.

This project should be used as a starting point for other DWM1001 projects.
This work was done on a VirtualBox VM running Ubuntu 18.04 LTS. Little testing was conducted on OSX or Windows. (OSX should be easy though.)

Constructive feedback welcomed.

3 Likes

Thank you for the community contribution!

Does this use PANS (Decawave’s stock, closed-source firmware) under the hood, or is it a completely new implementation? Are there any performance deviations or hardware capabilities in the Zephyr version (vs Decawave firmware)?

I love the idea of open source, but I’m just getting involved with DWM1001 and judging my options.

Hi there!..

I followed your instructions in the README.md file, but make fails with

./zephyrproject/zephyr/soc/arm/nordic_nrf/nrf52/soc.h:16:10: fatal error: nrfx.h: No such file or directory
   16 | #include <nrfx.h>

I know I’m missing something trivial but could not find it ;-(

BTW, I’m on a Mac with the current zephyr 2.4.99 distro.

Any comments?

Thanks,
–Rasit

Hi,

I was trying the examples you ported recently, but I am unable to get floating point output. I was wondering what am I missing?

Regards,

I faced the same issue and solved it, for some reason newer versions of Zephyr allows float support configuration (probably to be more resource efficient for small targets)
I listed the flags in my review here

But it’s simply CONFIG_NEWLIB_LIBC=y CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y

@foldedtoad I would like to thank you again for your contribution, it allowed me to start this higher level framework over Zephyr, where the deca driver porting done by you was the difficult step.
I mentioned the additions in this forum post. Of course each has his coding style and practices but if what I added is of any use or have a review or suggestions I’d be glad to help.