arduino-esp32: Arduino Core for the ESP32 Family of SoCs
- ESP32
- ESP32-C3
- ESP32-C5
- ESP32-C6
- ESP32-H2
- ESP32-P4
- ESP32-S2
- ESP32-S3
- ESP32-C2
- ESP32-C61
What You Will Build and Why It Matters
arduino-esp32 is the official Arduino core maintained by Espressif for the entire ESP32 SoC family. Instead of writing firmware in Espressif's lower-level ESP-IDF framework, you write standard Arduino sketches — setup(), loop(), and the libraries you already know — and the core handles all the translation to the underlying hardware.
This matters because the ESP32 family covers an enormous range of capabilities: the original dual-core ESP32 with Bluetooth Classic and Wi-Fi, the compact single-core ESP32-C3, the AI-ready ESP32-S3 with its vector instructions, the ultra-low-power ESP32-H2 with 802.15.4 (Zigbee/Thread), and the high-performance ESP32-P4. With arduino-esp32 you can target any of these chips using the same IDE and the same sketch structure.
With over 17,500 stars and nearly 8,000 forks on GitHub, this is the most widely used ESP32 Arduino integration in existence, backed directly by Espressif. If you are prototyping a connected gadget, an AI inference device, or a battery-powered sensor node, this core is the fastest path from idea to running firmware.
What You Need
Hardware
Any development board based on one of the supported SoCs will work:
- ESP32, ESP32-S2, ESP32-S3 — dual-core or single-core Xtensa, with Wi-Fi and Bluetooth
- ESP32-C3, ESP32-C5, ESP32-C6 — RISC-V cores, Wi-Fi and/or Bluetooth LE
- ESP32-H2 — RISC-V, 802.15.4 (Zigbee/Thread) and Bluetooth LE, no Wi-Fi
- ESP32-P4 — high-performance dual-core RISC-V, targeted at edge AI and multimedia
- ESP32-C2 and ESP32-C61 are also supported but require Arduino as an ESP-IDF component or rebuilding the static libraries (see below)
You will also need a USB cable to connect the board to your computer and, depending on the board, a separate USB-to-serial adapter.
Software
- Arduino IDE (Windows, Linux, or macOS) or any IDE that supports the Arduino board manager format
- The arduino-esp32 board package, installed through the Arduino Board Manager
- For advanced use: ESP-IDF, if you want to use Arduino as a component inside an ESP-IDF project
Full installation instructions for all operating systems are available in the official documentation.
Typical use cases
Use Arduino sketches to prototype TensorFlow Lite or similar models on ESP32-S3 or ESP32-P4 hardware, then iterate quickly without leaving the Arduino IDE.
Build IoT sensors, smart home nodes, or BLE peripherals on any Wi-Fi or Bluetooth-capable ESP32 SoC using familiar Arduino networking libraries.
Target ESP32-H2 or ESP32-C6 for Zigbee or Thread mesh deployments, combining the 802.15.4 radio with Arduino's rapid prototyping workflow.
Embed the Arduino core inside a full ESP-IDF project to combine Arduino library convenience with fine-grained IDF configuration and custom partitioning.
How It Works
arduino-esp32 sits as a layer between your Arduino sketch and Espressif's ESP-IDF. When you click Upload in the Arduino IDE, the toolchain compiles your sketch together with the core's C++ wrappers, which translate Arduino API calls — digitalWrite, Serial.begin, WiFi.begin, and so on — into the corresponding ESP-IDF calls.
The core ships pre-built static libraries for each supported chip variant, which keeps compile times short for the common case. If you need to target ESP32-C2 or ESP32-C61, or if you need to customise the underlying IDF configuration, you can use the Lib Builder to rebuild those libraries yourself, or embed the whole Arduino core as a component inside a native ESP-IDF project.
The project uses GitHub Actions for continuous integration: every push triggers compilation tests across all supported SoCs, and a scheduled job runs a broader test suite including external libraries. A public roadmap tracks planned features, and monthly community meetings keep contributors aligned.
Installation and First Sketch
Because the install commands live in the official documentation rather than the README, the steps below describe the process without reproducing commands that are not in the source README. Follow the Installing guide for the exact Board Manager URL and any IDE-specific steps.
- Open the Arduino IDE and navigate to Preferences (or Settings).
- Add the ESP32 Board Manager URL — the exact URL is listed on the Installing page for your operating system.
- Open the Board Manager, search for
esp32by Espressif Systems, and install the package. This downloads the pre-built toolchain and libraries for all supported chips. - Select your board from Tools → Board → ESP32 Arduino. Pick the entry that matches your specific module (for example, ESP32-S3 Dev Module or ESP32-C6 Dev Module).
- Select the correct port under Tools → Port.
- Open a built-in example from File → Examples → (any ESP32 category) and click Upload.
If you are migrating an existing project from the 2.x release series, consult the 2.x to 3.x migration guide before upgrading, as there are API-level changes.
Decoding crash logs: If your firmware crashes and prints a register dump to the serial monitor, use EspExceptionDecoder to turn the raw addresses into a readable call stack.
Ideas to Extend It and Known Limitations
Ways to go further
- Arduino as an ESP-IDF component: If you need fine-grained control over IDF configuration — custom partition tables, FreeRTOS settings, or power management — you can embed the Arduino core as a component inside a full ESP-IDF project. The documentation covers this workflow in detail.
- Edge AI on ESP32-S3 and ESP32-P4: Both SoCs include hardware acceleration suited to running quantised neural network models. The Arduino environment gives you a quick way to prototype inference pipelines before moving to a production IDF build.
- Zigbee and Thread on ESP32-H2 and ESP32-C6: These chips support 802.15.4, making them candidates for mesh sensor networks. Check the Libraries page for available protocol support.
- External library CI: Espressif runs automated compilation tests for external Arduino libraries against the ESP32 core. If you maintain a library, you can add it to that test suite to catch regressions early.
Limitations to keep in mind
- ESP32-C2 and ESP32-C61 are not supported through the standard Board Manager path; they require extra steps.
- Not every Arduino library written for AVR or ESP8266 will compile without changes. The API compatibility page documents what is and is not compatible.
- The Arduino abstraction layer adds a small overhead compared to writing directly in ESP-IDF. For timing-critical or memory-constrained applications, a pure IDF approach may be preferable.
arduino-esp32 is the definitive starting point for anyone writing firmware for the ESP32 family: it is officially maintained by Espressif, covers eight SoC variants in stable release, and integrates smoothly with both the Arduino IDE and ESP-IDF. Beginners get a gentle on-ramp through the standard Arduino workflow, while experienced developers can drop into ESP-IDF component mode for full control. The active community, public roadmap, and continuous integration against external libraries make it a dependable foundation for projects ranging from simple sensor nodes to edge AI gadgets.
Sources
github.comespressif/arduino-esp32 — repository & READMEFacts in this article come from the project's public README and GitHub metadata at the time of writing. Images belong to their respective owners and link back to the original source.



