Zephyr is fast growing open source Real-Time Operating System (RTOS) with a big focus on IoT devices. It was originally developed by Wind River Systems, before it was taken over by the Linux Foundation in February 2016. Since then, it received some strong backing from big companies from the industry such as Intel, NXP, Nordic, …
Decawave is a Fabless Semiconductor company that enables highly accurate indoor and outdoor positioning with their pioneering DW1000 UWB transceiver. Some time ago they released the DWM1001 Development board, bringing a very cheap and easy solution to quickly get started with their products. You can run the standard stack from Decawave (PANS), but you can also program this board yourself and explore the wonderful world of RTLS yourself.
By opensourcing these examples we want to guide you through the process of writing your own software for the DWM1001 while leveraging the full potential of Zephyr.
Setting up the Environment
Setting up your programming environment is usually half of the effort and all pain :).
Zephyr uses CMake as its build system. This allows you to build applications on all the major operating systems (Linux, Windows and macOS). In order to get started, make sure you have checked the following boxes:
- Make sure you have some DWM1001-dev modules and a micro-USB cable
- Install CMake
- Install Ninja
- Install nrfjprog
- Clone the zephyr and zephyr-dwm1001 repo.
Find more details on setting up all the right tools in the README file of our repo.
Once you manage to successfully set up all the tools you need, you can start building your own DW1000-powered software, nice.
In the repo we’ve added a comprehensive set of examples that demonstrate many functions of the DW1000. These examples are originally made by Decawave for the STM32F10X MCU, and are ported here to the DWM1001’snRF52832 MCU. Useful information is printed to the console:
On top of the DW1000 examples, we have also added examples to test the userbutton and the LEDs. We plan to add some examples using BLE as well. If you are a developer and want to contribute to this project, feel free! We are open to pull requests and forks, this repo is open source.