# ESP-IDF

Configuration

  framework = `espidf`

Espressif IoT Development Framework. Official development framework for ESP32.

For more detailed information please visit vendor site.

Contents

- Tutorials

- Configuration

- Debugging

- Examples

- Platforms

- Boards

## Tutorials

- Get started with ESP-IDF and ESP32-DevKitC: debugging, unit testing, project analysis

## Configuration

Note

Starting with ESP-IDF v4.0, a CMake-based build system is used. Different configuration steps are required for ESP-IDF v3.x due to a legacy build system based on GNU Make.

- Configuration for 4.0

- Configuration for 3.0, 3.1, 3.2, 3.3

Each release of Espressif 32 platform uses a specific version of ESP-IDF. The latest version of the platform only supports the latest stable version of the framework.

Warning

ESP-IDF v4.0 projects are not backwards-compatible with ESP-IDF v3.x projects in terms of project configuration process.

### Configuration for 4.0

- Project Structure

- ESP-IDF components

- ULP coprocessor programming

- Limitations

The general project configuration (default optimization level, bootloader configuration partition tables, etc) is set in a single file called `sdkconfig` in the root folder of the project. This configuration file can be modified via a special target called `menuconfig` (PlatformIO v4.3.0 greater is required):

    platformio run -t menuconfig

Warning

ESP-IDF requires some extra tools to be installed in your system in order to build firmware for supported chips. Most of these tools are available in PlatformIO ecosystem as standalone packages, but in order to use configuration tool called `menuconfig` several additional packages need to be installed on Linux-based systems:

    libncurses5-dev flex bison

More details about required packages can be found in the official ESP-IDF documentation - Standard Setup of Toolchain for Linux.

#### Project Structure

The ESP-IDF framework requires an unusual project structure because most of the framework configuration is performed by the native for the ESP-IDF build system called `CMake`.

A typical PlatformIO project for the ESP-IDF framework must have the following structure:

    project_dir
    ├── include
    ├── src
    │    ├── CMakeLists.txt
    │    └── main.c
    ├── CMakeLists.txt
    └── platformio.ini

Tip

It’s also possible to use the default ESP-IDF project structure with `main` folder. To specify `main` as the folder with source files use src_dir option, for example:

    [platformio]
    src_dir = main

    [env:esp32dev]
    platform = espressif32
    framework = espidf
    board = esp32dev

Besides the files related to PlatformIO project, there are several additional ESP-IDF-specific files: the main `CMakeLists.txt`, project-specific `CMakeLists.txt` in src_dir and optional default configuration file `sdkconfig.defaults`. `CMakeLists.txt` files enable features supported by the ESP-IDF’s build system, e.g. ULP configuration, adding extra components, etc. A typical `CMakeLists.txt` file in the root folder has the following content:

    # The following lines of boilerplate have to be in your project's CMakeLists
    # in this exact order for cmake to work correctly
    cmake_minimum_required(VERSION 3.16.0)

    include($ENV{IDF_PATH}/tools/cmake/project.cmake)
    project(project-name)

The second `CMakeLists.txt` in src_dir is responsible for controlling the build process of the component and its integration into the overall project. The minimal component `CMakeLists.txt` file simply registers the component to the build system using `idf_component_register`:

    idf_component_register(SRCS "foo.c" "bar.c")

The files specified using `idf_component_register` are used ONLY for generating build configurations, but it’s highly recommended to specify all application source files in order to keep the project compatible with the usual ESP-IDF workflow.

Warning

By default PlatformIO expects source files to be located in the `src` folder. At the same time, the default location for source files within the ESP-IDF build system is a special folder with the name `main`. Renaming the main component may require users to manually specify additional dependencies:

    idf_component_register(SRCS "main.c" REQUIRES idf::mbedtls)

More details in the official ESP-IDF documentation - Renaming main component.

Due to the current limitations of CMake file-based API, there is no way of generating build configuration for source files written in various programming languages if they are not specified in `idf_component_register` command. If your project contains libraries written in languages that differ from the language used for the main application you need to create an empty file with the desired extension (e.g. `*.cpp` for `C++`) in order to force CMake generate build configuration for this language.

Note

Build configuration generated for source files specified in `idf_component_register` is also used as the base build environment for project sources (including libraries).

#### ESP-IDF components

ESP-IDF modules as modular pieces of standalone code might be useful for structuring reusable code or including third party components that aren’t part of ESP-IDF.

These components contain either a single `CMakeLists.txt` file which controls the build process of the component and its integration into the overall project. An optional `Kconfig` file defines the component configuration options that can be set via `menuconfig`. Some components may also include `Kconfig.projbuild` and `project_include.cmake` files, which are special files for overriding parts of the project. All valid components will be compiled as static libraries and linked to the final firmware. There are two possible ways of adding extra components to PlatformIO project:

