Sort by » date activity comments

303 blog posts

by Martin Børs-Lind

Difference between nRF52840 Engineering A and B reference designs

After the release of nRF52840 Engineering B we have received several inquiries about the difference between Engineering A (nRF52840-QIAAAA) and Engineering B (nRF52840-QIAABB) reference designs. One reason for the inquiries is that after swapping Engineering A with Engineering B samples customers experienced that the radio stopped working. The symptoms being that everything but the radio seemed to work in their application.

While this is highly unfortunate, it is to be expected because there was a vital design change in Engineering B. In Engineering A the two DEC2 pins (pin E24 and A18) and the DEC6 pin (pin B5) were internally...

by Coleman McFarland

Rust bindings to nrf52 series

In mid-2017, I came across this project by James Munns. It essentially wraps the C SDK for nRF52 development boards, and provides bindings that can be called from Rust. James gave a talk to the Rust DC Meetup, remotely over video conference. This talk inspired me to buy a couple of nRF52 dev boards.

I'd like to announce that here, in Nordic's official channels, because I'd like more embedded developers to become aware of it. Rust is a language that has the ability to compile down to native code with zero runtime, and no operating system. In...

by Daniel Veilleux

Show And Tell: Poly - Building an RC Airplane The Hard Way

I've been looking for an excuse to write a low-latency, Enhanced ShockBurst (ESB), radio protocol that I can reuse when building remote control toys. Although Bluetooth is great for a lot of use cases, working with the Nordic radio's proprietary mode offers additional flexibility -- in this case, this means achieving lower latencies and streaming packets in a UDP-like manner (versus BLE's reliable transport). I recently found an opportunity to scratch this item off my list when the girl agreed that it would be fun to surprise my nephew by turning one of his giant, polystyrene gliders into...

by kbaud

Bluetooth on a desktop computer (Windows, Mac, Linux)

Posting this here in an effort to save the time of anyone else who is wanting to control a device from a desktop computer.

Our application is a motor control device that is wirelessly controlled from a desktop computer. This is not really what BLE was designed for. BLE is all about low power and is easy to connect to a smartphone. Connecting to a desktop computer however, is much more difficult.

The real trouble is on the PC end. Coming up with software that communicates to a BLE chip. Here's some things I tried...

You can use a...

by Nguyen Hoan Hoang

Writing BLE firmware with a few lines of code part 2

Second part of the series Writing Bluetooth LE firmware the easy way blog. This second part shows how to read and advertise the environment sensor data (BME280 using Motsai Neblina module and BME680 using breakout board). Still with only a few lines of code. See blog page here.

Complete code bellow advertise Temperature, Pressure, Humidity data from #BME680 & #BME280.

#define DEVICE_NAME                     "EnvSensorTag"                            /**< Name of device. Will be included in the advertising data. */

#define TPH_BME280
#define TPH_BME680

#ifdef NRF52
// Use timer to update data
// NOTE :    RTC timer 0 used by radio, RTC Timer 1 used by SDK...
by Nguyen Hoan Hoang

Writing BLE firmware with a few lines of code

Writing a BLE firmware can now be done with a few lines of code. The code example bellow is all you need to write for a non-connectable BLE firmware that advertise a counter value every second in the manufacturer private data. More details with full Eclipse GCC project ready to use on the embedded software blog page.

#include <string.h>

#include "app_util.h"

#include "istddef.h"
#include "ble_app.h"

#define DEVICE_NAME                     "Advertiser"

#define APP_ADV_INTERVAL                MSEC_TO_UNITS(100, UNIT_0_625_MS)

uint32_t g_AdvCnt = 0;

const BLEAPP_CFG s_BleAppCfg = {
    { // Clock config nrf_clock_lf_cfg_t
#ifdef IMM_NRF51822
        NRF_CLOCK_LF_SRC_RC,    // Source RC
        1, 1, 0
        NRF_CLOCK_LF_SRC_XTAL,    // Source...
by Bob Boys

nrF52 Tutorial: ETM Instruction Trace with Keil MDK


I wrote a tutorial on using the nrF52 Development Kit with Keil MDK.

This document features essential debugging capabilities of the nrF52 series.

ETM Instruction Trace: provides program flow debugging including Hard Fault crashes, Code Coverage (.gcov) and Performance Analysis. A Keil ULINKpro or Segger J-Trace is needed.

Serial Wire Viewer (SWV) is data trace. Can view data writes, exceptions and interrupts, counters and more. Up to four variables can be displayed in a graphical format real-time.

A tickless RTOS using Keil RTX example is included. RTX has a BSD or Apache...

by viewtool

One minute to understand BLE advertising data package

Note: only registered user could see all pictures by log in. One minute to understand BLE advertising data package BLE =》 BTLE (Bluetooth Low Energy)

  1. How to capture BLE advertising data (full channel at 37,38,39 simutanueously)
    • Hardware:One BLE device (has feature of advertising);
    • Software:Hollong BLE sniffer software Download: ... 0option=com_content

  1. Profile BLE Advertising package introduction:
    • Payload data maximum length: 37 bytes
    • Advertising channels:37,38,39 (hopping)
    • Transmission power:usually 0dBm, Maximum 10dBm

In each section below, pay attention on blue color marked portion (the raw data...

by viewtool

One minute to understand BLE connection data package

1.Profile During connection procedure of BLE, there are three packages: SCAN_REQ, SCAN_RSP 和 CONNECT_REQ。 SCAN_REQ: Scan request, issued by MASTER DEVICE, send to SLAVE DEVICE,sent by the Link Layer in the Scanning State, received by a Link Layer in the Advertising State. SCAN_RSP: sent by the Link Layer in the Advertising State, received by a Link Layer in the Scanning State, it's another function is as a complement of advertising data, slave device could transfer more advertising data to master device, for example, device name could be inside this package instead of advertising package. CONNECT_REQ:Issued by...

by viewtool

One minute to understand BLE MTU data package


  • MTU: ATT Maximum Transmission Unit (MTU) is the maximum length of an ATT packet. The ATT MTU is defined by the L2CAP and can be anywhere between 23 and infinity. The implementation of the Bluetooth stack is the key factor of determining the ATT MTU on both client and peripheral. A generic ATT packet has the following structure:

image description

MTU exchange happens after master and slave device build up connection, refer: "One minute to understand BLE connection data package"

link text

Below is the comparison of few of major wireless protocol (units: bytes)

Ethernet:1500 IEEE 802.3/802...

by jfcamel

Debugging on nrf52840 with GDB from CLI on linux

Today I tried to find the better ways to debug program on nRF52840 PDK from CLI on linux.

The ways that I tried

  1. [Failed] openocd (both stlink and jlink) & gdb
  2. [Succeeded] JLink & JLinkGDBServer & gdb

OpenOCD (failed)

I could connect to nrf52840 with openocd (jlink).

openocd -f interface/jlink.cfg  -c 'adapter_khz 1000; transport select swd' -f target/nrf51.cfg

gdb> target remote localhost:3333
gdb> load ${binary}

But there was a issue when I debug a program with GDB.

nrf52.cpu -- clearing lockup after double fault

I cound not resolve this.


by QQ645116977

The KEY POINT of example "ble_app_uart"

This article baed on "pca10040", nRF52832

example code path "examples/ble_peripheral/ble_app_uart"

IMPORTANT!!!! board config file of this example located in "components/boards/pca10040.h" and uart pin defined in this file, like this:

define RX_PIN_NUMBER 8

define TX_PIN_NUMBER 6

So, the KEY point of this example is uart character goes through PIN#8 an PIN#6 if you don't know where are they, see schematic of you board

I spend whole night to figure out why I can't see anything through my JLink uart thats because my JLink uart using PIN#15 and PIN#16 as UART...

by caram5555

Introduce smart motion controller - ELIO

"ELIO" is a Bluetooth module and smartphone application that can drive motor(DC, Servo) and illuminate LEDs.

This module mounts Nordic's nRF52832 and motor controller IC.

Smartphone application can create/modify their own model using model-editor.

image description

The key point is

  1. No coding!!! Just plug & play.

    Plug DC motor, Servo motor and LED to ELIO and control. PWM channel is adopted and this can speed up from -100% ~ 100%. image description

  2. Model editor

    There are so many models in real-world. Car, Tank, Boat ... These toys are different in their control. A tank has 2 DC motor, Car has DC motor to speed-up...

by Jeevan Anga

The world's smallest breakout board compatible BTLE module: Automate your curtains for less than $90 with BluChip!

Ever wanted to automate your curtains and control it from the comfort of an app? Look no further.

The BluChip is the world's smallest breakout board compatible BTLE module. Build your very own Automated Home Curtains with this incredibly tiny breadboard-friendly BLE module!

Check out this easy-to-build automated home curtains tutorial and seamlessly control your curtains with the nRF Connect App.

Automated Home Curtains Instructables

The use of the Nordic NRF51 based Taiyo Yuden BTLE module means the entire package is FCC certified and can be incorporated into commercial products!

Learn more about this awesome DIY project at GitHub

by Yaniv Nis

Join Jumper's free beta for a Virtual nRF52832 device to streamline your R&D process

Hi All,

We at Jumper are building Virtual devices to streamline automated testing, continuous integration, and delivery for embedded software development (you are also welcome to read our blog that talks about these topics). We have a live alpha that supports running unit and integration tests on a virtual nRF52832 MCU. We have few open spots for embedded developers that would like to use our platform - we offer it for free for a limited period, and all we require is getting your feedback from time to time to make our product better.

Fill in this form to get an invitation...

by Mugelan

PSG-NORDIC Channel in YouTube

We a team from PSG College of Technology, Coimbatore, India created this "" channel to share what we explore with NORDIC THINGY nRF52 Series kit..!!

by Marius Heil

Job Offer: nRF / Embedded Developer in Stuttgart, Germany


We are currently looking for an Embedded / nRF Developer in Stuttgart that will help us to further develop FruityMesh ( and our commercial Product BlueRange (

C++ knowledge is mandatory and Java knowledge would be a bonus. We have multiple projects at the moment with different requirements.

Please contact and mention the nRF Devzone in your E-Mail.

Thanks, Marius

by Carlos Delfino

Estudando Projetos do SDK 10 para nRF5x com Eclipse Oxygen (Portuguese)

The purpose of this tutorial is to expound my notes on the studies I have done on the use of nRF51, but also serve for the nRF52, and thus share with the beginner as I of the Portuguese language. This tutorial is continuity in the [previous tutorial] (

The SDK 10 is chosen because there is still the S110 version of SoftDevice for the nRF51.

If you find any errors, be sure to let me know, because they are annotations made as I am learning to program for these modules, so I can initially...

by Carlos Delfino

Configurando o Eclipse Oxygen para Desenvolvimento com nRF5x (Portuguese)

This tutorial aims to help Portuguese language beginners, like me, with the nRF5x family and who chose to use Eclipse as a development tool.

The tutorial will be very simple and we will use the Eclipse Oxygen and the GNU MCU Plugin, in addition to GCC 6.

There will also be separate tutorials for each step, in this will be the only configuration of Eclipse for use of the Tools and soon thereafter will create another showing how to create a project using one of the examples, and finally a third demonstrating how to create a project from scratch.


by Yaniv Nis

How to use Git for embedded software development


Using Git and choosing the right workflow is essential when you want to implement DevOps practices as part of your SW development. When it comes to embedded SW things start to get a bit rough. Take a look at the blog post below to learn how to use Git-Flow for embedded development and what kind of tests to apply for each commit, merge, etc. Note that it's based on what we are doing at Jumper when we are building our virtual lab, so you might need to tweak it a bit.

Hope you...

1 2 3 ... 16 »