Skip to content
Free public beta until December 4, 2026: every course is open, no card needed. After that, the first chapter of each course stays free and full access is a one-time $39 ($19 for up to 100 founding members chosen for helpful feedback). Your progress is kept. How the beta works

Embedded Systems and the Internet of Things

Arduino and ESP32 from a standing start -- the electricity a programmer needs, real toolchains, and firmware on real boards.

Free to read now, no account needed: Before you start. Create a free account to open the other chapters, take the quizzes and keep your progress.

My setup

Lessons that differ by operating system or tool show your choice first, and fold away notes meant for other setups. You can switch tabs in any lesson β€” it remembers what you pick.

Operating system

Tool

Board

1 Choosing and buying your kit πŸ”’

Create a free account to open this chapter.

  • Anatomy of a dev board ~30 min
  • Choosing a board ~30 min
  • The starter kit ~25 min
  • Buying parts wisely ~25 min
  • Tools of the trade ~25 min

2 Voltage, current, and resistance πŸ”’

Create a free account to open this chapter.

  • Charge and current ~25 min
  • Voltage and ground ~30 min
  • Resistance and Ohm's law ~35 min
  • Power, energy, and heat ~35 min
  • Measuring with a multimeter ~40 min

3 Circuits on a breadboard πŸ”’

Create a free account to open this chapter.

  • Breadboards and prototyping ~25 min
  • Reading schematics ~25 min
  • Series and parallel ~35 min
  • Kirchhoff's laws ~30 min
  • Voltage dividers ~35 min
  • LEDs and current limiting ~40 min

4 Components you will use every day πŸ”’

Create a free account to open this chapter.

  • Resistors in practice ~35 min
  • Capacitors ~35 min
  • RC time constants ~40 min
  • Inductors and kickback ~30 min
  • Diodes ~45 min
  • Buttons, switches and potentiometers ~40 min

5 Switching real loads πŸ”’

Create a free account to open this chapter.

  • GPIO is not a power supply ~35 min
  • The transistor as a switch ~40 min
  • MOSFETs ~40 min
  • Relays and solid-state relays ~35 min
  • Driving motors safely ~40 min

6 Power rails and logic levels πŸ”’

Create a free account to open this chapter.

  • Voltage regulators ~40 min
  • Powering a board safely ~35 min
  • Logic levels and noise margins ~40 min
  • 3.3 V vs 5 V and level shifting ~45 min
  • Pull-ups, pull-downs and open-drain ~45 min
  • Protection and wiring failures ~40 min

7 Signals: analog, digital, and PWM πŸ”’

Create a free account to open this chapter.

  • Analog vs digital signals ~30 min
  • How an ADC works ~45 min
  • PWM ~40 min
  • From PWM to analog ~40 min
  • Reading a datasheet ~45 min
  • Oscilloscopes and logic analyzers ~40 min

8 Setting up your toolchain πŸ”’

Create a free account to open this chapter.

  • The Arduino IDE ~40 min
  • arduino-cli ~40 min
  • PlatformIO and VS Code ~45 min
  • Serial monitor and plotter ~40 min
  • Libraries and dependencies ~40 min
  • Ports, drivers and permissions ~40 min

9 From source code to running firmware πŸ”’

Create a free account to open this chapter.

  • Compile, link, and firmware images ~45 min
  • Cross-compilation and architectures ~35 min
  • Bootloaders and uploading ~45 min
  • USB serial, native USB and debug ports ~35 min
  • Project layout and git ~40 min
  • When flashing fails ~35 min

10 Just enough C++ for firmware πŸ”’

Create a free account to open this chapter.

  • Reading a sketch ~35 min
  • Variables, types and constants ~35 min
  • Operators and expressions ~40 min
  • Making decisions and repeating ~45 min
  • Functions ~40 min
  • Arrays, scope and lifetime ~45 min

11 Your first firmware πŸ”’

Create a free account to open this chapter.

  • Blink, and the main() you never wrote ~30 min
  • Types on a microcontroller ~35 min
  • Digital outputs ~40 min
  • Digital inputs and floating pins ~40 min
  • Serial output for debugging ~40 min
  • Reading analog values ~45 min
  • PWM output ~45 min

12 Time without blocking πŸ”’