- By adding a new component to an optional folder called `components` in the root of your project. This folder will be automatically scanned for valid components.

- Using `EXTRA_COMPONENT_DIRS` option in the root `CMakeLists.txt` file. This option represents a list of extra directories to search for components.

An example of specifying `esp-aws-iot` as an extra component:

    # The following lines of boilerplate have to be in your project's CMakeLists
    # in this exact order for cmake to work correctly
    cmake_minimum_required(VERSION 3.16)

    include($ENV{IDF_PATH}/tools/cmake/project.cmake)
    list(APPEND EXTRA_COMPONENT_DIRS esp-aws-iot)
    project(subscribe_publish)

Warning

Since src_dir is also passed to CMake as an extra component, you should only append to `EXTRA_COMPONENT_DIRS` variable in order not to override the default package.

Since the build may not work correctly if the full path to sources is greater than 250 characters (see `CMAKE_OBJECT_PATH_MAX`) it might be a good idea to keep modules close to the project files.

#### ULP coprocessor programming

If you want to take measurements using ADC, internal temperature sensor or external I2C sensors, while the main processors are in deep sleep mode you need to use ULP coprocessor. At the moment ULP can be used only with the ESP-IDF.

All ULP code, usually written in assembly in files with `.S` extension, must be placed into a separate directory with the name `ulp` in the root folder of your project. So your project structure should look like this:

    project_dir
    ├── include
    ├── src
    │    ├── CMakeLists.txt
    │    └── main.c
    ├── ulp
    │    └── ulp_code.S
    ├── CMakeLists.txt
    └── platformio.ini

Since PlatformIO uses the code model generated by CMake it’s mandatory to specify ULP source files in `CMakeLists.txt` as well. An example of typical `CMakeLists.txt` for ULP:

    idf_component_register(SRCS "ulp_adc_example_main.c")
    #
    # ULP support additions to component CMakeLists.txt.
    #
    # 1. The ULP app name must be "ulp_main"
    set(ulp_app_name ulp_main)
    #
    # 2. Specify all assembly source files.
    #    Paths are relative because ULP files are placed into a special directory "ulp"
    #    in the root of the project
    set(ulp_s_sources "../ulp/adc.S")
    #
    # 3. List all the component source files which include automatically
    #    generated ULP export file, ${ulp_app_name}.h:
    set(ulp_exp_dep_srcs "ulp_adc_example_main.c")
    #
    # 4. Call function to build ULP binary and embed in project using the argument
    #    values above.
    ulp_embed_binary(${ulp_app_name} ${ulp_s_sources} ${ulp_exp_dep_srcs})

See full examples with ULP coprocessor programming:

- https://github.com/platformio/platform-espressif32/tree/develop/examples/espidf-ulp-adc

- https://github.com/platformio/platform-espressif32/tree/develop/examples/espidf-ulp-pulse

More details are located in the official ESP-IDF documentation - ULP coprocessor programming.

#### Limitations

At the moment several limitations are present:

- No whitespace characters allowed in project paths.

- The `src_filter` option cannot be used.

### Configuration for 3.0, 3.1, 3.2, 3.3

Support for ESP-IDF v3.x is considered obsolete and is not available in the latest platform releases. Please check the platform release notes to figure out what version of the platform should be installed to use required ESP-IDF version, for example:

>     [env:esp32dev]
>     ; v1.10.0 is the last version that supports ESP-IDF v3.3
>     platform = espressif32@1.10.0
>     framework = espidf
>     board = esp32dev

#### Project Structure

Due to limited support of GNU Make build system used in ESP-IDF v3.x, the project configuration depends on a pregenerated file `sdkconfig.h` which contains a list of macro definitions `CONFIG_*`. These definitions describe project settings that will be used for preparing a proper build environment. You can use the default `sdkconfig.h` shipped with the platform or generate a custom one using native ESP-IDF build environment.

A typical PlatformIO project for ESP-IDF v3.x must have the following structure:

    project_dir
    ├── include
    ├── lib
    │   └── README
    ├── test
    ├── src
    │    ├── sdkconfig.h
    │    └── main.c
    └── platformio.ini

#### Enable C++ exceptions

to enable C++ exceptions for ESP-IDF add `-D PIO_FRAMEWORK_ESP_IDF_ENABLE_EXCEPTIONS` to build_flags of “platformio.ini” (Project Configuration File).

See project example with enabled exceptions.

#### ULP coprocessor programming

