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:
- Measures temperature, humidity, and pressure via I²C sensor
- Transmits data over Wi‑Fi every 5 minutes
- Sleeps in deep sleep mode between readings
- Runs for months on a single LiPo battery
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:
- Understand circuits — voltage dividers, current limiting, power budgets
- Master microcontrollers — GPIO, PWM, ADC, I²C, UART
- Optimize power — deep sleep, duty cycling, efficient protocols
- Ship something — validation, enclosure, deployment
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
- The capstone is a battery-powered ESP32 environmental monitor
- You’ll learn circuits → microcontrollers → ESP32 → capstone
- Every lesson builds toward the final project
- Real projects require power optimization and careful design
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
- ESP32-DevKitC or ESP32-WROOM-32 module
- SHT31 or BME280 sensor (I²C, 3.3V)
- LiPo battery (3.7V, 2000mAh recommended)
- LiPo charger/protection board (TP4056 + DW01)
- Breadboard + jumper wires
- 10kΩ resistors (for I²C pull-ups)
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