ESP-IDF¶
ESP-IDF (Espressif IoT Development Framework) is the official development framework for ESP32, ESP32-S, and ESP32-C series microcontrollers. Unlike Arduino, ESP-IDF gives you direct access to FreeRTOS, hardware peripherals, and advanced features like dual-core processing, deep sleep modes, and professional debugging tools. It enables you to build more complex, production-ready embedded systems with better control over performance, power consumption, and system architecture.
For this product, you describe how you used ESP-IDF in your project, which components and features you leveraged, and how you structured your application to take advantage of ESP-IDF’s capabilities.
ESP-IDF in Embedded & IoT Systems¶
Key features and concepts of ESP-IDF include:
- FreeRTOS: Preemptive multitasking, allowing multiple tasks to run concurrently
- Component-based architecture: Reusable, modular components that can be shared across projects
- Dual-core support: Ability to assign tasks to specific CPU cores for better performance
- Advanced power management: Deep sleep, light sleep, and dynamic frequency scaling
- Professional tooling: Built-in debugging, profiling, and logging capabilities
- Hardware abstraction: Direct access to peripherals (GPIO, I²C, SPI, UART, ADC, etc.) with more control than Arduino
- Wi-Fi and Bluetooth stacks: Full-featured networking capabilities built into the framework
You use ESP-IDF when you need more control, better performance, or more complex functionality than Arduino can provide.
Quality indicators¶
When assessing this product, the following quality indicators will be considered:
- The ESP-IDF document is self-contained, starting with an introduction/context and then describing how ESP-IDF is used in the project.
- It explains why ESP-IDF was chosen over Arduino or other frameworks for this project.
- It describes the project structure (components, main application, configuration files).
- It explains how tasks are structured and scheduled (FreeRTOS tasks, priorities, task communication).
- It describes which ESP-IDF components are used and how they are configured (for example Wi-Fi, Bluetooth, file system, HTTP client).
- It shows how hardware peripherals are accessed through ESP-IDF APIs (GPIO, I²C, SPI, UART, etc.).
- It addresses power management if applicable (sleep modes, power domains, frequency scaling).
- It includes code snippets that demonstrate key parts of the implementation, with references to the full code in GitLab.
- It describes the build and flash process (using
idf.pyor the ESP-IDF extension). - It includes a list of sources used to learn ESP-IDF and implement the project.
Template¶
To document ESP-IDF usage in your own project, you can use the following template:
# ESP-IDF
In this section, describe in a few sentences what your ESP-IDF application does and why you chose ESP-IDF over Arduino or other frameworks. This is the main text of your document.
## Project Structure
Here you describe how your ESP-IDF project is organised:
- Main application code (`main` component)
- Custom components you created
- Configuration files (`sdkconfig`, `CMakeLists.txt`)
- How components communicate with each other
## FreeRTOS Tasks
Here you describe how you use FreeRTOS:
- Which tasks you created and what each task does
- Task priorities and how they are assigned
- How tasks communicate (queues, semaphores, event groups)
- CPU core assignment if using dual-core features
Add code snippets showing task creation and communication patterns.
## Components & Configuration
Here you describe which ESP-IDF components you use:
- Built-in components (Wi-Fi, Bluetooth, HTTP, file system, etc.)
- Third-party components or your own custom components
- How components are configured (`sdkconfig` settings, component configuration)
## Hardware Interaction
Here you describe how you interact with hardware using ESP-IDF APIs:
- GPIO configuration and usage
- Peripheral drivers (I²C, SPI, UART, ADC, etc.)
- Interrupt handling
- How this differs from Arduino approaches
## Power Management (if applicable)
Here you describe power optimization:
- Sleep modes used (deep sleep, light sleep)
- Power domains and frequency scaling
- Wake-up sources
## Build & Deployment
Here you describe:
- How you build the project (`idf.py build` or IDE)
- How you flash and monitor (`idf.py flash monitor`)
- Any build configuration or optimization settings
## Sources
List here the sources you used to learn ESP-IDF and implement your project (official documentation, tutorials, example projects, videos, etc.).