To use ULP in your project you need to make sure that it’s enabled in the `sdkconfig.h` configuration file. The following two lines must be added:

    #define CONFIG_ULP_COPROC_ENABLED 1
    #define CONFIG_ULP_COPROC_RESERVE_MEM 1024

Usually `CONFIG_ULP_COPROC_RESERVE_MEM` is already defined in the default `sdkconfig.h` with value `0`. You can modify this value to meet your requirements.

All ULP code, usually written in assembly in files with `.S` extension, must be placed into a separate directory with the name `ulp` in the root folder of your project. So your project structure should look like this:

    project_dir
    ├── include
    ├── lib
    │   └── README
    ├── test
    ├── src
    │    ├── main.c
    │    └── sdkconfig.h
    ├── ulp
    │    └── ulp_code.S
    └── platformio.ini

See full examples with ULP coprocessor programming for ESP-IDF v3.x:

- https://github.com/platformio/platform-espressif32/tree/v1.10.0/examples/espidf-ulp-adc

- https://github.com/platformio/platform-espressif32/tree/v1.10.0/examples/espidf-ulp-pulse

## Debugging

PIO Unified Debugger - “1-click” solution for debugging with a zero configuration.

- Tools & Debug Probes

  - On-Board Debug Tools

  - External Debug Tools

### Tools & Debug Probes

Supported debugging tools are listed in “Debug” column. For more detailed information, please scroll table by horizontal. You can switch between debugging Tools & Debug Probes using debug_tool option in “platformio.ini” (Project Configuration File).

Warning

You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

#### On-Board Debug Tools

Boards listed below have on-board debug probe and ARE READY for debugging! You do not need to use/buy external debug probe.

Name | Platform | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | ---
Espressif ESP-WROVER-KIT | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB

#### External Debug Tools

Boards listed below are compatible with PIO Unified Debugger but DEPEND ON external debug probe. They ARE NOT READY for debugging. Please click on board name for the further details.

Name | Platform | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | ---
AI Thinker ESP32-CAM | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
AZ-Delivery ESP-32 Dev Kit C V4 | Espressif 32 | ESP32 | 240MHz | 16MB | 520KB
Adafruit ESP32 Feather | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
D-duino-32 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
DOIT ESP32 DEVKIT V1 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
Dongsen Tech Pocket 32 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
ESP32 FM DevKit | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
ESP32vn IoT Uno | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
ESPectro32 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
ESPino32 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
Espressif ESP32 Dev Module | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
FireBeetle-ESP32 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
Frog Board ESP32 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
Heltec WiFi LoRa 32 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
Heltec WiFi LoRa 32 (V2) | Espressif 32 | ESP32 | 240MHz | 8MB | 320KB
Heltec Wireless Stick | Espressif 32 | ESP32 | 240MHz | 8MB | 320KB
Hornbill ESP32 Dev | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
Hornbill ESP32 Minima | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
MH ET LIVE ESP32DevKIT | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
MH ET LIVE ESP32MiniKit | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
Node32s | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
NodeMCU-32S | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
OLIMEX ESP32-DevKit-LiPo | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
OLIMEX ESP32-EVB | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
OLIMEX ESP32-GATEWAY | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
Pycom LoPy | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
Pycom LoPy4 | Espressif 32 | ESP32 | 240MHz | 4MB | 1.25MB
SG-O AirMon | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
Silicognition wESP32 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
SparkFun ESP32 Thing | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
SparkFun LoRa Gateway 1-Channel | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
TTGO LoRa32-OLED V1 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
TTGO LoRa32-OLED V2 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
TTGO T-Beam | Espressif 32 | ESP32 | 240MHz | 4MB | 1.25MB
TTGO T1 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
VintLabs ESP32 Devkit | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
WEMOS LOLIN D32 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
WEMOS LOLIN D32 PRO | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
WEMOS LOLIN32 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
WeMos D1 MINI ESP32 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
WeMos WiFi and Bluetooth Battery | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
XinaBox CW02 | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
oddWires IoT-Bus Io | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB
oddWires IoT-Bus Proteus | Espressif 32 | ESP32 | 240MHz | 4MB | 320KB

## Examples

- ESP-IDF for Espressif 32

## Platforms

Name | Description
--- | ---
Espressif 32 | Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

## Boards

Note

- You can list pre-configured boards by platformio boards command or PlatformIO Boards Explorer

- For more detailed `board` information please scroll the tables below by horizontally.

### AI Thinker

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
AI Thinker ESP32-CAM | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### AZ-Delivery

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
AZ-Delivery ESP-32 Dev Kit C V4 | Espressif 32 | External | ESP32 | 240MHz | 16MB | 520KB

### Adafruit

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Adafruit ESP32 Feather | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### Aiyarafun

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Node32s | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### April Brother

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
April Brother ESPea32 | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB

