Learn by doing

ESP32 Learning Guides

Guides are individual tutorials: choose a skill or part below. Learning Paths arrange those tutorials in an order, with prerequisites and a next step.

15 mission journeys · 31 reference guides

New to ESP32? Read What Is ESP32?, set up the Arduino IDE, then build Blink an LED.

ESP32 guide workspace with development board, laptop, and printed wiring notes

Start here: five beginner steps

Follow this order with a classic ESP32 WROOM DevKit and Arduino-ESP32 3.x. Each guide explains its exact hardware assumptions. Finish each expected result before moving on.

  1. Step 1 · Beginner · 10 min read

    Arduino IDE setup

    Install the board package, select your board and port, then verify a Serial-only upload.

    Parts: ESP32 DevKit, data-capable USB cable and computer.

    Before you start: Start here; no circuit or onboard LED is required.

  2. Step 2 · Beginner · Reading estimate: 10–15 min

    Blink LED

    Wire an external LED and control a digital output.

    Parts: Add an LED, 220 ohm resistor, breadboard and jumper wires.

    Before you start: First confirm the Serial upload in step 1 works.

  3. Step 3 · Beginner · Reading estimate: 15-20 min

    Button input

    Read a button with INPUT_PULLUP and use it to control the LED.

    Parts: Add a pushbutton; reuse the LED circuit and breadboard.

    Before you start: First make the external LED blink in step 2.

  4. Step 4 · Beginner · Reading estimate: 14-18 min

    DHT11 sensor

    Install a sensor library and read temperature and humidity in Serial Monitor.

    Parts: Add a DHT11; check the guide for bare-sensor versus module wiring and pull-up requirements.

    Before you start: Keep the working upload setup and practise the button wiring before adding a sensor.

  5. Step 5 · Beginner · Reading estimate: 10–15 min

    OLED display

    Wire an SSD1306 I2C OLED and show text. Combining sensor values is a later exercise.

    Parts: Add the guide’s 128×64 SSD1306 I2C OLED; verify its supply and signal requirements.

    Before you start: Use the library-installation and Serial Monitor skills from step 4.

Need background first? Read What is ESP32? and the DevKit board guide. After these five steps, choose a sensor path or display path.

Mission Journeys

15 hands-on missions with stories, safety tips, wiring, code, and practical challenges — choose a topic or use the beginner sequence above.

ESP32 blink LED guide with LED circuit on a breadboard
Mission 01FoundationBeginner10–15 minutesParent SafeTeacher Friendly

Blink an LED with ESP32

Your first real ESP32 project — one LED, a few wires, and code you write yourself. Let's make it blink!

Start Mission
Button Led Control guide illustration
Mission 02FoundationBeginner15-20 minutesParent SafeTeacher Friendly

Button Controls LED with ESP32

Connect one side of a push button to ESP32 GPIO22 and the other side to GND, then use INPUT_PULLUP so released reads…

Start Mission
Read Temperature DHT11 guide illustration
Quick BuildBeginner14-18 minutesParent SafeTeacher Friendly

Read Temperature with DHT11

Build a real ESP32 room sensor with the DHT11. You will wire power, ground, and one data pin, then read temperature a…

Start Mission
ESP32 OLED display guide with SSD1306 screen and I2C wiring
Quick BuildBeginner10–15 minutesParent SafeTeacher Friendly

Connect OLED Display with ESP32

Wire a four-pin SSD1306 I2C OLED to ESP32 using 3.3 V, GND, SDA on GPIO21, and SCL on GPIO22 in this site's examples,…

Start Mission
Digital Inputs Floating Pins guide illustration
Mission 03FoundationBeginner18-22 minutesParent SafeTeacher Friendly

ESP32 Digital Inputs and Floating Pins

A floating input has no circuit holding it at a defined HIGH or LOW voltage. An unconnected ESP32 pin does not reliab…

Start Mission
Pull Up Vs Pull Down Resistors guide illustration
Mission 04FoundationBeginner20-25 minutesParent SafeTeacher Friendly

Pull-up vs Pull-down Resistors

A pull-up holds an open input HIGH; a pull-down holds it LOW. Wire the button to the opposite rail: pull-up buttons r…

Start Mission
Debouncing Buttons guide illustration
Mission 05FoundationBeginner20-25 minutesParent SafeTeacher Friendly

Button Debouncing

ESP32 button debounce means waiting until a mechanical button input stays stable before counting it. This mission wir…

