Articles

Practical articles, tutorials, and deep dives on embedded systems development — covering Arduino, ESP32, Nordic SoCs, Zephyr RTOS, firmware updates, and real-world hardware projects.

nRF52 Serial Communication Using UART/UARTE

Serial communication is one of the most fundamental features in embedded systems, and the Nordic nRF52 makes it easy with its UART and UARTE peripherals. In this guide, you'll learn the differences between the two interfaces, and how to use the app_uart library from the nRF5 SDK to set up reliable serial communication. We’ll walk through initializing the UART, sending and receiving data, and handling common issues — all backed by a hands-on project example to get you started quickly.

Read more 6 min read

Visual Studio Code and Cortex-Debug extension for nRF52

Debugging nRF52 applications doesn't have to be complex. With Visual Studio Code (VS Code) and the Cortex-Debug extension, you can set up a streamlined development environment for Nordic Semiconductor’s nRF52 series with ease. In this guide, we'll walk you through configuring VS Code for nRF52 development, installing the necessary extensions, and setting up the Cortex-Debug plugin for smooth debugging. Whether you're just starting or looking to enhance your workflow, this tutorial will help you get up and running quickly with powerful debugging capabilities, right from within your favorite code editor.

Read more 5 min read

Understanding nRF52 PPI module and nrfx_ppi driver

The nRF52 series from Nordic Semiconductor includes the powerful Programmable Peripheral Interconnect (PPI) module, designed to enable efficient communication between peripherals without involving the CPU. This article dives deep into the PPI module’s capabilities, explaining how it can streamline tasks by triggering actions between different peripherals, such as timers, GPIOs, and ADCs. We’ll explore how to leverage the nrfx_ppi driver from the nrfx HAL to set up and control these interactions, reducing system power consumption and improving performance. With a hands-on example, you'll learn to configure the PPI for tasks like sensor data collection or motor control, all while keeping the CPU free for other critical tasks.

Read more 8 min read

Controlling nRF52 GPIO by tasks and events

The nRF52 family’s GPIO control is made even more powerful with the GPIOTE (General Purpose Input/Output Tasks and Events) peripheral, which allows you to configure GPIOs to trigger actions based on tasks and events. In this article, we’ll dive into the capabilities of the GPIOTE peripheral and explore how to use the nrfx_gpiote driver to interact with it. You’ll learn how to configure input and output pins, set up event-driven GPIO tasks, and handle interrupts efficiently. With a practical example, we’ll show you how to use GPIOTE to control LEDs, detect button presses, or trigger other peripherals, all while optimizing CPU usage for real-time applications.

Read more 6 min read

nRF52 TIMER peripheral and nrfx_timer driver

Timers are essential for managing time-based events in embedded systems, and the nRF52 series offers powerful TIMER peripherals to handle such tasks efficiently. In this article, we’ll explore the TIMER peripheral in the nRF52 family and how to utilize the nrfx_timer driver from the nRF5 SDK. You’ll learn how to configure the timer for various use cases, including periodic tasks, timeouts, and event generation. With a hands-on example, we’ll guide you through initializing a timer instance, setting up interrupts, and using the timer for precise timing control — all while minimizing CPU overhead.

Read more 9 min read

STM32 GPIO usage using HAL driver and STM32CubeIDE

STM32 microcontrollers offer versatile GPIO pins that can be used for a variety of tasks such as controlling LEDs, reading sensors, or interfacing with other devices. In this tutorial, we’ll walk you through how to control digital input and output ports of STM32 using the HAL GPIO library and STM32CubeIDE. You’ll learn how to configure GPIO pins for input or output, read input states, and toggle output states with simple code examples. By the end of this guide, you’ll be able to efficiently utilize STM32 GPIOs to interact with external hardware in your projects.

Read more 5 min read

Getting started with STM32 development using STM32CubeIDE

The STM32 ecosystem, paired with STM32CubeIDE, offers a powerful platform for developing embedded applications. In this blog post, we guide you through the essentials of getting started with STM32 development using STM32CubeIDE. Learn how to set up the IDE, create a new project, configure your STM32 hardware, and build and run your first program on the target device. With clear, step-by-step instructions, this tutorial is designed for beginners and seasoned developers alike, helping you kickstart your STM32 projects with confidence and efficiency.

Read more 7 min read

nRF52 freeRTOS blinky

Getting started with FreeRTOS on the nRF52 is easier than you might think! In this article, we’ll show you how to set up a basic FreeRTOS application on the nRF52 and create your first task — a simple "blinky" task to toggle an LED. You’ll learn how to configure FreeRTOS for the nRF52 platform, create tasks, and handle delays, all while taking advantage of the real-time features FreeRTOS offers. Whether you're new to FreeRTOS or embedded systems in general, this guide will help you build a foundation for more complex applications in no time.

Read more 5 min read

Controlling ESP32 GPIO with ESP-IDF

The ESP32 features a wide range of General Purpose Input/Output (GPIO) pins that can be used for a variety of tasks, such as reading sensors, controlling LEDs, or interfacing with other peripherals. In this tutorial, we’ll walk you through how to control the ESP32's digital input and output ports using the ESP-IDF framework. You’ll learn how to configure GPIOs for input or output modes, read digital signals, and set pin states. With step-by-step instructions and example code, you’ll be able to control hardware components like LEDs, buttons, and relays using the powerful GPIO features of the ESP32.

Read more 5 min read

Controlling NRF52 GPIO with nRF5 SDK

The GPIO (General Purpose Input/Output) ports on the nRF52 series are essential for interfacing with external components like sensors, LEDs, and buttons. In this guide, you’ll learn how to control the digital input and output ports of the nRF52 family using the nRF5 SDK. We’ll walk you through configuring GPIO pins as inputs or outputs, reading button states, and toggling LEDs. With practical examples and code snippets, you’ll gain the skills to easily interact with your hardware and create responsive embedded systems.

Read more 5 min read

Developing nRF52 applications with GCC

The GNU Compiler Collection (GCC) is a popular choice for developing applications on the nRF52 family, offering flexibility and powerful optimization features for embedded systems. In this tutorial, we’ll guide you through the steps to set up your development environment for the nRF52 using GCC. You’ll learn about the essential components of a typical nRF52 GCC project, including directory structures, key configuration files, and toolchain setup. With a hands-on approach, we’ll walk you through creating, building, and flashing a simple nRF52 application, giving you a solid foundation for further development.

Read more 10 min read

Setup ESP32 development environment on MacOS (ESP-IDF)

Setting up a robust development environment is the first step to unlocking the full potential of the ESP32 microcontroller. In this blog post, we provide a clear, step-by-step guide to configuring the ESP-IDF framework for ESP32 development on macOS. From installing the necessary tools and dependencies to setting up the ESP-IDF environment and verifying your setup, this tutorial ensures a smooth start for your ESP32 projects. Whether you’re new to embedded systems or an experienced developer, this guide will help you establish a reliable ESP32 development workflow on macOS.

Read more 6 min read