### BPI Tech

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
BPI-Bit | Espressif 32 | No | ESP32 | 160MHz | 4MB | 320KB

### DFRobot

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
FireBeetle-ESP32 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### DOIT

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
DOIT ESP32 DEVKIT V1 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### DSTIKE

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
D-duino-32 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### Dongsen Technology

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Dongsen Tech Pocket 32 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### DycodeX

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
ESPectro32 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### ESP32vn

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
ESP32vn IoT Uno | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### Electronic SweetPeas

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Electronic SweetPeas ESP320 | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB

### Espressif

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
ESP32 Pico Kit | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB
Espressif ESP-WROVER-KIT | Espressif 32 | On-board | ESP32 | 240MHz | 4MB | 320KB
Espressif ESP32 Dev Module | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### Fred

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Frog Board ESP32 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### Hardkernel

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
ODROID-GO | Espressif 32 | No | ESP32 | 240MHz | 16MB | 320KB

### Heltec Automation

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Heltec WiFi Kit 32 | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB
Heltec WiFi LoRa 32 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
Heltec WiFi LoRa 32 (V2) | Espressif 32 | External | ESP32 | 240MHz | 8MB | 320KB
Heltec Wireless Stick | Espressif 32 | External | ESP32 | 240MHz | 8MB | 320KB

### Hornbill

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Hornbill ESP32 Dev | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
Hornbill ESP32 Minima | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### IntoRobot

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
IntoRobot Fig | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB

### M5Stack

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
M5Stack Core ESP32 | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB
M5Stack FIRE | Espressif 32 | No | ESP32 | 240MHz | 16MB | 6.25MB
M5Stack GREY ESP32 | Espressif 32 | No | ESP32 | 240MHz | 16MB | 520KB
M5Stick-C | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB

### MH-ET Live

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
MH ET LIVE ESP32DevKIT | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
MH ET LIVE ESP32MiniKit | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### Magicblocks.io

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
MagicBit | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB

### MakerAsia

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
MakerAsia Nano32 | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB

### Microduino

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Microduino Core ESP32 | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB

### NodeMCU

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
NodeMCU-32S | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### Noduino

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Noduino Quantum | Espressif 32 | No | ESP32 | 240MHz | 16MB | 320KB

### OLIMEX

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
OLIMEX ESP32-DevKit-LiPo | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
OLIMEX ESP32-EVB | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
OLIMEX ESP32-GATEWAY | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
OLIMEX ESP32-PRO | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB
OLIMEX ESP32-PoE | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB
OLIMEX ESP32-PoE-ISO | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB

### OROCA

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
OROCA EduBot | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB

### Onehorse

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Onehorse ESP32 Dev Module | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB

### Pycom Ltd.

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Pycom GPy | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB
Pycom LoPy | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
Pycom LoPy4 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 1.25MB

### Qmobot LLP

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Qchip | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB

### SG-O

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
SG-O AirMon | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### Silicognition

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Silicognition wESP32 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### SparkFun

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
SparkFun LoRa Gateway 1-Channel | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### SparkFun Electronics

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
SparkFun ESP32 Thing | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### TTGO

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
TTGO LoRa32-OLED V1 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
TTGO LoRa32-OLED V2 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
TTGO T-Beam | Espressif 32 | External | ESP32 | 240MHz | 4MB | 1.25MB
TTGO T-Watch | Espressif 32 | No | ESP32 | 240MHz | 16MB | 320KB
TTGO T1 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### ThaiEasyElec

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
ESPino32 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### TinyPICO

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
TinyPICO | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB

### Turta

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Turta IoT Node | Espressif 32 | No | ESP32 | 240MHz | 4MB | 320KB

### Unknown

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
ESP32 FM DevKit | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### VintLabs

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
VintLabs ESP32 Devkit | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### WEMOS

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
WEMOS LOLIN D32 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
WEMOS LOLIN D32 PRO | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
WEMOS LOLIN32 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
WeMos D1 MINI ESP32 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
WeMos WiFi and Bluetooth Battery | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### Widora

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
Widora AIR | Espressif 32 | No | ESP32 | 240MHz | 16MB | 320KB

### XinaBox

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
XinaBox CW02 | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### oddWires

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
oddWires IoT-Bus Io | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB
oddWires IoT-Bus Proteus | Espressif 32 | External | ESP32 | 240MHz | 4MB | 320KB

### u-blox

Name | Platform | Debug | MCU | Frequency | Flash | RAM
--- | --- | --- | --- | --- | --- | ---
u-blox NINA-W10 series | Espressif 32 | No | ESP32 | 240MHz | 2MB | 320KB