Förderjahr 2018 / Project Call #13 / ProjektID: 3441 / Projekt: CoMatrix
We aim to build code for constrained nodes to communicate via CoMatrix and a gateway which can translate between regular Matrix and CoMatrix traffic. As outlined in our CoMatrix architecture [1] we chose IEEE 802.15.4 as PHY and MAC communication layer between CoMatrix clients (i.e. SAMR21-xpro) and the CoMatrix gateway (i.e. Raspberry Pi). A Raspberry Pi doesn't support 802.15.4 out of the box, therefore we need a module to add this functionality to our gateway.
These are the three 802.15.4 modules which are tested:
- Openlabs Raspberry Pi 802.15.4 radio: https://openlabs.co/store/Raspberry-Pi-802.15.4-radio
- Openlabs Pi 6LoWPAN SLIP radio: https://openlabs.co/store/pi-6lowpan-slip-radio
- Nordic nRF52840 Dongle: https://www.nordicsemi.com/Software-and-tools/Development-Kits/nRF52840-Dongle
On top of 802.15.4 we will either use 6LoWPAN (Openlabs modules) or OpenThread (which is also based on 6LoWPAN; Nordic module).
Openlabs Raspberry Pi 802.15.4 radio
This module adds support for 6LoWPAN over IEEE 802.15.4 to the Raspberry Pi (RPi). It plugs directly onto pins 15-26 of the RPi's P1 header, leaving the remaining pins free for other purposes. Its intended use is to turn an RPi into a border router for a 6LoWPAN network, but it can be used with any other microcontroller with an SPI port and four GPIOs. Linux has 6LoWPAN and 802.15.4 implementations, as well as a driver for this module.
This module utilizes an AT86RF233 2.4GHz (802.15.4) transceiver [0]. The SAMR21-xpro microcontroller, which we will use for the CoMatrix clients, also has the same transceiver built-in (cf. [1]).
Openlabs Pi 6LoWPAN SLIP radio
This is another module to make a border router out of a Raspberry Pi. The "Openlabs Raspberry Pi 802.15.4 radio" module exposes the transceiver to the Pi and has Linux running the network stack. The "Openlabs Pi 6LoWPAN SLIP radio" instead has a microcontroller (NXP KW41Z) to run the network stack and talks IPv6 to the Pi over the UART via a SLIP link. The SWD pins are also routed to the RPi for programming and debugging.
It is possible to run e.g. RIOT-OS on the NXP KW41Z [2]. The RIOT gnrc-border-router example is a good starting point [3]. It sets up a SLIP interface to the RPi and serves a /64 on the wireless interface and routes between them. It is also possible to run the OpenThread firmware for frdm-kw41z without modification [4].
The main difference between attaching an SPI transceiver directly to Linux on the RPi and adding a microcontroller that runs the network stack is that the network stacks in Linux and embedded operating systems (like RIOT) are still in different states of maturity and that the interoperability between platforms may be incomplete. Therefore it would be possible to run RIOT on the microcontrollers (i.e. CoMatrix clients) and also RIOT on the border router side (via NXP KW41Z).
Nordic nRF52840 Dongle
This module is tested because we are also evaluating if OpenThread [5] is an option as alternative to 6LoWPAN+CoAP for our architecture (cf. [1]). OpenThread is an open-source implementation of Thread from Google (Nest). Thread is an IPv6-based, low-power mesh networking technology for IoT products, intended to be secure. Thread uses 6LoWPAN, which in turn uses the IEEE 802.15.4 wireless protocol with mesh communication.
An OpenThread border router (OTBR) is a Thread Certified Component on the Raspberry Pi 3B with a Nordic nRF52840 NCP [6]. There is an additional tutorial available to setup an OTBR by using a Raspberry Pi 3B and a nRF52840 dongle at [7].
We will keep you updated on our evaluation results.
________________
Links:
- [0] https://www.microchip.com/wwwproducts/en/AT86rf233
- [1] https://www.netidee.at/comatrix/comatrix-architecture-testbed
- [2] https://riot-os.org/
- [3] https://github.com/RIOT-OS/RIOT/tree/master/examples/gnrc_border_router
- [4] https://github.com/openthread/openthread/tree/master/examples/platforms/kw41z
- [5] https://openthread.io/
- [6] https://openthread.io/guides/border-router
- [7] https://wiki.makerdiary.com/nrf52840-mdk-usb-dongle/OTBR/