When we built our Bluey nRF52 BLE dev board, we were looking for an inexpensive option for our users to upload code to bluey and debug it using ARM GDB. We then came across the blackmagic probe (BMP) project - an Open Source debugging tool for embedded microprocessors. It greatly simplifies the debugging and code uploading process using just ARM GDB - no need to run a GDB server or use an additional complex tool like openocd. Although the BMP hardware is excellent, it's bit beyond the budget of our target audience as an add-on programmer. But luckily, their firmware supports...
One thing I wish I had when I started developing for BLE is more blog posts that walk you step-by-step on how to tackle the different phases of the system design and implementation. One such phase is designing your Bluetooth GATT: Services and Characteristics.
I just published a new blog post tackling this phase. I lay out the step-by-step process for designing a custom GATT for a BLE MIDI controller using the nRF52 platform including the complete source code. The post covers the following:
Good morning, my name is Marco Russi and I live in London, UK.
I am a contract/freelance embedded software engineer with 10 years of experience. I have been involved in projects mainly for smart sensors, actuators control and battery powered devices. I have already worked with a few companies in UK designing and developing firmware and software or following an entire embedded system development, including hardware, from requirements to first prototype and then to production.
My main experience is on Bluetooth Low Energy applications based on Nordic nrf51 devices but I also have a good knowledge of WiFi, Ethernet...
I realize that there are already multiple tutorials on how to configure GCC along with Eclipse or SEGGER Embedded Studio (for use on a Mac), but this tutorial goes over setting up a different IDE. The more choices the better, right? ;)
The IDE of choice for me is NetBeans. NetBeans is well known for Java development but not as much for C/C++ or embedded. However, I personally have been using it for embedded development for about 10 years now (both embedded Linux and MCU-level development). In this tutorial, I'll be going over how to set up and configure...
Short note how to make FreeRTOS program debugging with eclipse little simpler.
If you are looking the information how to configure the whole environment see this post: https://devzone.nordicsemi.com/tutorials/7/development-with-gcc-and-eclipse/
Most low power applications stays most of the timer in idle. Ideally it would be tickless-idle. The problem begins if our program behaves strangely and we would like to stop it and check what is going on.
Lets get blinky_freertos example. Run it and halt just in random moment. Until you are very lucky you would stop somewhere in...
The biggest pain point when debugging an application on the nRF51 series is the inability to set breakpoints while the SoftDevice is active without triggering an assert. Although a workaround exists that allows the debugging process to limp along for a short amount of time after the SoftDevice complains, using breakpoints with the nRF51 is inevitably a disruptive process.
Thankfully, the nRF52 series includes support for a neat feature called Monitor Mode Debugging. When this feature is enabled, the processor will trigger a specific interrupt handler (DebugMon_Handler) instead of halting when a breakpoint is reached. This DebugMon_Handler then spins and...
There is a use case that I've seen several times recently that I find interesting due to the fact that its security requirements aren't directly addressed by the Bluetooth Low Energy (BLE) standard. It goes something like this:
I have a BLE device that multiple users can interact with. Although most of the BLE characteristics should be open, one or more 'admin' characteristics should only be modifiable if the user has permissions to change them.
I will present a simple solution using the nRF52832 with the S132 SoftDevice.
The 128-bit AES ECB peripheral provides a secure...
As a product is getting into the production phase, the need of a fast and standalone screening facility on the production line arises. Here I'm introducing a production screening setup based on Bluetooth Direct Test Mode (DTM).
A production screening is a rapid screening process sorting out those units which are not functioning because of manufacturing issues, such as cold soldering, usage of incorrect materials, usage of bad materials, etc.
A production screening is NOT a functional test which correctness of the application functionality is verified. Functional tests must...
Welcome to this 2 or 3-part blog about the nRF52 Rocket, a BLE-enabled model rocket, which you’ve just seen soaring through the air in the video above. In the first part of blog, I will briefly introduce what model rocketry is and what are some of the motivations behind my work on a BLE-enabled model rocket during my fun and rewarding internship at Nordic Semiconductor.
Model rocketry is a popular and exhilarating hobby that has inspired many young (or the young-at-heart) makers, hackers, engineers and scientists through the fun, educational, and most importantly safe process of...
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.
Any one of the below x 2 or more, all of the same type is best during the evaluation
Many developers might be familiar with the problems that may arise when wanting to measure current consumption, especially with applications using from a couple of µA to some mA. You most probably have to have some very expensive equipment that takes up quite a lot of space on your desktop. This often means that it is stowed away at a lab, or actually too expensive to buy. Since we have created the nRF52 Online Power Profiler, this can solve some issues, but what if the application has forgotten to turn off unnecessary power consumers, has wrong intervals between events or...
There is seemingly a gap to fill in the world of Internet of Things (IoT) when it comes to proving a suitable operation system. Real-time operating systems (RTOS) that are specialized for network connectivity has existed for a while, but they all provide quite different benefits and drawbacks, and as such there is no on OS that rules the MCU market. In all this new OSes continue to appear.
What these OSes have in common is that they target resource constrained devices, focusing on low memory usage and low power to allow long battery life. The OSes are designed for...
In a previous blog post, RK has shown us how to use Segger SystemView to monitor a bare-metal application as well as the Softdevice. Based on his work, we will see how to go further and add FreeRTOS to SystemView in order to monitor the RTOS tasks and events.
The following steps are based on the Heart Rate application with FreeRTOS example located in the SDK...
The nRF52 Quadcopter is a small miniquad that utilizes the nRF52 as both flight controller and for radio communication. The quadcopter uses the Physical Web and Web Bluetooth to make it as easy as possible for anyone to fly it. This is an open source project, and the source files are available here. See it in action here.
In most miniquads there is often used two or several dedicated chips which cooperates to make the whole quadcopter system work. Usually you have one main chip which controls the quad and keeps it stable in the air, and one chip which...
A few weeks ago I was experimenting with the nRF52's radio performance and found myself stuck in a routine that consisted of:
I was working against a deadline at the time so I just had to deal with it but the following weekend I decided to revisit the topic.
The basic solution seemed obvious: a simple, reusable mechanism for exchanging data between a PC and an embedded device. The process would go something like this:
There are many reasons why you may want to modify the Makefiles that are included in the SDK examples. For instance, if you are invoking Make from the command line then you will probably also want the ability to have Make ensure that everything is up-to-date and then start GDB for you. Even if an IDE like Eclipse is invoking Make for you, enabling incremental builds can save you time. The purpose of this post is to introduce you to a few Makefiles that I created to show how Make can do more work for you.
In a variety of use cases there is a need to share a common clock among multiple devices. Such a common clock can be used for many purposes, for example by having each node in a network perform an action at exactly the same time, or accurately time stamping sensor data.
Wireless protocols such as BLE has a great deal of abstraction from the underlying radio hardware. This is generally a good thing, as the top-level application doesn't have to concern itself with what the underlying protocol might be doing. Calling the send() function ensures that data is...
This tutorial shows you how to set up IPv6 over BLE communication using nRF52832 and Contiki OS.
To fully understand this tutorial you will need to have minimum knowledge of Linux environment and shell. An nRF52 Development Kit and Bluetooth 4.0-compatible hardware are required to run the examples.
Contiki OS is an open source operating system for the Internet of Things, see http://www.contiki-os.org/ for more information.
nRF52832 port is Nordic Semiconductor's first Contiki OS compatible platform that supports IPv6 over BLE. It opens up an opportunity to experiment with IPv6 over BLE by leveraging...
Hello I succeeded to configure QtCreator toolchain to compile and debug my NRF52 board. So I wanted to share.
I use my own Makefile to compile everything so I will focus here on how to run a debug session (with breakpoints and candies !) inside QtCreator (which is the best C++ IDE of course).
Even if you are not interested, can you try my tutorial and tell me where you have problems ? So I can detail my configuration. It will help other guys.
OS: Windows 8.1
Arch: x86-64 but I tried to install 32bits tools
Here is an example of a hardware setup to measure the voltage on a Lithium battery with a voltage divider on nRF52. The Lithium battery typically has a voltage range of 2.7 - 4.2 V and we (Nordic) recommend that you divide the battery voltage with two resistors and possibly a capacitor (more on that later)
To reduce the leakage current through the voltage divider to the minimum, we want the total resistance to be as high as possible. Therefore, we choose R1 to be 800 KΩ. This is the maximum source resistance we can have if we use...