Courses → From Blink to Bot — ESP32-S3 robotics with the Fre…
Lesson 1 · ~18 min · Free preview
The kit on your desk
What's actually in the box, why ESP32-S3 specifically, and how to get a working dev loop in under fifteen minutes.
If you bought the Freenove Ultimate Starter Kit for ESP32-S3 (FNK0082), you are holding about seventy dollars worth of components that — assembled in the right order with the right code — become a small autonomous robot. This course is the through-line that gets you from "here is a box of parts" to "here is a thing that drives around my desk and doesn't hit the coffee mug."
Freenove ships their own tutorial PDF. It is excellent for the "wire this, paste this, it works" use case. We are going to do something different: we will lean on their wiring diagrams (they're already drawn, no point redrawing them) and we will write the part nobody else writes — the why, the what breaks, and the what to build with it.
What's in the box
The Freenove FNK0082 is a "starter kit" in the same sense that a moving truck is a "vehicle." It contains:
- An ESP32-S3 dev board — the brain. Dual-core 240 MHz Tensilica LX7, 512 KB SRAM, WiFi 4 (2.4 GHz only), Bluetooth 5 LE, and roughly 45 usable GPIO pins.
- A solderless breadboard — the prototyping surface every component plugs into.
- Sensors — at least an HC-SR04 ultrasonic ranger, a DHT11 temperature/humidity sensor, a photoresistor, a PIR motion sensor, and a few digital inputs (buttons, a tilt switch).
- Actuators — an SG90 hobby servo, a small DC motor with an L293D-style driver, a buzzer, a stepper motor with its ULN2003 driver board.
- Displays — an SSD1306-style 0.96" OLED, an LCD1602 with an I²C backpack, a small 8×8 dot matrix.
- Indicators — LEDs (red, green, blue, yellow, white), an RGB LED, a 7-segment digit, a 4-digit 7-segment, an RGB pixel ring.
- Passive components — resistors (a value tree from 220 Ω to 10 kΩ), capacitors, diodes, transistors.
- A bag of jumper wires, the box where dreams go to die when you can't find the orange one.
You do not need anything else to follow this course. (You will eventually want a small toolbox: a multimeter, a pair of helping-hands, a USB-C cable that is actually a data cable and not a charge-only one. We'll flag those as they become useful.)
Why the ESP32-S3, specifically
If you came from Arduino Uno, the S3 is going to feel like cheating. If you came from a Raspberry Pi, it's going to feel like camping. Knowing where the line is matters.
| Property | Uno R3 | ESP32-S3 | Raspberry Pi 4 |
|---|---|---|---|
| CPU | 16 MHz AVR, 1 core | 240 MHz LX7, 2 cores | 1.5 GHz ARM, 4 cores |
| RAM | 2 KB | 512 KB on-chip | 1–8 GB |
| Flash | 32 KB | 8 MB typical | SD card |
| WiFi / Bluetooth | None | Both, built-in | Both, built-in |
| Boot time | ~50 ms | ~300 ms | ~30 s (Linux) |
| Power budget | ≈40 mA active | ≈80 mA active, low-power modes down to µA | ≈600 mA idle |
| Realtime control | Native | Native (RMT, MCPWM, hardware timers) | Best-effort (Linux) |
The S3 sits in the sweet spot for hobby robotics. It boots fast like a microcontroller (so it's reasonable to power-cycle), has hardware peripherals for accurate PWM and pulse capture (so PID loops aren't fighting Linux scheduler jitter), and has WiFi for telemetry without bolting on a separate radio board.
The trade-off: you don't get Linux, so heavyweight perception (vision, SLAM with maps in RAM) doesn't fit. For that you'll graduate to a Pi or a Jetson eventually. But everything in this course — sensing, control, motor commands, simple navigation — runs comfortably on the S3.
Set up the dev loop
You can program the S3 from Arduino IDE, PlatformIO inside VS Code, or directly from ESP-IDF (Espressif's official C/C++ framework). We'll use Arduino IDE in this course because that's what Freenove's reference materials assume. When you want to graduate, you can paste any of this code into PlatformIO unchanged.
Install the Arduino IDE
- Go to arduino.cc/en/software and download Arduino IDE 2.x. (Version 1.8 still works but the new UI is genuinely better.)
- Install and launch.
- Open
Arduino IDE → Settings → Additional boards manager URLs. Add this URL:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - Open Tools → Board → Boards Manager, search "esp32", and install the package called esp32 by Espressif Systems. It's about 200 MB and takes a few minutes the first time.
- Plug in the S3 with a USB-C cable. This is the most common silent failure of the whole course — a lot of USB-C cables shipped with phones are charge-only. Look for one that says data on the bag or use the cable Freenove included.
- Select Tools → Board → esp32 → ESP32S3 Dev Module.
- Select the port that just appeared after you plugged the board in (e.g.
/dev/tty.usbmodem*on macOS,COM*on Windows).
Verify with Blink
Paste this into a new sketch and click Upload (the arrow icon):
void setup() {
// GPIO 2 is wired to the onboard LED on most ESP32-S3 dev boards.
// If yours doesn't blink, try GPIO 48 (RGB LED) or check Freenove's
// pinout reference for your specific board revision.
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
delay(500);
}
Three things should happen:
- The IDE compiles for ~10 seconds.
- The board's USB activity light flashes during upload.
- The onboard LED begins blinking at 1 Hz.
If you get an error about "A fatal error occurred: Failed to connect to ESP32-S3", hold down the BOOT button on the board, click Upload, release BOOT when "Connecting…" starts in the IDE. Some board revisions need manual bootloader entry the first time.
Where to find Freenove's reference
Freenove maintains the official tutorial for this kit at freenove.com/fnk0082. Download it now — we'll reference specific chapters from it throughout the course (mostly for wiring diagrams). Don't try to read it end-to-end; it's a reference, not a narrative.
Their structure is one chapter per component. Ours is one lesson per capability: this lesson is "the kit on your desk," not "chapter 1." We'll point at their wiring diagrams when we need them and write our own everything else.
What's next
In the next lesson we'll go beyond "the LED blinks" into what a GPIO pin actually is, what kills them, and how to think about digital output as a control signal rather than a magic spell. After that we'll be ready to start reading the world (sensors), and then we get to drive things (motors, servos, the whole point of robotics).
This first lesson is the free preview. Lessons 2 and 3 are also free so you can see whether the pedagogical style works for you. Lessons 4 through 10 are subscriber-only — that's where the meat is (PWM, distance sensing, motor control, sensor fusion, WiFi telemetry, the final desk-bot build).