Start Mission
Multiple Buttons State Detection guide illustration
Mission 06FoundationBeginner25-30 minutesParent SafeTeacher Friendly

Multiple Buttons & State Detection

To connect multiple buttons to an ESP32, give each button its own GPIO and wire the other side to GND with INPUT_PULL…

Start Mission
Pwm Fundamentals guide illustration
Mission 07FoundationBeginner30-35 minutesParent SafeTeacher Friendly

PWM Fundamentals

Digital pins can switch fully ON or fully OFF. PWM teaches the ESP32 to create useful in-between effects such as dim…

Start Mission
Analog Inputs guide illustration
Mission 08FoundationBeginner35-40 minutesParent SafeTeacher Friendly

Analog Inputs

Read a potentiometer on classic ESP32 GPIO34. Watch raw ADC counts change as you turn the dial; counts are not a cali…

Start Mission
Oled Display Esp32 guide illustration
Mission 09FoundationBeginner40-45 minutesParent SafeTeacher Friendly

OLED Display with ESP32

This tutorial uses an SSD1306 I2C OLED display. Wire VCC to 3.3 V, GND to GND, SDA to GPIO21, and SCL to GPIO22, then…

Start Mission
Reading Analog Sensors guide illustration
Quick BuildFoundationBeginner40-45 minutesParent SafeTeacher Friendly

Reading Analog Sensors

A potentiometer is a dial you control by hand. Analog sensors use the same ADC idea, but the real world turns the dia…

Start Mission
I2C Communication guide illustration
Mission 10FoundationBeginner45-50 minutesParent SafeTeacher Friendly

I2C Communication

Scan a short I2C bus on a classic ESP32-WROOM DevKit: GPIO21 is SDA and GPIO22 is SCL. Learn what an address response…

Start Mission
ESP32 environmental sensors guide with sensor modules on a workbench
Mission 11FoundationBeginner50-60 minutesParent SafeTeacher Friendly

Reading Environmental Sensors

Embedded systems become useful when they observe the physical world. In this mission, your ESP32 reads air conditions…

Start Mission
ESP32 smart environment monitor capstone with sensor readings and display dashboard
Mission 12FoundationBeginner70-90 minutesParent SafeTeacher Friendly

Smart Environment Monitor

This final Foundation mission combines sensors, displays, buttons, GPIO, decisions, and debugging into one complete e…

Start Mission

Reference Guides

31 setup and background articles; read the topics you need alongside hands-on tutorials.

ESP32 board overview workspace for a beginner guideReference GuideBeginner

What Is ESP32? Complete Beginner's Guide

ESP32 is a family of programmable microcontroller chips from Espressif. A development board adds the power and USB circuitry needed to connect one to your co…

Beginner introductionRead Guide
Arduino IDE setup screen with ESP32 board and USB cableReference GuideBeginner

ESP32 with Arduino IDE: Complete Beginner Guide

Want to program your ESP32 from Arduino IDE? This guide takes you from a fresh setup to a successful upload, Serial Monitor output, and the next beginner pro…

18 min readRead Guide
ESP32 push button on a GPIO input using INPUT_PULLUPReference GuideBeginner

ESP32 GPIO and Push Button Guide: Wiring, Arduino Code, Pull-Up & Debouncing

Connect a push button between a suitable ESP32 GPIO and GND, then use INPUT_PULLUP to get a stable released state. This guide explains the wiring, HIGH/LOW l…

10 min readRead Guide
ESP32 PWM guide illustration with LED brightness waveformReference GuideBeginner

ESP32 PWM: Complete Guide to PWM, Pins, Frequency & Duty Cycle

ESP32 PWM lets a digital GPIO create smooth-looking LED brightness, motor-driver speed commands, buzzer tones, and other adjustable outputs. This guide expla…

18 min readRead Guide
ESP32 setup() and loop(): Understand Your First Arduino Sketch guide illustrationReference GuideBeginner

ESP32 setup() and loop(): Understand Your First Arduino Sketch

Learn what setup() and loop() do on ESP32, follow a complete Serial-only sketch, understand variable scope and diagnose repeated startup messages.

Learning referenceRead Guide
ESP32 millis() vs delay(): Non-Blocking Timing for Beginners guide illustrationReference GuideBeginner

ESP32 millis() vs delay(): Non-Blocking Timing for Beginners

