Embedded track
ESP32

An ESP32 course, from first light to WiFi and BLE

Pins at 3.3 V, interrupts, a screen and NeoPixels on the ESP32-C3, then WiFi, a web server, MQTT, ESP-NOW and Bluetooth on the ESP32.

FreeIn your browser3 courses, 27 lessons, about 21 hours
Start freeFirst light on the C3See the course
Overview

How you will learn it

The ESP32 is the board most connected projects use: cheap, fast and with WiFi and Bluetooth built in. It also has its own rules, from 3.3 V pins to a different PWM peripheral, which is why it gets a course of its own.

Embedded on the ESP32-C3 covers the board itself: pins, interrupts, Serial, an OLED and NeoPixels, ending in a memory game and a console. Connected devices then takes it online, one protocol per lesson.

Outcomes

What you will learn

  • Wire inputs and outputs for 3.3 V logic and use interrupts well.
  • Drive an I2C OLED and a strip of addressable LEDs.
  • Join WiFi, call an API and serve a web page from the board.
  • Write MQTT publish code, send data peer to peer with ESP-NOW and make a BLE device a phone can find.
Your route

The courses and lessons to take

Every lesson opens in the editor right away, signed in or not, and the simulator checks each step.

  1. Step 1 路 13 lessons 路 11 h

    Embedded on the ESP32-C3

    The board itself, from first light to a console.

    1. First light on the C3One pin, one lamp, one program on a RISC-V board. Why 3.3 V changes the resistor you pick, and what the board does while it waits.
    2. Interrupts, and what they costA handler that runs the moment a pin falls, a counter shared with the main loop, and the bounce that makes one press count as four.
    3. A screen on two wiresA 128x64 OLED over I2C, bit-banged on two pins. Addresses, acknowledgments, a frame buffer in RAM, and what a redraw costs.
    4. Color on one wireSixteen addressable LEDs on a single pin, and a protocol where the length of a pulse is the bit. The timing is the whole problem.
    Every lesson in the course
  2. Step 2 路 7 lessons 路 4 h

    Connected devices

    WiFi and radio, one protocol per lesson.

    1. Joining WiFiThe connect loop every connected device starts with: WiFi.begin, the states a station walks through, the address DHCP hands out, and what a wrong password and a wrong network name look like.
    2. A web serverThe board serves a page: a WiFiServer on port 80 reads the browser鈥檚 request a line at a time, switches two LEDs from the path, and prints the page back.
    3. MQTT with PubSubClientPublish and subscribe through a broker: topics, payloads, QoS and retained messages, the PubSubClient connect loop with its error codes, and the same reading sent over HTTP where the simulator has no broker.
    4. BLE: a lamp your phone can findBluetooth Low Energy the way phones see it: a GATT server with the Nordic UART service, a characteristic to write, notifications back, and advertising again after a phone leaves.
    Every lesson in the course
  3. Step 3 路 7 lessons 路 6 h

    Build a handheld game console

    A build to finish with: a handheld game console on the C3.

    Wire a color screen, buttons and sound to an ESP32-C3, one working step at a time, and finish with three games you can play.

    Every lesson in the course
Keep going

Guides and tools on the same subject

Track

Embedded track

Arduino, ESP32, Raspberry Pi Pico and STM32: pins, timing, buses, motors, WiFi, registers and debugging, every lesson checked on a simulated board.

See the whole track
Questions

Questions people ask

Should I learn Arduino before the ESP32?

It helps but is not required. The ESP32-C3 course starts at first light. If you have never written a sketch, Embedded on the Arduino Uno is the gentler start.

Can a simulator really do WiFi?

Yes. Connected devices runs the WiFi, web server, ESP-NOW and BLE code on a simulated ESP32, so you can see each request and reply. MQTT is the one exception: the simulator has no broker, so that lesson sends the same reading over HTTP.

Which ESP32 does the course use?

The ESP32-C3, a RISC-V chip, for the board course, and the classic ESP32 for Connected devices. The code carries over to other ESP32 boards with small pin changes.