Arduino ESP32 Choose version... Contents: Getting Started Libraries Guides Tutorials Advanced Utilities Third Party Tools Migration Guides FAQ Troubleshooting Contributing External Libraries Testing Arduino ESP32 Welcome to ESP32 Arduino Core’s documentation Edit on GitHub Welcome to ESP32 Arduino Core’s documentation Here you will find all the relevant information about the project. This documentation is valid for the Arduino Core for ESP32 version 3.3.7 based on ESP-IDF 5.5. Note This is a work in progress documentation and we will appreciate your help! We are looking for contributors! Contents: Getting Started Libraries Guides Tutorials Advanced Utilities Third Party Tools Migration Guides FAQ Troubleshooting Contributing External Libraries Testing Next © Copyright 2016 - 2026, Espressif Systems (Shanghai) Co., Ltd. Built with Sphinx using a theme based on Read the Docs Sphinx Theme. Arduino ESP32 Choose version... Contents: Getting Started About Arduino ESP32 First Things First Supported SoC’s Arduino Core Reference Supported Operating Systems Supported IDEs Support Community Issues Reporting First Steps How to Install Development Boards Examples Datasheet Resources Libraries Guides Tutorials Advanced Utilities Third Party Tools Migration Guides FAQ Troubleshooting Contributing External Libraries Testing Arduino ESP32 Getting Started Edit on GitHub Getting Started About Arduino ESP32 Welcome to the Arduino ESP32 support documentation! Here you will find important information on how to use the project. First Things First Note Before continuing, we must be clear that this project is supported by Espressif Systems and the community. Everyone is more than welcome to contribute back to this project. ESP32 is a single 2.4 GHz Wi-Fi-and-Bluetooth SoC (System On a Chip) designed by Espressif Systems. ESP32 is designed for mobile, wearable electronics, and Internet-of-Things (IoT) applications. It features all the state-of-the-art characteristics of low-power chips, including fine-grained clock gating, multiple power modes,and dynamic power scaling. For instance, in a low-power IoT sensor hub application scenario, ESP32 is woken-up periodically and only when a specified condition is detected. Low-duty cycle is used to minimize the amount of energy that the chip expends. The output of the power amplifier is also adjustable, thus contributing to an optimal trade-off between communication range, data rate and power consumption. The ESP32 series is available as a chip or module. Supported SoC’s Here are the ESP32 series supported by the Arduino-ESP32 project: SoC Stable Development Datasheet ESP32 Yes Yes ESP32 ESP32-C3 Yes Yes ESP32-C3 ESP32-C5 Yes Yes ESP32-C5 ESP32-C6 Yes Yes ESP32-C6 ESP32-H2 Yes Yes ESP32-H2 ESP32-P4 Yes Yes ESP32-P4 ESP32-S2 Yes Yes ESP32-S2 ESP32-S3 Yes Yes ESP32-S3 Note ESP32-C2 and ESP32-C61 are also supported by Arduino-ESP32 but require using Arduino as an ESP-IDF component or rebuilding the static libraries. For more information, see the Arduino as an ESP-IDF component documentation or the Lib Builder documentation, respectively. See Boards for more details about ESP32 development boards. Arduino Core Reference This documentation is built on the ESP32 and we are not going to cover the common Arduino API. To see the Arduino reference documentation, please consider reading the official documentation. Arduino Official Documentation: Arduino Reference. Supported Operating Systems Windows Linux macOS Supported IDEs Here is the list of supported IDE for Arduino ESP32 support integration. Arduino IDE See Installing Guides for more details on how to install the Arduino ESP32 support. Support This is an open project and it’s supported by the community. Fell free to ask for help in one of the community channels. Community The Arduino community is huge! You can find a lot of useful content on the Internet. Here are some community channels where you may find information and ask for some help, if needed. ESP32 Forum: Official Espressif Forum. ESP32 Forum - Arduino: Official Espressif Forum for Arduino related discussions. ESP32 Forum - Hardware: Official Espressif Forum for Hardware related discussions. Espressif Developer Portal: Official Espressif Developer Portal with tutorials, examples, workshops, and more. Arduino Core for Espressif (Discord): Official Espressif Discord channel for the Arduino Core. Espressif MCUs (Discord) ESP32 on Reddit Issues Reporting Before opening a new issue, please read this: Be sure to search for a similar reported issue. This avoids duplicating or creating noise in the GitHub Issues reporting. We also have the troubleshooting guide to save your time on the most common issues reported by users. For more details about creating new Issue, see the Issue Template. If you have any new idea, see the Feature request Template. First Steps Here are the first steps to get the Arduino ESP32 support running. To install Arduino-ESP32, please see the dedicated section on the Installation guide. We recommend you install it using the boards manager. How to Install Before Installing Installing using Arduino IDE Windows (manual installation) Linux macOS Development Boards Development Boards Espressif Third Party Datasheet Resources Examples After installing the toolchain into your environment, you will be able to see all the dedicated examples for the ESP32. These examples are located in the examples menu or inside each library folder. https://github.com/espressif/arduino-esp32/tree/master/libraries There is also a list of examples managed outside of Espressif, so check them out. Datasheet ESP32 (Datasheet) ESP32-C2 (Datasheet) ESP32-C3 (Datasheet) ESP32-C5 (Datasheet) ESP32-C6 (Datasheet) ESP32-C61 (Datasheet) ESP32-H2 (Datasheet) ESP32-P4 (Datasheet) ESP32-S2 (Datasheet) ESP32-S3 (Datasheet) Resources Previous Next © Copyright 2016 - 2026, Espressif Systems (Shanghai) Co., Ltd. Built with Sphinx using a theme based on Read the Docs Sphinx Theme. Arduino ESP32 Choose version... Contents: Getting Started Libraries Guides Tutorials Advanced Utilities Library Builder Arduino as an ESP-IDF component About Installation Installing using IDF Component Manager Manual installation of Arduino framework Configuration Option 1. Using Arduino setup() and loop() Option 2. Using ESP-IDF appmain() Build, flash and monitor Logging To Serial FreeRTOS Tick Rate (Hz) Compilation Errors Adding arduino library 1 Adding global library 2 Adding local library Tip OTA Web Update makeEspArduino Third Party Tools Migration Guides FAQ Troubleshooting Contributing External Libraries Testing Arduino ESP32 Advanced Utilities Arduino as an ESP-IDF component Edit on GitHub Arduino as an ESP-IDF component About You can use the Arduino framework as an ESP-IDF component. This allows you to use the Arduino framework in your ESP-IDF projects with the full flexibility of the ESP-IDF. This method is recommended for advanced users. To use this method, you will need to have the ESP-IDF toolchain installed. For a simplified method, see Installing using Boards Manager. If you plan to use these modified settings multiple times, for different projects and targets, you can recompile the Arduino core with the new settings using the Arduino Static Library Builder. For more information, see the Lib Builder documentation. Note Latest Arduino Core ESP32 version (3.3.7) is now compatible with ESP-IDF v5.5. Please consider this compatibility when using Arduino as a component in ESP-IDF. For easiest use of Arduino framework as a ESP-IDF component, you can use the IDF Component Manager to add the Arduino component to your project. This will automatically clone the repository and its submodules. You can find the Arduino component in the ESP Registry together with dependencies list and examples. Installation Download and install ESP-IDF. For more information see Get Started. Installing using IDF Component Manager To add the Arduino component to your project using the IDF Component Manager, run the following command in your project directory: idf.py add-dependency "espressif/arduino-esp32^3.3.7" Or you can start a new project from a template with the Arduino component: idf.py create-project-from-example "espressif/arduino-esp32^3.3.7:hello_world" Manual installation of Arduino framework Create a blank ESP-IDF project (use sample_project from /examples/get-started) or choose one of the examples. In the project folder, create a new folder called components and clone this repository inside the newly created folder. mkdir -p components && \ cd components && \ git clone https://github.com/espressif/arduino-esp32.git arduino && \ cd arduino && \ git submodule update --init --recursive && \ cd ../.. && \ idf.py menuconfig Note If you use Arduino with ESP-IDF often, you can place the arduino folder into global components folder. If you’re targeting the ESP32-S2 or ESP32-S3 and you want to use USBHID classes such as USBHID, USBHIDConsumerControl, USBHIDGamepad, USBHIDKeyboard, USBHIDMouse, USBHIDSystemControl, or USBHIDVendor: Clone these nested repos somewhere: git clone https://github.com/espressif/esp32-arduino-lib-builder.git esp32-arduino-lib-builder && \ git clone https://github.com/hathach/tinyusb.git esp32-arduino-lib-builder/components/arduino_tinyusb/tinyusb In the project folder, edit CMakeLists.txt and add the following before the project() line: set(EXTRA_COMPONENT_DIRS ) Configuration Depending on one of the two following options, in the menuconfig set the appropriate settings. Go to the section Arduino Configuration ---> For usage of app_main() function - Turn off Autostart Arduino setup and loop on boot For usage of setup() and loop() functions - Turn on Autostart Arduino setup and loop on boot Experienced users can explore other options in the Arduino section. After the setup you can save and exit: Save [S] Confirm default filename [Enter] Close confirmation