Getting Started with ESP32
From an empty desk to a blinking LED and your first live sensor reading - each step below links to the exact page you need next.
Already know your board? Open its page for tailored setup →$ esptool.py write_flash 0x0 blink.bin Connecting.... Chip is ESP32-D0WD-V3 (revision v3.1) Writing at 0x00008000... (23 %) Writing at 0x00018000... (61 %) Writing at 0x00028000... (100 %)
Step 1: Get an ESP32 board
An ESP32-S3 DevKit is the best first board
An ESP32-S3 DevKit - Espressif's DevKitC-1 (~$15) or the YD-ESP32-S3 clone (~$10) - breaks out every pin and adds native USB: no driver to install, and usually no holding BOOT to flash. Already following a tutorial written for the classic ESP32 DevKit (~$5)? That board is still fine - only the pin numbers differ. Tight on space or budget? A XIAO, or a Super Mini from ~$3.
Open your board's page - setup is tailored there
Every board page has its own Getting started section: the exact Arduino Tools-menu rows, the PlatformIO and ESPHome board IDs, the flash command, and which USB driver it needs - for that specific board.
Our picks for a first board. All with full setup pages. Start with an S3 devkit, go tiny with a XIAO or a Super Mini (no-brand, so quality varies by batch), or get a screen from day one with the CYD.








Step 2: Pick how you'll program it





Step 3: Flash your first blink
// Blink the onboard LED (GPIO2 on most devkits)
#define LED_PIN 2
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, LOW);
delay(500);
}esphome:
name: my-esp32
esp32:
board: esp32dev
framework:
type: esp-idf
logger:
output:
- platform: gpio
pin: GPIO2
id: onboard_led
interval:
- interval: 1s
then:
- output.turn_on: onboard_led
- delay: 500ms
- output.turn_off: onboard_led# Blink the onboard LED (GPIO2 on most devkits)
from machine import Pin
from time import sleep
led = Pin(2, Pin.OUT)
while True:
led.value(1)
sleep(0.5)
led.value(0)
sleep(0.5)[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200#include <Arduino.h>
#define LED_PIN 2
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, LOW);
delay(500);
}#include <Arduino.h> on top.#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#define LED_PIN GPIO_NUM_2
void app_main(void)
{
gpio_reset_pin(LED_PIN);
gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT);
while (1) {
gpio_set_level(LED_PIN, 1);
vTaskDelay(pdMS_TO_TICKS(500));
gpio_set_level(LED_PIN, 0);
vTaskDelay(pdMS_TO_TICKS(500));
}
}Step 4: Wire your first sensor
All 126 sensors →Recommendations, not a random sample. Cheap, well-documented and satisfying on day one - every card links to wiring, pinout and working code for all five frameworks.








