Sort by » date activity comments

304 blog posts

by gamnes

How to interface a Nordic Thingy:52 using Amazon Alexa

Interfacing the Nordic Thingy:52 from the Amazon Alexa Voice Service just had to be done! In this blog post I will briefly explain how this demo was set up, but I will direct you to the GitHub page if you need more detailed information than what i provide here.

Please have a look at the following GitHub repository for a thorough explanation on how to set this up, and how it all works:

There is also this youtube clip that shows the system in action:



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 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 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 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 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 Krzysztof Zaraska

Multiple channels in RTT

Segger RTT (Real-Time Terminal) supports multiple data channels.

RTT Viewer uses channel 0 only, and implements multiple virtual terminals on top of this. The terminal can be switched by SEGGER_RTT_SetTerminal(). Channel 0 is used by NRF_LOG. NRF_LOG does not do terminal switching, so you can do it yourself (be careful about reentracy though).

Data from other channels can be read using RTT Logger. To send data from NRF to RTT Logger:

  1. In sdk_config.h, adjust value of SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS. The default is 2, which gives you 1 extra channel besides channel 0. In the example below, it should be set to...
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 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 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 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 shibbs

Porting the OTA DFU to your Custom App (SDK 12 +)

How to implement the Nordic OTA protocol in your own phone App

This document is meant to be useful if you are implementing DFU updates within in your own smartphone app, and want to do it yourself, rather than rely on trying to turn nrf toolbox into a library that your app calls. In a previous app we did just that, but it was a nightmare, and the nrf toolbox has since changed its structure a lot, making it even harder to do this now.

Our app is a cross-platform javascript app, and in the past we had built our...

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 David Edwin

Get started on PC Software for Mesh and Mesh DFU

nRF-connect-Mesh PC tool allows the user to demonstrate the nRF OpenMesh and the Mesh Device Firmware Update (DFU). The Mesh DFU will be used for nRF OpenMesh and the Bluetooth Mesh when it is made available. The nRF OpenMesh used is v0.8.7. The tool will be updated to support the Bluetooth Mesh when it is available.

image description

DFU quick start guide in the nRF OpenMesh repo

Tools Required


Any one of the below x 2 or more, all of the same type is best during the evaluation

  • nRF51-DK
  • nRF51-Dongle
  • nRF52-DK
  • USB Wall Charger or USB battery pack (optional...
1 2 3 ... 16 »