Learning Goals 5 min
One lesson to consolidate 47 lessons. We'll quiz the protocols, glance back at the eight clusters, and lock in the certification vocabulary you'll see on the L4 exam-prep lessons. By the end of this lesson you will:
- Recall the headline idea of each of L3's 8 clusters (A–H) plus the 3 builds (I).
- Distinguish the four communication protocols you met — UART, I²C, SPI, Bluetooth Classic vs BLE — by pin count, speed, and use case.
- Self-grade against a 12-question protocol-heavy quiz, identifying any clusters that need another look before Level 4.
Warm-Up 10 min
Open all your L3 sketches and your engineering notebook. Today is the last L3 lesson — flick through, remember what you built.
The 8 clusters at a glance
| Cluster | Topic | Capstone |
|---|---|---|
| A | Servo motors | Indicator Needle (L03-04) |
| B | DC motors + H-bridges | Two-Wheel Test Bed (L03-10) |
| C | Stepper motors | Rotating Display Platform (L03-14) |
| D | UART, I²C, SPI | Multi-Display Dashboard (L03-22) |
| E | Bluetooth control | Bluetooth-Controlled Car (L03-28) |
| F | WiFi + the Web | WiFi-Controlled Lamp (L03-34) |
| G | Time + Internet glue | Doorbell That DMs You (L03-38) |
| H | OOP + reusable code | Blinker Class (L03-42) |
| I | Big builds + reflection | Car v2, Plant Monitor, Pan-Tilt (L03-43..45) |
Recap · The four protocols 20 min
| Protocol | Wires | Speed | Use case | Lessons |
|---|---|---|---|---|
| UART | 3 (TX, RX, GND) | 9600 / 115200 baud typical | Point-to-point: Arduino ↔ HC-05, ESP, etc. | L03-15, L03-16 |
| I²C | 3 (SDA, SCL, GND) | 100 / 400 kHz | Many slow devices on the same bus (sensors, OLED) | L03-17, L03-18, L03-19 |
| SPI | 4 + 1 per device (SCK, COPI, CIPO, CS, GND) | up to 8 MHz on UNO | A few fast devices (displays, SD, radios) | L03-20, L03-21 |
| Bluetooth Classic (SPP) | UART-over-air | ~10 KB/s | Android-paired streaming, joystick robots | L03-23, L03-24, L03-25, L03-28 |
| BLE (GATT) | Service + characteristics | ~1 KB/s | iOS-compatible sensors, wearables, IoT | L03-26, L03-27 |
| WiFi (TCP/IP) | radio | up to ~1 MB/s on ESP | HTTP client / server, anywhere on a network | L03-29..34 |
Choose by question: How many devices? UART = 1, I²C = many, SPI = few. Distance? Wires = within a board, Bluetooth = ~10 m, WiFi = a building, internet = anywhere.
One-line cluster recaps
- A · Servos: 3-wire pulse-position,
Servolibrary, slew-limiting. - B · DC motors: H-bridge + flyback diode + signed PWM speed.
- C · Steppers: count clicks for absolute position,
Stepperlibrary, 28BYJ-48 + ULN2003. - D · Protocols: UART point-to-point, I²C shared bus, SPI 4-wire fast.
- E · Bluetooth: Classic for Android, BLE for everything.
- F · WiFi: ESP boards, HTTP client AND server, JSON APIs.
- G · Time + Glue: NTP gives time, webhooks push to the world.
- H · OOP: arrays → structs → classes, write once, reuse forever.
- I · Builds: scale up earlier projects with the new tools.
Quiz · Twelve protocol-heavy questions 25 min
Write your answers in your notebook before revealing. Each question maps to one or two lessons; if you get it wrong, that's the lesson to revisit.
How many wires does I²C need for 5 devices on the same UNO?
Reveal
2 wires + ground = 3 total. Every device shares SDA + SCL. (L03-17)
What's the default baud rate for AT-mode communication with an HC-05?
Reveal
38400 — always, regardless of the data-mode baud setting. (L03-24)
An SSD1306 OLED is at address 0x3C. What byte appears on SDA for the "write" address byte?
Reveal
0x3C = 0b0111100. Shift left, R/W = 0: 0b01111000 = 0x78. (L03-17 §4)
You have an ESP8266 and need to GET a URL that's HTTPS-only. What library and what extra step?
Reveal
Use WiFiClientSecureBearSSL + setInsecure() (skip cert check) + ESP8266HTTPClient. The handshake uses ~30 KB of RAM. (L03-36)
Why does the L298N's "5V enable" jumper need to be removed when VS > 12 V?
Reveal
The on-board 7805 regulator overheats above ~12 V input. Removing the jumper disables the regulator; supply 5 V externally to the +5V pin. (L03-08)
The 28BYJ-48 has 2048 full steps per revolution. How many steps for exactly 60°?
Reveal
2048 × 60 / 360 = ~341 steps. (L03-11 §5)
What's the difference between BLENotify and BLEIndicate?
Reveal
Both are push mechanisms. Notify is unacknowledged (fast); Indicate is acknowledged (slower but guaranteed). (L03-27 §3)
Why does the UNO's hardware SPI use pins 11, 12, 13 specifically?
Reveal
The ATmega328P's built-in SPI peripheral is hardwired to those exact pins (MOSI, MISO, SCK). You can't move it without bit-banging in software. (L03-20)
You want your ESP-driven IoT lamp to survive a router reboot. What pattern handles it?
Reveal
Non-blocking reconnection logic at the top of loop(): every N seconds while disconnected, call WiFi.disconnect() + WiFi.begin() again. (L03-30 §3 ensureWiFi)
Why is "parallel arrays" a worse pattern than "array of structs"?
Reveal
Adding a new entity needs you to update all the arrays in lockstep; easy to miss one. With a struct, one row covers all fields. (L03-40)
What's the difference between the constructor and begin() on Arduino library classes?
Reveal
Constructor runs at global-object init time, before setup() — many Arduino APIs (Serial, Wire) aren't ready yet. begin() runs from setup() when the runtime is initialised. (L03-41)
Your robot car browns out (Arduino resets) every time you accelerate. Two likely fixes.
Reveal
(1) Add a 470 µF bulk capacitor across the L298N's VS and GND close to the chip — absorbs current spikes. (2) Use a battery with a higher peak rating (2S LiPo) so it doesn't sag under load. (L03-46)
Basic 10 min
Five lines from across Level 3. Each one is wrong. Write the corrected line and say what the wrong one would do.
- Talking to an SSD1306 at address 0x3C:
Wire.beginTransmission(0x78); - Opening an HC-05 in AT mode:
bt.begin(9600); - Turning a 28BYJ-48 (2048 steps per turn) by 60°:
stepper.step(60); - A phone must be able to change this value:
BLEByteCharacteristic ledChar("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead); - An ESP web server's whole
loop():delay(1000);
It works if each fix matches the lesson it came from. Missed one? The quiz above names the lesson to revisit.
Challenge 3 · Four broken builds 10 min
Each build below worked in class and then failed at home. Predict the fault and give the fix.
- (a) WiFi lamp. The page opens on a laptop at
http://192.168.1.42. A phone on mobile data cannot open it at all. - (b) Bluetooth car. The phone pairs, but
Fdoes nothing and noOKcomes back. The sketch hasSoftwareSerial bt(2, 3);. HC-05 TXD goes to D3, and RXD (through the divider) goes to D2. - (c) Plant monitor. A dry plant sends 40 alerts in one hour. The sketch has only two states: OK and MAYBE_DRY.
- (d) Pan-tilt mount. Both SG90s now take power from the UNO's 5V pin. The UNO resets whenever both servos move together.
It works if each fix is one change — a wire, a line of code or a power source — and names the lesson it comes from.
Final recap 5 min
You finished Level 3. You can drive any combination of motor, talk to any sensor on any of three protocols, put a device on the internet, push notifications from physical events to phones, write reusable class-based code, and reason about power budgets. Level 4 is the cert prep — same hardware skills, sharper exam-style focus, plus IoT cloud, MQTT, edge AI, robotics, and a full mock exam in the last lesson. See you in L04-01.
- Pulse-position modulation (servos)
- 1.0–2.0 ms pulse every 20 ms encodes angle.
- H-bridge
- Four-transistor circuit for bidirectional DC motor control.
- Stepper
- Motor that advances in fixed angular "clicks" — count steps for position.
- UART / I²C / SPI
- Three serial protocols: point-to-point, multi-drop, four-wire-fast.
- Address byte (I²C)
- 7-bit device ID + R/W bit. First byte of every transaction.
- Chip select (SPI)
- Per-peripheral wire that selects who's being talked to.
- Bluetooth Classic vs BLE
- Classic = UART-over-air (Android); BLE = attribute-based (iOS + Android).
- HTTP client / server
- Fetch vs serve. Same protocol, opposite directions.
- JSON
- The lingua franca of web APIs. Use ArduinoJson to parse/build.
- Webhook
- Outbound POST that triggers something on a remote service.
- NTP
- Network Time Protocol — real-world clock for any internet device.
- Class
- Struct + methods + access control. Encapsulation building block.
- Constructor / begin()
- Setup pair: constructor before
setup(),begin()inside it. - Power budget
- Capacity ÷ average draw = runtime. Account for peak sag separately.
- Brownout
- Supply sag below regulator minimum → chip reset.
- Bulk capacitor
- Big cap across noisy load's power rails to smooth peaks.
- Pull-up resistor
- Hold a wire HIGH when nothing's driving. Required on I²C lines.
- Flyback diode
- Protects switches from inductive kicks when motors / coils turn off.
Extra Mission 5 min
Part 1 — Design your own Level 3 capstone
You now know motors, protocols, Bluetooth, WiFi, webhooks, time and classes. Design one project that joins at least three of these clusters. Ideas: a Bluetooth car that sends a Discord message when it finds a wall, a WiFi pan-tilt camera stand with a daily sweep, a plant monitor with a servo flag that waves when the soil is dry.
Your design must include:
- The project's name and its one job.
- The three or more clusters it uses, and what each one does in it.
- A wiring table with every pin.
- At least one class or struct, with its fields and methods.
- A power budget and your battery or supply choice.
Part 2 — Make it
Build the core of your capstone: the two most important parts working together. Use only parts and ideas from Levels 1–3. Keep loop() free of long delay() calls.
Bring back to L04-01: your design, your uploaded sketch, and a short video of the core working.