Use millis() to schedule two ESP32 Serial messages while accepting commands. Learn elapsed-time subtraction, rollover and the limits of non-blocking code.

Learning referenceRead Guide
ESP32 LED Resistor: Calculate Current and Choose a Safe Value guide illustrationReference GuideBeginner

ESP32 LED Resistor: Calculate Current and Choose a Safe Value

Choose a series resistor for a small ESP32 indicator LED. Work through voltage, current, tolerance and power, then apply the documented Blink wiring.

Learning referenceRead Guide
ESP32 Variables and Data Types: Choose Values That Fit guide illustrationReference GuideBeginner

ESP32 Variables and Data Types: Choose Values That Fit

Learn ESP32 variables, constants and data types with a complete Serial example covering integer division, decimal values, scope and storage size.

Learning referenceRead Guide
ESP32 if, else and switch: Make Clear Decisions guide illustrationReference GuideBeginner

ESP32 if, else and switch: Make Clear Decisions

Use if, else and switch in ESP32 Arduino code. Follow a complete Serial example with boundary cases, character commands and common comparison mistakes.

Learning referenceRead Guide
ESP32 for and while Loops: Repeat Work Without Getting Stuck guide illustrationReference GuideBeginner

ESP32 for and while Loops: Repeat Work Without Getting Stuck

Learn bounded for and while loops in ESP32 Arduino, trace counters and exit conditions, and avoid indefinite waits with a complete Serial-only example.

Learning referenceRead Guide
ESP32 Functions: Write Small, Reusable Arduino Helpers guide illustrationReference GuideBeginner

ESP32 Functions: Write Small, Reusable Arduino Helpers

Write reusable ESP32 Arduino functions with clear parameters and return values. Follow a complete Serial example, local variables and pass-by-value behavior.

Learning referenceRead Guide
ESP32 Arrays and Strings: Group Values and Handle Text guide illustrationReference GuideBeginner

ESP32 Arrays and Strings: Group Values and Handle Text

Learn ESP32 Arduino arrays, zero-based bounds, char buffers and String objects with a complete Serial example and explicit text-capacity checks.

Learning referenceRead Guide
Install Arduino Libraries for ESP32: Names, Versions and Dependencies guide illustrationReference GuideBeginner

Install Arduino Libraries for ESP32: Names, Versions and Dependencies

Install the right ESP32 Arduino library, check its author and dependencies, and diagnose missing headers with a complete USB-only header probe.

Learning referenceRead Guide
ESP32 Compiler Errors: Find the First Useful Diagnostic guide illustrationReference GuideBeginner

ESP32 Compiler Errors: Find the First Useful Diagnostic

Read ESP32 Arduino compiler messages, separate build failures from upload faults, and fix scope, syntax and dependency problems one change at a time.

Learning referenceRead Guide
ESP32 State Machines: Respond While a Timer Runs guide illustrationReference GuideBeginner

ESP32 State Machines: Respond While a Timer Runs

Build a small ESP32 state machine with named states, Serial commands and millis() timing, without a long delay holding up the sketch.

Learning referenceRead Guide
Arduino IDE setup screen with ESP32 board and USB cableReference GuideBeginner

Install Arduino IDE for ESP32 and Upload Your First Sketch

Install Arduino IDE 2, add the official esp32 board package, choose your board and port, then upload a Serial-only sketch. This first test needs no sensor, e…

10 min readRead Guide
BME280 environmental sensor breakout moduleReference GuideBeginner to Intermediate

ESP32 BME280: Complete Guide to Wiring, Code & Sensor Data

Connect a BME280 to an ESP32 over I2C, install the Arduino library, and run a complete sketch that prints temperature, relative humidity, barometric pressure…

12 min readRead Guide
DHT11 temperature and humidity guide concept illustration, not a hardware photographReference GuideBeginner

ESP32 DHT11 Reference: Pinout, Wiring and Troubleshooting

Build a dependable ESP32 temperature-and-humidity reader with the DHT11. Identify the sensor pins, wire a bare sensor or module safely, install the Arduino l…

Read Guide
DHT22 sensor used with an ESP32 in a DHT22 and BME280 comparison guideReference GuideBeginner

DHT22 vs BME280 with ESP32: Differences, Wiring, Accuracy & Which Sensor to Choose

Choose by the measurements your project needs: DHT22 is a simpler temperature-and-humidity sensor, while BME280 adds barometric pressure and supports I2C or…

