ESP32 follow-on course

Take your Uno skills onto Wi-Fi and Bluetooth boards

17 lessons in 3 parts that follow the Arduino Uno course: 3.3 V boards and pin maps, NeoPixels, Wi-Fi, web servers, HTTP and JSON, MQTT, Bluetooth LE, deep sleep, FreeRTOS and over-the-air updates.

Not part of the Uno class schedule. Start it once you have finished the Uno course.

Path through the ESP32 course: Foundations, then Wireless, then Advanced
Your ESP32 progress0 of 17 lessons done

Before you start

Each ESP32 lesson assumes these Uno skills and does not teach them again. If one feels shaky, revise that Uno lesson first.

What you need

Every lesson

A classic ESP32 DevKit (IDE board: ESP32 Dev Module), a USB data cable - not charge-only - and Arduino IDE 2 with the esp32 board package.

Bench parts

Breadboard and jumpers, LEDs with 220-330 ohm resistors, a push-button and a 10 k ohm potentiometer - the same parts as the Uno kit.

NeoPixels

An 8-LED WS2812 strip or stick (E06) and an 8x8 WS2812 matrix (E07), an external 5 V supply and a 330-470 ohm data resistor.

Sensors

The DHT11 from the Uno kit (E11). Optional: an HC-SR04 and a 2.2 k / 3.3 k ohm divider (E03).

Network and phone

2.4 GHz Wi-Fi with a known name and password (internet access for E10), a phone or PC on the same network, and a BLE scanner app such as nRF Connect (E13).

Libraries

Adafruit NeoPixel (E06, E07), ArduinoJson by Benoit Blanchon (E10), PubSubClient by Nick O'Leary with the Adafruit DHT sensor library (E11). Wi-Fi, web server, BLE and OTA libraries come with the board package.

3.3 V rule

ESP32 pins are 3.3 V. Never connect a 5 V signal straight to a GPIO pin - E03 shows how to level-shift safely.

Parts list for each lesson
LessonParts and preparation
E01Arduino IDE 2, USB data cable (not charge-only), and one ESP32-family board. Course practicals default to a classic ESP32 DevKit (ESP32 Dev Module). C3/C5/C6/P4 are fine for this intro if you pick the matching Board menu entry.
E02ESP32 DevKit (classic ESP32 Dev Module recommended), USB data cable, Arduino IDE 2 with esp32 by Espressif Systems installed.
E03ESP32 DevKit, USB data cable, push-button, LED + 220-330 ohm resistor, jumper wires. Optional: two resistors (e.g. 2.2 k ohm and 3.3 k ohm) for a 5 V echo divider demo; optional HC-SR04.
E04ESP32 DevKit, 10 k ohm potentiometer, breadboard, jumper wires.
E05ESP32 DevKit, LED, 220-330 ohm series resistor, 10 k ohm potentiometer, breadboard, jumper wires.
E06ESP32 DevKit, 8-LED WS2812 / NeoPixel strip or stick, external 5 V supply, ~330-470 ohm data resistor, optional bulk capacitor, jumper wires. Library: Adafruit NeoPixel by Adafruit.
E07ESP32 DevKit, 8x8 WS2812 / NeoPixel matrix (serpentine), external 5 V supply, ~330-470 ohm data resistor, jumper wires. Library: Adafruit NeoPixel by Adafruit.
E08ESP32 DevKit (classic Wi-Fi capable), USB data cable, 2.4 GHz Wi-Fi with known SSID and password. No external components.
E09ESP32 DevKit, USB, LED + 220-330 ohm on GPIO 2 (room lamp stand-in), same Wi-Fi as phone/PC.
E10ESP32 DevKit, USB, LED on GPIO 2, ArduinoJson by Benoit Blanchon, internet-capable 2.4 GHz WiFi.
E11ESP32 DevKit, USB, LED + resistor on GPIO 2 (heater sim). Sketch 1 needs no DHT. Sketch 2: DHT11 data on GPIO 4, 3.3 V and GND (add 4.7k-10k pull-up on data if your module has none). Libraries: PubSubClient by Nick O'Leary; sketch 2 also Adafruit DHT sensor library + Adafruit Unified Sensor.
E12ESP32 DevKit, USB, phone or PC that can join SoftAP ESP32-Setup.
E13ESP32 board with Bluetooth LE (classic ESP32 or C3/C5/C6 - not P4 without companion). USB data cable, LED + resistor on GPIO 2 (desk lamp stand-in). Phone with nRF Connect or similar.
E14ESP32 DevKit, USB data cable, 10 k ohm potentiometer on GPIO 34 (stand-in field sensor) for sketch 2. Sketch 1 needs USB only.
E15ESP32 DevKit (dual-core classic preferred), USB cable, LED on GPIO 2, potentiometer on GPIO 34 for sketch 2.
E16ESP32 DevKit on the same LAN as your PC, USB for first flash, LED on GPIO 2, Wi-Fi credentials.
E17ESP32 DevKit, USB data cable, 10 k ohm potentiometer on GPIO 34 (room comfort / level stand-in), LED + series resistor on GPIO 2 (alert lamp), breadboard and jumpers. Libraries: WiFi.h and WebServer.h only (built into the esp32 core).

The three parts

Work through the lessons in order. Mark each one complete at the top of its page.

7 lessons, E01-E07 · about 17-22 hours

Part 1 · Foundations

Meet the board, work safely at 3.3 V, learn the pin map and PWM, then drive NeoPixel strips and matrices.

5 lessons, E08-E12 · about 16-19 hours

Part 2 · Wireless

Wi-Fi station and access point modes, a web server you control from a phone, HTTP and JSON, MQTT and Wi-Fi setup without hard-coded passwords.

5 lessons, E13-E17 · about 16-18 hours

Part 3 · Advanced

Bluetooth LE, deep sleep for battery nodes, FreeRTOS tasks, over-the-air updates and a capstone that combines them.