Skip to main content

Blog

ESP-IDF tutorial series: PWM

·13 mins
This article explains what a PWM signal is, and how to generate PWM signal using the ledc peripheral on Espressif devices. It covers the LEDC timer and channel configuration, and shows how to convert a PWM signal into a clean DC value using an RC filter, including the tradeoffs between ripple and response speed.

esparagus: ESP32 flashing with structured output for CI and coding agents

esparagus is an ESP32-family flasher written in Rust — a behavioral port of esptool’s protocol, sync, reset, and stub-loader paths, wrapped in an observability layer built for programs rather than humans: NDJSON events, a machine-readable report file, stable exit codes, and an expect-style serial monitor with built-in crash detection. This article explains why that layer exists, how the flash-test-fix feedback loop works, and the three ways to integrate it — direct CLI, an Agent Skill, and an MCP server.

Announcing Espressif's Aliro SDK

·3 mins
Aliro brings mobile access credentials to Espressif devices and is compatible with Matter. We are excited to announce esp-aliro, an SDK that enables support for the Aliro standardized protocol on Espressif SoCs.

AES67 audio-over-IP on the ESP32-P4

AES67/RAVENNA is the audio transport behind a lot of broadcast and live-sound infrastructure, and it normally runs on dedicated silicon or Linux boxes. This article is about getting a working, PTP-synchronized AES67 endpoint onto an ESP32-P4 — how the clock sync, the low-latency receive path, and the I2S playout fit together, what the measured latency is, and where the edges are.

Rust smoltcp as an alternative TCP/IP stack for ESP-IDF

A set of ESP-IDF components that run the Rust smoltcp stack as the IPv4/IPv6 data plane, while keeping esp_http_server, esp-tls and esp-mqtt working without source changes. This article explains the linker –wrap shim that makes it compatible, the single-task poll architecture, the throughput I measured on an ESP32-P4 (91.15 Mbit/s on a 100 Mbit link), and the limitations to be aware of.

Developing a Zephyr IoT app with AI

·15 mins
Still on improving our AI-based, embedded software workflow, this article applies the same AI-agent discipline to Zephyr. Using the same ESP Dualkey kit from M5Stack, specs, integration rules, plan→execute→commit→test, reusable modules, journals, and Git - without redefining the product.

Introducing the esp_trace component

esp_trace is a new ESP-IDF component that splits application-level tracing into pluggable encoders and transports, so adding a new trace library no longer means patching the kernel. This post gives a high-level tour and walks through the example that demonstrates the integration.

ESP-WHO: Get started

·7 mins
In this article, we will set up ESP-WHO on the ESP32-S3-EYE board, running a face recognition example, and extending it with custom detection callbacks.

Building FOFOCA: An Open-Source AI Robot with ESP32, ESP32-C3, and Edge AI

FOFOCA is an open-source reference design for an AI-governed household robot, built around a Raspberry Pi 5 brain, an ESP32 for real-time motor control and sensor polling, and an ESP32-C3 driving an OLED status display over MQTT. This article walks through the hardware architecture, the firmware running on each Espressif chip, and how all of it connects to a local edge AI server running NVIDIA Nemotron Nano 8B for inference — no cloud dependency required.

Inside the New ESP-Brookesia v0.7 Architecture

··8 mins
This article introduces the redesigned ESP-Brookesia v0.7 architecture, from Utils, HAL, and General Service to AI Agent and AI Expression. It explains how these modules fit together and highlights two examples that help you quickly understand how to build AIoT interaction products on top of the framework.

Developing a Rust-based IoT device with AI

··13 mins
AI assistants are most effective on ESP32 Rust firmware when you supply clear specs, pinned crates, reference implementations (often ESP-IDF C), and a tight verify loop. The article discusses good practices, pitfalls, discipline, and entropy. A brief explanation about the device is also included, along with the repository and all artifacts.

Connecting an ESP32 to the Cloud

·7 mins
Connecting an ESP32 to a cloud platform usually means HTTP libraries, JSON parsers, and TLS handshakes. This tutorial shows a different approach: a single UDP datagram, built with snprintf, carrying structured sensor data in about 130 bytes. The TagoTiP open specification makes it possible by defining the data structure so you don’t have to.

C++ Components for ESP-IDF

·19 mins
This article presents two C++ ESP32 components: wifi_manager for seamless network connection and Deep Sleep for power-saving operation, both easily integrated using provided code examples. It also lists additional ESP-IDF components to streamline development.

Gesture Recognition Based on TFLite

·11 mins
This article demonstrates how to implement gesture recognition using TensorFlow Lite Micro on Espressif SoCs. It covers the complete workflow from data collection and model training to model deployment, showcasing TensorFlow Lite Micro’s applications in edge AI.