Difference between revisions of "NRF52840 Thread NCP"

From HiveTool
Jump to: navigation, search
 
(One intermediate revision by the same user not shown)
Line 5: Line 5:
 
The nRF52840 dongle must be programmed with the NCP application.  One way is to use the nRF Connect program.
 
The nRF52840 dongle must be programmed with the NCP application.  One way is to use the nRF Connect program.
  
 +
==Background Resources==
  
OpenThread Border Router done with a different dongle:
+
*OpenThread Border Router done with a different dongle: https://wiki.makerdiary.com/nrf52840-mdk-usb-dongle/OTBR/
https://wiki.makerdiary.com/nrf52840-mdk-usb-dongle/OTBR/
+
*Playing with Thread and MQTT-SN on Nordic nRF52840: https://electronut.in/nrf52840-thread/
 +
*Programming the nRF52840 Dongle from nRF Connect: https://groups.google.com/forum/#!topic/openthread-users/9TFIATWWrxw
 +
*Nordic nRF5 Software Development Kit for Thread and Zigbee: https://www.nordicsemi.com/DocLib/Content/SDK_Doc/Thread_SDK/v2-0-0/index
 +
*OpenThread CLI Reference: https://github.com/openthread/openthread/blob/2bce9557e62c451307d1a4d944c3eaf69f71573c/src/cli/README.md
 +
*Network Discovery and Formation: https://openthread.io/guides/thread-primer/network-discovery
 +
*Thread Commissioning https://openthread.io/guides/build/commissioning
  
 
Playing with Thread and MQTT-SN on Nordic nRF52840:
 
https://electronut.in/nrf52840-thread/
 
 
 
https://groups.google.com/forum/#!topic/openthread-users/9TFIATWWrxw
 
 
https://www.nordicsemi.com/DocLib/Content/SDK_Doc/Thread_SDK/v2-0-0/index
 
  
 
==Install Network Co Processor (NCP) code on nRF52==
 
==Install Network Co Processor (NCP) code on nRF52==

Latest revision as of 04:42, 23 January 2019

Pi Border Router with nRF52840 thread NCP

This is an attempt at turning the Pi into a thread border router using the nRF52840 dongle as the Network Co Processor (NCP).

The nRF52840 dongle must be programmed with the NCP application. One way is to use the nRF Connect program.

Background Resources


Install Network Co Processor (NCP) code on nRF52

Download nRF Connect program.

./nrfconnect-2.6.1-x86_64.AppImage

Downloaded the nRF5 SDK for Thread and Zigbee 2.0.0

https://www.nordicsemi.com/Software-and-Tools/Software/nRF5-SDK-for-Thread-and-Zigbee/Download

Write the NCP hex file to the dongle.

Set up the border router on the Pi:

You need both border router and wpantund:

Install borderrouter code

https://openthread.io/guides/border-router/build

git clone https://github.com/openthread/borderrouter
cd borderrouter
./script/bootstrap
.configure --enable-debug  --enable-ncp --enable-ftd --enable-commissioner --enable-joiner --enable-border-agent --enable-border-router --enable-commissioner --enable-udp-forward
make
sudo make install

Install wpantund

git clone https://github.com/openthread/wpantund.git
cd wpantund
./bootstrap.sh
./configure --sysconfdir=/etc --enable-debug
make -j4  // -j4 (use 4 cores) may have locked it up
make
sudo make install

Install OpenThread

git clone https://github.com/openthread/openthread

./configure --enable-ncp --enable-ftd --enable-commissioner --enable-joiner --enable-border-agent --enable-border-router --enable-commissioner --enable-udp-forward


Check wpan status

sudo wpanctl status

Install radvd

Add interface wlan0

sudo vi /etc/radvd.conf
interface wlan0
{
   AdvSendAdvert on;
   prefix FD00:1122::/64
   {
       AdvOnLink off;
       AdvAutonomous on;
       AdvRouterAddr on;
   };
};

interface bt0
{
   AdvSendAdvert on;
   prefix 2001:db8::/64
   {
       AdvOnLink off;
       AdvAutonomous on;
       AdvRouterAddr on;
   };
};


sudo systemctl stop radvd

Add IPv6 routes

MUST ADD ROUTES ON ALL MACHINES!

route -6 add 2001:0002::/48 metric 1 dev eth0

On Pi:

sudo route -6 add fd00:1122::/64 metric 1 dev eth0

On Debian

ip -6 route add fd00:1122::/64 dev wlp1s0

Install libcoap

https://learn.pimoroni.com/tutorial/sandyj/controlling-ikea-tradfri-lights-from-your-pi

https://github.com/smartuni/examples/wiki/libcoap

sudo apt-get install build-essential autoconf automake libtool
git clone --recursive https://github.com/obgm/libcoap.git
cd libcoap
git checkout dtls
git submodule update --init --recursive
./autogen.sh
./configure --disable-documentation --disable-shared
make
sudo make install

Or maybe just:

sudo apt-get install libcoap-1-0-dev

https://github.com/RichardChambers/raspberrypi/tree/master/coap




Commissioning

https://openthread.io/guides/build/commissioning


wpanctl

wpanctl:wpan0> join OpenThread -p 0xABCD
Joining WPAN "OpenThread" as node type "end-device", panid:0xABCD
Partial (insecure) join. Credentials needed. Update key to continue.
wpanctl:wpan0> join OpenThread -x 0xDEAD00BEEF00CAFE
Joining WPAN "OpenThread" as node type "end-device", xpanid:0xDEAD00BEEF00CAFE
Partial (insecure) join. Credentials needed. Update key to continue.

nRF52840 CoAP code examples

https://github.com/cellabox/cellabox