10 min readRead Guide
DHT11 vs BME280 with ESP32: Which Sensor Fits Your Build? guide illustrationReference GuideBeginner

DHT11 vs BME280 with ESP32: Which Sensor Fits Your Build?

Compare DHT11 and BME280 for ESP32 room monitors and weather projects. Choose by measurements, wiring, sampling and the sensor you own.

Learning referenceRead Guide
ESP32 Sensor Thresholds and Hysteresis: Stop Rapid Toggling guide illustrationReference GuideBeginner

ESP32 Sensor Thresholds and Hysteresis: Stop Rapid Toggling

Use two thresholds and remembered state in ESP32 code. Trace fixed sample values, handle invalid input and separate hysteresis from smoothing.

Learning referenceRead Guide
ESP32 Moving Average: Smooth Values Without Hiding the Tradeoff guide illustrationReference GuideBeginner

ESP32 Moving Average: Smooth Values Without Hiding the Tradeoff

Build a bounded ESP32 moving average with a ring buffer, correct warm-up count and invalid-input checks. Compare raw and averaged illustrative values.

Learning referenceRead Guide
ESP32 Wi-Fi Troubleshooting: Events, IP and Bounded Retries guide illustrationReference GuideIntermediate

ESP32 Wi-Fi Troubleshooting: Events, IP and Bounded Retries

Diagnose classic ESP32 Wi-Fi by separating radio association, IP allocation and application failures. Use a bounded Serial diagnostic sketch before debugging…

Reference guideRead Guide
Basic ESP32 Web Server: A Local Access-Point Example guide illustrationReference GuideIntermediate

Basic ESP32 Web Server: A Local Access-Point Example

Serve a page and an uptime route from a classic ESP32 access point. Connect directly to the board, use its printed HTTP address and learn the limits of this…

Reference guideRead Guide
ESP-NOW with ESP32: Complete Sender, Receiver and Application ACK guide illustrationReference GuideIntermediate

ESP-NOW with ESP32: Complete Sender, Receiver and Application ACK

Send a counter between two classic ESP32 boards on one fixed channel. Set station MAC peers and distinguish local queueing, MAC delivery status and a matchin…

Reference guideRead Guide
ESP32 BLE Fundamentals: Services, UUIDs and a Readable Characteristic guide illustrationReference GuideIntermediate

ESP32 BLE Fundamentals: Services, UUIDs and a Readable Characteristic

Connect a BLE client to a classic ESP32 and read an uptime characteristic. Learn services, UUIDs, read properties and why advertising is different from conne…

Reference guideRead Guide
ESP32 Deep Sleep: Timer, Button Wake and Retained State guide illustrationReference GuideIntermediate

ESP32 Deep Sleep: Timer, Button Wake and Retained State

Wake a classic ESP32 from a ten-second timer or GPIO33 button. Understand restart behavior, RTC state and why a powered DevKit is not a chip-current measurem…

Reference guideRead Guide
ESP32 OTA Updates: First USB Upload and Local Recovery guide illustrationReference GuideIntermediate

ESP32 OTA Updates: First USB Upload and Local Recovery

Install a complete ArduinoOTA sketch by USB, then update it on a trusted local network. Check OTA partitions, password authentication and USB recovery limits.

Reference guideRead Guide
Classic ESP32 versus ESP32-S3: Chip and Board Differences guide illustrationReference GuideIntermediate

Classic ESP32 versus ESP32-S3: Chip and Board Differences

Compare CPU, Bluetooth, USB and GPIO capabilities before choosing a board. A shared ESP32 name does not make classic pin maps or USB workflows portable.

Reference guideRead Guide
CircuitPython Setup: ESP32-S3 Feather with Native USB guide illustrationReference GuideIntermediate

CircuitPython Setup: ESP32-S3 Feather with Native USB

Install CircuitPython 9.2.8 on the Adafruit Feather ESP32-S3 4 MB Flash / 2 MB PSRAM. Use its UF2 bootloader, CIRCUITPY drive and Serial-only first program.

Reference guideRead Guide
ESP32 Access Point vs Station Mode: Choose Your Wi-Fi Setup guide illustrationReference GuideBeginner

ESP32 Access Point vs Station Mode: Choose Your Wi-Fi Setup

Understand ESP32 AP, station and AP+STA modes. Run a complete mode-selection sketch, identify the correct IP interface and separate Wi-Fi from internet access.

Learning referenceRead Guide