← all lessons
The Promise + Safety · #0 of 48

Course Map

What You'll Build

Why it matters

By the end of this course, you’ll build a battery-powered ESP32 environmental monitor that runs for months on a single charge. This is the roadmap.

The idea

The Capstone Project

You’ll build a battery-powered ESP32 environmental monitor that:

flowchart TD
    Start[Power On] --> Wake[Wake from Deep Sleep]
    Wake --> Read[Read I2C Sensor]
    Read --> WiFi[Connect WiFi + Transmit]
    WiFi --> Sleep[Deep Sleep 5min]
    Sleep --> Wake

Why This Matters

Most tutorials show you how to blink an LED. Real projects need to:

The Learning Path

We’ll start with basic electronics (Ohm’s Law, components), then microcontroller fundamentals (GPIO, PWM, ADC, I²C), then ESP32 specifics (deep sleep, Wi‑Fi), and finally put it all together in the capstone.

Demo

This is a course overview — no demo yet! Scroll down to see the full curriculum organized by phase.

Key takeaways

Going deeper

This course uses Rust as the primary toolchain (esp-hal / esp-idf). Rust’s memory safety and zero-cost abstractions make it ideal for embedded systems. If you’re new to Rust, don’t worry — we’ll cover the essentials as we go.

Math details

The capstone power budget (rough estimate):
  Active mode: 80mA × 2s = 160mAs per reading
  Deep sleep: 10µA × 298s = 2.98mAs per cycle
  Total per 5min cycle: ~163mAs

  For a 2000mAh battery:
  Cycles = (2000mAh × 3600s/h) / 163mAs ≈ 44,000 cycles
  Lifetime ≈ 44,000 × 5min ≈ 153 days

  (Real-world will be less due to Wi‑Fi connection overhead, but this shows the math.)

Implementation

Hardware Shopping List

Software Setup

# Install Rust toolchain
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Install espup (ESP32 Rust toolchain installer)
cargo install espup

# Set up ESP32 Rust environment
espup install

LLM Prompt: Project Scaffold

Create a Rust project scaffold for ESP32 using esp-hal.
Include: Cargo.toml with esp32-hal dependency, main.rs with basic
blink LED example, and README with build/flash instructions.
Target: ESP32-WROOM-32

full glossary →