Source: https://mokxi.com/teachers/plans/iot-capstone
Updated: 2026-11-12

Lesson plan

# IoT capstone: your own connected product lesson plan

Design and build a connected product of your own on the ESP32-C3, milestone by milestone: the brief, the data contract, firmware, a dashboard, failure handling, a security review and a demo.

4 chapters, 7 lessons, about 8 hours, on the ESP32-C3-DevKitM-1. Every lesson runs in the browser, with nothing to install.

Start a class from this course

The unit

## Objectives and materials

### By the end, students can

- Pick a product, write requirements with numbers, and design the data before the code.
- Firmware that never waits, and a dashboard served by the board itself.
- Survive a bad network and a curious attacker.
- A 60 second demo, a release, a README and a link to share.

### Materials for the whole unit

- ESP32-C3-DevKitM-1
- Full-size breadboard
- LED
- Pushbutton
- Resistor
- Temperature and humidity, SHT31

Every part is already on the simulator’s bench, so there is nothing to buy or hand out. The counts are the most any one lesson uses, if you build it on real breadboards too.

Chapter 1. About 2 h 20 min

## Plan it

Pick a product, write requirements with numbers, and design the data before the code.

Lesson | Time | What students do

Pick a product The brief for a connected product of your own, and FridgeWatch, the reference build: a shared-fridge monitor that has to do its one job before it ever touches a network. | 65 min

- The brief
- Predict the reading
- Someone left the door open
- A requirement with a number in it
- A button for right now
- Your version: the brief

Data and API design Design the message before the code: a versioned JSON reading with units in its field names, a round trip through echo.mokxi to prove it parses, and a config pulled from api.mokxi that is checked before it is trusted. | 75 min

- A reading becomes a message
- Units in the names
- A round trip through echo.mokxi
- Settings come from the server
- Feed the parser by hand
- Add a field
- Your version: the data contract

### Materials

- ESP32-C3-DevKitM-1
- Full-size breadboard
- LED
- Pushbutton
- Resistor
- Temperature and humidity, SHT31

### Check for understanding

Each student finishes "Data and API design" on their own, without opening the hints. The simulator checks 7 of its 7 steps as they go.

Then ask each one to explain, in a sentence or two, the last thing it asked of them: "Your version: the data contract".

Chapter 2. About 2 h 10 min

## Build it

Firmware that never waits, and a dashboard served by the board itself.

Lesson | Time | What students do

Firmware The node as one loop that never waits: each job checks its own millis() clock and returns, so the LED keeps blinking while reports go out, and a serial console answers at any moment. | 65 min

- Run it: five jobs, one loop
- Predict the count
- The loop that never waits
- Report twice as often
- Ask it how it is
- Your version: the firmware

Dashboard The node serves its own dashboard and a JSON endpoint from a WebServer, with one setLimit() behind both the form and the Serial Monitor, and the status LED following whatever either one sets. | 65 min

- Run it: a page from the fridge
- Open it
- One door, two keys
- The LED agrees
- An endpoint for programs
- Your version: the dashboard

### Materials

- ESP32-C3-DevKitM-1
- Full-size breadboard
- LED
- Pushbutton
- Resistor
- Temperature and humidity, SHT31

### Check for understanding

Each student finishes "Dashboard" on their own, without opening the hints. The simulator checks 6 of its 6 steps as they go.

Then ask each one to explain, in a sentence or two, the last thing it asked of them: "Your version: the dashboard".

Chapter 3. About 2 h 20 min

## Harden it

Survive a bad network and a curious attacker.

Lesson | Time | What students do

Failure handling Make it expect trouble: WiFi as a state machine that names each failure and backs off, a weak-signal warning, a config fetch that survives errors and bad JSON, and readings buffered through an outage and sent when it ends. | 75 min

- A wrong password, named and retried
- A weak link
- A server that answers nonsense
- Back off from a broken server
- Lose the network, keep the readings
- Cap the backoff
- Your version: the failure table

Security review Review the node like an attacker: a token printed to the log, a limit that trusts any text, a name that could inject HTML into the dashboard, and a short threat model of who can reach what. | 65 min

- Read the log like an attacker
- Mask it
- Never trust input
- An allow list for names
- A threat model on one page
- Your version: the review

### Materials

- ESP32-C3-DevKitM-1
- Full-size breadboard
- LED
- Pushbutton
- Resistor
- Temperature and humidity, SHT31

### Check for understanding

Each student finishes "Security review" on their own, without opening the hints. The simulator checks 6 of its 6 steps as they go.

Then ask each one to explain, in a sentence or two, the last thing it asked of them: "Your version: the review".

Chapter 4. About 1 h 15 min

## Ship it

A 60 second demo, a release, a README and a link to share.

Lesson | Time | What students do

Demo and write-up The finished build in a 60 second demo: it reports, it warns, it survives an outage. Then tag the release, write the README and share the project. | 75 min

- Run the release candidate
- Beat 1: it works
- Beat 2: it notices
- Beat 3: it survives
- Tag the release
- The write-up
- Your version: ship it

### Materials

- ESP32-C3-DevKitM-1
- Full-size breadboard
- LED
- Pushbutton
- Resistor
- Temperature and humidity, SHT31

### Check for understanding

Each student finishes "Demo and write-up" on their own, without opening the hints. The simulator checks 7 of its 7 steps as they go.

Then ask each one to explain, in a sentence or two, the last thing it asked of them: "Your version: ship it".

Your class

## Teach this unit as a class

Start a class from this course and its 7 lessons are assigned in one go, in order. Students join with a six-character code or printed login cards, and each one’s work comes back to you.

The class tools are free for 30 days for one class of up to 20 students, with no card. The lessons themselves are free either way.

Start a class from this course See the demo class

More units

## Other lesson plans

Electronics basics 20 lessons, about 10 h. Embedded on the Arduino Uno 16 lessons, about 12 h. Embedded on the ESP32-C3 13 lessons, about 11 h. Embedded on the Raspberry Pi Pico 7 lessons, about 6 h. Build your own fight stick 5 lessons, about 4 h. Embedded on the STM32F411 6 lessons, about 6 h. C++ on a board 13 lessons, about 10 h. Digital logic and memory 4 lessons, about 4 h. Interactive devices on the Uno 9 lessons, about 8 h. From gates to a computer 23 lessons, about 16 h. Build a claw machine 8 lessons, about 6 h. Every unit All the courses as ready-made units, on the teachers page.
