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