How-To-Tutorials · September 28, 2025

Set Up Nordic nRF52840 DK for Matter over Thread with Raspberry Pi Border Router

set up nordic nrf52840 dk for matter over thread with raspberry pi border router

Introduction

This tutorial will guide you through the process of setting up a Nordic Semiconductor nRF52840 Development Kit (DK) to communicate using Matter over Thread with a Raspberry Pi serving as a border router. By following the steps outlined below, you’ll be able to establish a connection between the two devices and facilitate seamless communication.

Prerequisites

  • Nordic Semiconductor nRF52840 DK
  • Raspberry Pi (with Raspbian installed)
  • USB cable for nRF52840 DK
  • Wi-Fi or Ethernet connection for Raspberry Pi
  • Development environment set up (e.g., VSCode, GCC toolchain)
  • Python 3 installed on Raspberry Pi
  • Thread and Matter SDK from Nordic Semiconductor

Parts/Tools

  • Nordic Semiconductor nRF52840 DK
  • Raspberry Pi (any model with Thread support)
  • USB-to-UART adapter (if needed)
  • Additional peripherals (monitor, keyboard, mouse for Raspberry Pi)

Steps

  1. Set Up the Raspberry Pi as a Border Router
    1. Install the required dependencies:
    2. sudo apt-get update
      sudo apt-get install git python3 python3-pip
    3. Clone the Thread Border Router repository:
    4. git clone https://github.com/project-chip/connectedhomeip.git
      cd connectedhomeip
    5. Build the Border Router:
    6. source scripts/bootstrap.sh
      source scripts/activate.sh
      ./scripts/build.sh
    7. Run the Border Router:
    8. ./out/BorderRouter/BorderRouter
  2. Program the nRF52840 DK
    1. Set up the development environment by following the Nordic SDK Getting Started Guide.
    2. Clone the Matter SDK:
    3. git clone https://github.com/project-chip/connectedhomeip.git
      cd connectedhomeip
    4. Build the Matter example application:
    5. source scripts/bootstrap.sh
      source scripts/activate.sh
      ./scripts/build.sh examples/platform/nrf52840
    6. Flash the application to the nRF52840 DK:
    7. nrfjprog --program build/nrf52840/Debug/Example.hex --chiperase --reset
  3. Configure Thread Network
    1. Use the Raspberry Pi to create a Thread network:
    2. sudo /usr/bin/ot-ctl thread start
    3. Set the PAN ID and channel:
    4. sudo /usr/bin/ot-ctl thread set panid 0x1234
      sudo /usr/bin/ot-ctl thread set channel 15
  4. Connect nRF52840 DK to Thread Network
    1. On the nRF52840 DK, use the following command to join the Thread network:
    2. otThreadStart
    3. Set the same PAN ID and channel on the nRF52840 DK:
    4. otThreadSetPanId 0x1234
      otThreadSetChannel 15
  5. Test the Connection
    1. On the Raspberry Pi, check the Thread network status:
    2. sudo /usr/bin/ot-ctl state
    3. Verify that the nRF52840 DK is listed as a connected device:
    4. sudo /usr/bin/ot-ctl neighbor

Troubleshooting

  • If the nRF52840 DK does not connect to the Thread network:
    • Ensure that the PAN ID and channel match on both devices.
    • Check the firmware version on the nRF52840 DK.
  • If the Raspberry Pi does not recognize the nRF52840 DK:
    • Verify USB connections and ensure drivers are installed.
    • Check that the Border Router is running correctly.
  • If there are issues with building the SDK:
    • Ensure all dependencies are installed and updated.
    • Consult the documentation for specific build errors.

Conclusion

By following this tutorial, you have successfully set up the Nordic Semiconductor nRF52840 DK for Matter over Thread communication with a Raspberry Pi functioning as a border router. This foundational setup allows for further exploration of IoT applications using Matter and Thread protocols. Happy coding!