Create a free account to open this chapter.

  • Why delay hurts ~35 min
  • Millis and elapsed time ~45 min
  • Debouncing in software ~45 min
  • Finite state machines ~50 min
  • Many things at once ~50 min

13 Structuring firmware πŸ”’

Create a free account to open this chapter.

  • Functions and modules ~45 min
  • Strings and memory on small chips ~45 min
  • Defensive firmware ~45 min
  • Hardware abstraction ~45 min
  • A reusable sensor library ~45 min
  • Testing firmware logic on your computer ~50 min

14 C on the metal πŸ”’

Create a free account to open this chapter.

  • Why C and C++ ~35 min
  • Pointers and addresses ~40 min
  • Structs, enums and fixed-width types ~40 min
  • Bit manipulation ~40 min
  • Volatile and memory-mapped registers ~45 min

15 Modern C++ without the bloat πŸ”’

Create a free account to open this chapter.

  • Classes and RAII for peripherals ~40 min
  • Const, constexpr and compile-time configuration ~35 min
  • Templates for zero-cost drivers ~45 min
  • Dynamic allocation and fragmentation ~40 min
  • The standard library on embedded ~35 min
  • Size and speed ~45 min

16 Sensors πŸ”’

Create a free account to open this chapter.

  • Reading a sensor datasheet ~35 min
  • Temperature and humidity ~60 min
  • Light, pressure and altitude ~45 min
  • Distance and proximity ~50 min
  • Motion and IMUs ~45 min
  • Hall-effect sensors and encoders ~50 min
  • Gas and air quality ~40 min

17 Actuators and human interfaces πŸ”’

Create a free account to open this chapter.

  • Buttons, keypads and rotary encoders ~50 min
  • Displays ~55 min
  • Buzzers and sound ~45 min
  • Servos ~45 min
  • DC motors and drivers ~55 min
  • Stepper motors ~55 min
  • Addressable LEDs ~55 min
  • Capacitive touch ~45 min

18 Making sense of sensor data πŸ”’

Create a free account to open this chapter.

  • Accuracy, precision and resolution ~35 min
  • Calibration ~45 min
  • Noise and filtering ~50 min
  • Thresholds and hysteresis ~40 min
  • Comparators ~45 min
  • Combining sensors ~45 min

19 Talking to other chips πŸ”’

Create a free account to open this chapter.

  • UART ~50 min
  • IΒ²C ~55 min
  • SPI ~50 min
  • One-wire and other single-wire protocols ~50 min
  • Reading timing diagrams ~50 min
  • Shift registers for more pins ~50 min
  • USB device mode ~45 min
  • CAN bus fundamentals ~45 min
  • Designing a device protocol ~60 min

20 Inside the microcontroller πŸ”’

Create a free account to open this chapter.

  • What happens at power on ~45 min
  • The memory map ~40 min
  • Polling vs interrupts ~45 min
  • Writing safe isrs ~55 min
  • Hardware timers and counters ~50 min
  • Dma where supported ~35 min

21 Real-time programming and FreeRTOS πŸ”’

Create a free account to open this chapter.

  • Real time is about deadlines ~40 min
  • Cooperative vs preemptive ~40 min
  • Freertos tasks and priorities ~55 min
  • Queues semaphores and mutexes ~55 min
  • Esp32 cores and tasks ~40 min
  • Races deadlocks and priority inversion ~55 min
  • Measuring latency ~45 min

22 Memory and reliability πŸ”’

Create a free account to open this chapter.

  • Stack, heap and static ~45 min
  • Ring buffers ~45 min
  • Persistent storage ~50 min
  • Watchdogs and fault recovery ~50 min
  • Brownouts and graceful degradation ~50 min
  • Low-level debugging ~50 min

23 Power and battery life πŸ”’

Create a free account to open this chapter.

  • Power budgets ~45 min
  • Batteries and charging safety ~45 min
  • Regulator efficiency and quiescent current ~40 min
  • Sleep modes and wake sources ~50 min
  • Duty cycling ~45 min
  • Measuring current ~45 min
  • Solar and energy harvesting ~40 min
  • Enclosures and the environment ~40 min

24 Capstone projects πŸ”’

Create a free account to open this chapter.

  • Engineering a project ~45 min
  • Capstone environmental monitor ~60 min
  • Capstone room controller ~60 min
  • Capstone sensor data logger ~60 min
  • Capstone battery powered remote sensor ~60 min