Zigbee quick start guide
This guide demonstrates some of the basic concepts of the Zigbee network using the nRF Connect SDK and the nRF Connect for VS Code extension. It guides you through the installation of the required tools and programming of the required samples.
Overview
As part of this guide, we are going to program three Zigbee samples onto three different development kits in order to set up a basic Zigbee network composed of three devices, or nodes. A node is “a testable implementation of a Zigbee application on a single stack with a single network address, and on a single network”.
The figure shows the Zigbee network star topology we are going to set up. In this topology, the nodes have the following responsibilities:
Zigbee Coordinator initiates and maintains the devices on the network. It also chooses the key network parameters. The coordinator’s radio is continuously listening for frames.
Zigbee Router extends the range of the network. For this reason, the router has the radio enabled at all times. However, in the star topology it is not moving packets through the network.
Zigbee End Device receives messages from the parent device, in this case the coordinator.
Each of the samples we are going to use for forming the network is based on the single-chip, single-protocol architecture, uses the default configuration (that is without any additional sample extensions enabled) and has a clearly defined role:
Zigbee network coordinator demonstrates the Zigbee Coordinator role and supports only the network steering commissioning mechanism.
Zigbee light bulb demonstrates the Zigbee Router role and implements the Dimmable Light device specification, as defined in the Zigbee Home Automation public application profile.
Zigbee light switch demonstrates the Zigbee End Device role and implements the Dimmer Switch device specification, as defined in the Zigbee Home Automation public application profile. Once commissioned into the network, it looks for devices with the implemented Level Control and On/Off clusters and can control the one that answers first.
All these samples also implement the Basic and Identify clusters, which are the basic Zigbee clusters.
Zigbee topologies
Depending on the available device types and their number, Zigbee supports the following network topologies:
Star topology - where the coordinator communicates directly with the end devices and no routers are actively present, meaning they are either not present or not routing packets within the network.
Tree topology - where routers are located beyond their mutual radio range and are not able to communicate with each other. However, unlike in the star topology, the routers continue to move packets through the network.
Mesh topology - which allows full peer-to-peer communication.
In every Zigbee topology, each router and end device that joins the Zigbee network after its creation by the coordinator needs a parent device. When a device wants to join the network, it sends a beacon request to scan for available devices. The devices that can route the packets respond with beacons. Based on different factors of responses, such as signal strength, the new device selects the parent.
For end devices, the parent device, either a coordinator or a router, can store information meant for them. This is required because the end devices do not receive packets directly from other devices. Each packet meant for an end device needs to go through its parent, and the end devices need to regularly request and respond to packets from the parents. For example, in the nRF Connect SDK the Zigbee light switch device requests packets from the parent every three seconds. The end device does not route packets. It can also disable its radio to reduce the power consumption between the regular packet requests if the Sleepy End Device behavior is enabled.
Detailed reading
If you want to learn more about Zigbee topics and terminology mentioned in this guide, read the following pages:
Zigbee architectures page to learn more about the Zigbee architecture available in the nRF Connect SDK
Common ZCL terms and definitions section in the ZBOSS user guide
Zigbee topologies in section 1.1.4 of the Zigbee Specification
Sleepy End Device behavior section on the Configuring Zigbee in nRF Connect SDK page
Requirements
For this quick start guide, you need three development kits of the following types:
Hardware platforms |
PCA |
Board name |
Build target |
---|---|---|---|
PCA10056 |
|
||
PCA10100 |
|
||
PCA10095 |
|
||
PCA10112 |
|
You can mix different development kits.
Note
Make sure that you have three development kits before proceeding to the next steps.
Software requirements
For this quick start guide, we will install the following software:
Toolchain Manager - An application for installing the full nRF Connect SDK toolchain.
Microsoft’s Visual Studio Code - The recommended IDE for the nRF Connect SDK.
nRF Connect for VS Code extension - An add-on for Visual Studio Code that allows you to develop applications for the nRF Connect SDK.
nRF Command Line Tools - A set of mandatory tools for working with the nRF Connect SDK.
SEGGER J-Link - Tool for handling the serial connection.
Set up the software
The following steps are a simplified version of the nRF Connect SDK’s Installing automatically procedure.
To set up the required software, complete the following steps:
Install the Toolchain Manager app:
Download nRF Connect for Desktop for your operating system.
Install and run the tool on your machine.
In the APPS view, click Install next to Toolchain Manager.
The app is installed on your machine, and the Install button changes to Open.
Open the Toolchain Manager in nRF Connect for Desktop.
Click SETTINGS in the navigation bar to specify where you want to install the nRF Connect SDK. Then, in SDK Environments, click the Install button next to the nRF Connect SDK version that you want to install. The nRF Connect SDK version of your choice is installed on your machine.
Click the Open VS Code button. The installation wizard checks whether you have the following software installed:
Microsoft’s Visual Studio Code
nRF Connect for VS Code extension
nRF Command Line Tools (with SEGGER J-Link)
If any of these items is missing, you are taken to its installation page to complete the setup. At the end of the process, the Visual Studio Code main window opens.
Program the samples
To program the samples, complete the following steps:
Open Visual Studio Code.
If you installed the nRF Connect SDK using the Installing automatically steps, you can click the Open VS Code button next to the version you installed.
Complete the steps listed on the How to build an application page in the nRF Connect for VS Code extension documentation.
Program the application to the board:
Connect your development kit using the serial port.
In the Connected Devices View, click Refresh Connected Devices. Your development kit appears on the list.
In the Actions View, click Flash.
When the programming is done, the LED 3 on the development kit turns on to indicate that the Zigbee network is open. After some time, it turns off and the Zigbee network needs to be reopened (see below).
Add the light switch application. Repeat steps 3 to 9 for the Zigbee light switch sample. The path to the application files is
nrf/samples/zigbee/light_switch
.Add the light bulb application. Repeat steps 3 to 9 for the Zigbee light bulb sample. The path to the application files is
nrf/samples/zigbee/light_bulb
. The LED 4 turns on when the application is started.Press Button 1 on the development kit programmed with the network coordinator sample to reopen the Zigbee network. After some time, the devices join the Zigbee network. On the development kit programmed with the light bulb sample, LED 3 turns on when the light bulb joins the network. On the development kit programmed with the light switch sample, LED 3 turns on when the device joins the network and LED 4 turns on when the light switch finds a light bulb to control.
- Reopening the network
If you find that you are having issues with your devices joining the Zigbee network, it may be because the network needs to be reopened manually. If the network is open, then LED 3 on the development kit programmed with the network coordinator sample will be on. If LED 3 is not on, then the network is closed and needs to be reopened again.
To reopen the network, press Button 1 on the development kit that has been programmed as the network coordinator. The network remains open for 180 seconds by default at startup, and after Button 1 is pressed. After 180 seconds have passed, the network will close and need to be re-opened.
For more information, see the User interface section from the Zigbee Network coordinator sample.
Test the network
After forming the Zigbee network, test the interaction between the devices:
Press Button 2 once on the development kit programmed with the light switch sample to turn off the light bulb’s LED 4.
Press Button 1 once on the development kit programmed with the light switch sample to turn on the light bulb’s LED 4.
Press and hold Button 2 on the development kit programmed with the light switch sample to decrease the light bulb’s LED 4 brightness.
Press and hold Button 1 on the development kit programmed with the light switch sample to increase the light bulb’s LED 4 brightness.
What to do next
After you complete this quick start guide, we recommend that you get familiar with the following topics:
If you want to start configuring samples:
Zigbee sample variants - see Zigbee sample pages
If you want to test a multiprotocol solution, see Multiprotocol Bluetooth LE extension of the light switch sample.
If you want to start developing for co-processor designs:
If you want to learn more about ZBOSS:
ZBOSS user guide - see API documentation