1. How to use this document
You will not read this end-to-end. Use it like a dictionary with a learning path on top.
- Day 1 of your co-op: skim sections 2–4 (Prerequisites, Suggested Path, the Practical 20 list at the end of section 5). That alone puts you ahead of most interns.
- When you hit an unfamiliar term in code or a meeting:
Cmd-Fthe term in section 5. Each entry is self-contained. - When you want depth on a topic: follow the 📚 links at the bottom of the section. Those are the canonical, freely available resources — not random blog posts.
- When you're about to wire a part on your bench: jump to the sister Hardware Quick Reference (link in the navbar) and look up the exact part — it cross-links back to the concepts here.
2. Prerequisites
You don't need an EE degree, but the following mental model is assumed throughout this document. If you don't have it, the Practical 20 in section 4 will catch you up over a week.
Math (intuition, not proofs):
- Algebra: solve for an unknown. Why: every circuit calculation is solving V = IR for one of the three.
- Trig: sine, cosine, frequency, phase. Why: AC analysis, audio, filters, control loops.
- Logarithms. Why: decibels, RC time constants, RC filter cutoff math.
Programming (one of these is enough):
- Python — the default for MicroPython on the Pico and ESP32-S3. You should be comfortable with classes, decorators, async, and type hints.
- C / C++ — for ESP-IDF, Arduino, or any low-level work. Pointers, structs,
volatile,static, bit manipulation. - Shell —
cd,ls,grep,|,>,python -m venv,esptool.py.
Tools to install (do this on day 1):
# Thonny (the friendliest MicroPython IDE — recommended for first month)
sudo apt install thonny # or download from thonny.org
# mpremote — the official MicroPython command-line tool
pip install mpremote
# esptool — for flashing ESP32 / ESP32-S3 boards over USB
pip install esptool
# Arduino IDE 2.x — for Arduino C/C++ projects
# Download from arduino.cc
3. Suggested build order (5 steps)
Do these in order. Each step is one bench session. By step 5 you will have used every part family in your inventory at least once.
Step 1 — Get the basics wired and verified
Set up your Raspberry Pi Pico W or ESP32-S3-DevKitC-1 on a breadboard, power it over USB, and blink the on-board LED using jumper wires. Add a current-limiting resistor and an external LED. Verify your USB cable is data (not charge-only) by opening the serial monitor. Goal: prove the “edit → flash → see result” loop works for you.
Step 2 — Add sensors (input)
Wire the KY-018 LDR and KY-013 thermistor to an ADC pin via a voltage divider. Then the MPU-6050 IMU over I²C. Then the INMP441 microphone over I²S. Print all the values to the serial console. Goal: every input you own produces a number on the screen.
Step 3 — Add outputs (the SSD1306 OLED is your friend)
Connect the SSD1306 OLED over I²C and display your sensor values. Add the TB6612FNG + N20 gearmotor stack with the 12 V supply for motion. If you have an SG90 servo, drive it from a separate 5 V rail. Goal: input → display → motion, all in one project.
Step 4 — Add communication and audio
Add the DFPlayer Mini for sound (start with the speaker and a pre-made MP3 file). Add the MAX98357A + mini speaker for I²S audio from the MCU. Add the HC-SR04 ultrasonic distance sensor. Add the WS2812B strip with the 74HCT125 level shifter. Goal: every output family in your inventory has been used at least once.
Step 5 — Power and the real-world bits
Switch from USB to a 18650 + MT3608 boost (or a Mini360 buck from a 12 V supply) and verify your project still boots and the rails are correct under load. Add a tactile button + slide switch for user input. Add a status LED with a resistor on every power rail so you can see brownouts visually. Goal: the project survives being unplugged, moved, and plugged back in.
Optional but recommended: the A4988 / TMC2209 stepper driver + NEMA 11 stepper for precise motion; the HX711 load cell for force feedback; the ST7789 TFT for a full-color display. All listed in section 7.
4. The Practical 20 — read these first
If you only read 20 entries in this glossary, read these. They cover ~90% of what you'll see in your first month on a microcontroller project.
Each entry: a one-line definition, then a practical note in italics that says what it means on the bench. Entries marked 🔥 are the practical-20.
A
3 termsA4988 Stepper Driver
#AHT20 + BMP280 Combo Module (T / RH / Pressure)
#B
2 termsBreadboard 830 Tie-Point
#Brother KR830 Standard-Gauge Latch Needle
#C
1 termCapacitor Assortment (Aluminum Electrolytic)
#D
1 termDFPlayer Mini MP3 Module
#VCC (3.3–5 V), GND, TX → MCU RX, RX ← MCU TX (use a 1 kΩ series resistor on the DFPlayer's TX since some clones output 5 V). Put .mp3 files named 0001.mp3, 0002.mp3 on a FAT32 microSD. Send 0x7E 0x03 0x00 0x01 0xEF to play track 1. Watch for: it can't drive a speaker directly at much volume — pair with a PAM8403 or MAX98357A amp for louder output. See also: UART (Universal Asynchronous Receiver/Transmitter), Amplifier (Op-Amp / Class-D), Baud Rate.E
4 termsESP32-CAM (OV2640 / CH340 carrier)
#ESP32-S3-DevKitC-1 (N16R8)
#ESP32-S3 WROOM-1 (raw module)
#ESP32-S3 38-pin Expansion Bottom Board
#G
1 termGA12-N20 Micro Metal Gear Motor
#H
4 terms74HCT125 (Quad Buffer / Level Shifter)
#HC-SR04 Ultrasonic Distance Sensor
#Hex Nuts & Bolts Set (M2 / M2.5 / M3 / M4 / M5)
#HX711 + 1 kg Load Cell
#I
2 terms37-in-1 Sensor Kit (KY-001 to KY-040)
#S/VCC, G/GND, OUT/IN on the 3-pin header — the same JST-PH cable works for all of them. 4-pin modules add a second signal line (analog + digital on the same module). Start with the LDR (KY-018), button (KY-004), and IR obstacle (KY-032) — three sensors, three interfaces (ADC, digital, digital), one afternoon of learning. See also: I²C (Inter-Integrated Circuit), I²S (Inter-IC Sound), PWM (Pulse-Width Modulation), SPI (Serial Peripheral Interface).INMP441 Omnidirectional MEMS Microphone (I²S)
#J
2 termsJumper Wire Kit (M-M / M-F / F-F)
#JST-PH 2.0 mm Connector Kit
#K
1 termKY-018 LDR (Photoresistor)
#M
6 termsMAX98357A I²S Class-D Amplifier (3 W)
#Mini360 DC-DC Buck Module (MP2307)
#MPU-6050 (GY-521) IMU
#MT3608 Step-Up Boost Module
#microSD Card SPI Breakout (3.3 V)
#Mini Speaker (4 Ω, 3 W)
#N
1 termNEMA 11 Stepper Motor (28 mm, 0.6 A)
#O
1 termOmron-Style Micro Limit Switch
#P
1 termPin Headers (2.54 mm, 1×40 breakable, male + female)
#R
3 termsRaspberry Pi Pico W (RP2040)
#Resistor Kit (1/4 W, E12, 10 Ω to 1 MΩ)
#Rosin-Core Solder Wire (63/37, 0.8 mm)
#S
6 termsSG90 Micro Servo (9 g, 180°)
#angle = map(pulse_us, 1000, 2000, 0, 180). See also: Servo Motor (SG90 / Standard), PWM (Pulse-Width Modulation).Soldering Iron (80 W, LCD, 110 V)
#SSD1306 0.96" OLED (I²C, 128×64)
#ssd1306 in MicroPython, Adafruit_SSD1306 in Arduino. Watch for: some clones ship at address 0x3D — run i2c.scan(). The display has no CS pin (I²C only); the reset pin must be tied high or driven from a GPIO for the init sequence to work. See also: I²C (Inter-Integrated Circuit), Address (I²C / SPI), SSD1306 0.96" OLED (I²C, 128×64).ST7789 2.0" TFT (SPI, 240×320, full-color)
#Solid-Core Tinned Copper Wire (22 AWG, 5 m)
#SPDT Mini Slide Switch (1P2T)
#T
3 termsTactile Pushbutton (6×6 mm THT)
#TB6612FNG Dual Motor Driver (1 A)
#TMC2209 v1.3 Silent Stepper Driver
#U
2 termsUniversal PCB Protoboard (9×15 cm, 1.2 mm)
#USB-TTL Serial Cable (CP2102, 3.3 V)
#V
1 term12 V 2 A DC Power Supply (barrel jack, 2.1 mm)
#W
1 termWS2812B Addressable RGB LED Strip
#X
1 termXL6009 DC-DC Buck-Boost Module
#No matches
Try a different term, or press Esc to clear the search.
6. Quick reference tables
6.1 Inventory status (as of 2026-07-01)
| Status | Line items | Approximate cost |
|---|---|---|
| RECEIVED (in hand, tested) | 27 | ~C$130 + 4 Temu (no price) + 4 bench stock |
| AWAITING (paid, shipping) | 7 | ~C$47 |
| PLANNED (S3 tutorial gap-fill) | 6 | ~C$6 |
| PLANNED (weaver BOM) | 11 | ~$67 USD |
| CANCELED / REFUNDED | 2 | C$10.63 credited |
| Total | 53 distinct lines (4 stubs excluded) | ~C$200 + USD 67 |
6.2 I²C address cheat sheet (your kit)
All of these go on the same SDA/SCL bus. Watch for address collisions — two devices on the same address will silently corrupt each other's reads.
| Part | Default addr | Alt addr | How to switch |
|---|---|---|---|
| MPU-6050 IMU | 0x68 | 0x69 | AD0 pin (solder bridge on GY-521) |
| BMP280 (pressure) | 0x76 | 0x77 | SDO pin (solder jumper on most boards) |
| AHT20 (T/RH) | 0x38 | — | fixed |
| SSD1306 OLED | 0x3C | 0x3D | some clones only; check with i2c.scan() |
| PCF8574 (port expander) | 0x20–0x27 | — | A0–A2 jumpers (3 bits = 8 addrs) |
6.3 Power tree (what supplies what)
| Source | Voltage | → | Regulator | → | Rail | Feeds |
|---|---|---|---|---|---|---|
| USB-C (5 V) | 5.0 V | → | on-board LDO | → | 3.3 V | ESP32-S3, MPU-6050, AHT20, BMP280, SSD1306, INMP441, ST7789, KY-* kit, sensors |
| USB-C (5 V) | 5.0 V | → | (direct) | → | 5 V | DFPlayer Mini, MAX98357A, HC-SR04 (with level shift on Echo) |
| 18650 cell | 3.0–4.2 V | → | MT3608 boost | → | 5.0 V | DFPlayer, MAX98357A, WS2812B, any 5 V load |
| 18650 cell | 3.0–4.2 V | → | XL6009 buck-boost | → | adjustable | anywhere you need stable 3.3 V, 5 V, 9 V, 12 V from a battery |
| 12 V wall-wart | 12.0 V | → | Mini360 buck | → | 3.3 V / 5 V | 3.3 V logic, 5 V sensors |
| 12 V wall-wart | 12.0 V | → | (direct) | → | 12 V | A4988 / TMC2209 VMOT (NEMA 11 steppers) |
6.4 Crimp cheat sheet
| Connector | Pitch | Use for | Tool |
|---|---|---|---|
| Dupont (M/M, M/F, F/F) | 2.54 mm | breadboard jumpers | pre-crimped (just buy) |
| JST-PH | 2.0 mm | LiPo balance, sensor cables, small DC | SN-28B or Engineer PA-09 crimper |
| JST-XH | 2.5 mm | LiPo balance leads (≥ 3S) | SN-28B |
| JST-SM | 2.5 mm | 3.7 V single-cell LiPo (BEC plugs) | SN-28B |
| XT30 / XT60 | n/a | high-current battery (drone, e-bike) | solder (don't crimp) |
| Barrel jack | 2.1 / 2.5 mm | wall-wart DC power | solder |
6.5 Wiring rules (the 10 commandments of bench prototyping)
- Color-code: red = power, black = ground, one color per signal. You will save hours.
- Power first, signal second. Connect 3.3 V and GND to the board before plugging in USB. Verify with a multimeter.
- One rail per breadboard row. Don't daisy-chain power through components; use the red and blue rails.
- Decoupling on every IC. 100 nF ceramic, as close to VCC as you can physically place it.
- Pull-ups on open-drain lines. I²C, Hall sensor, anything that says "open-drain" in the datasheet.
- Keep wires short. < 15 cm for signal wires on a breadboard. The capacitance and noise pick-up go up fast.
- Don't share ground through the breadboard. Use a star ground: a single point where everything's GND meets. The breadboard's rails are fine for that point.
- Measure before you connect. Voltage on the rail, resistance of the pull-up, capacitance of the cap. The 30 seconds it takes saves the 30 minutes of debugging a fried part.
- One new thing at a time. Add a sensor, test it. Add a driver, test it. Add Wi-Fi, test it. If you add three things and it doesn't work, you have three bugs.
- Photograph your wiring. Before you tear it down, take a picture. You'll rebuild it in three weeks and won't remember which wire went where.
6.6 When it doesn't work (the 4-step recovery)
- Smell it. A hot component or burnt smell is a real signal. Power down immediately.
- Look at it. Solder bridges, reversed LED, missing wire, swapped SDA/SCL — 70% of beginner bugs are visible.
- Measure it. 3.3 V at the rail? 5 V at the wall-wart? Continuity on every wire?
- Reduce it. Comment out half the code. Disconnect half the circuit. The bug is in the half that, when removed, makes the problem go away.
If still stuck after the 4 steps, ask a colleague. Describe what you tried first, then the symptom — not the other way around.
7. Further reading
Start here (free, high quality):
- 🔥 MicroPython for the ESP32-S3 — docs.micropython.org
- 🔥 Adafruit sensor learning guides — learn.adafruit.com (search by part number)
- 🔥 Sparkfun tutorials — learn.sparkfun.com
- 📚 Espressif ESP32-S3 forum — esp32.com
- 📚 Phil's Lab (YouTube, deep dives on Altium + motors + STM32) — best embedded YouTube
Companion documents in this lab:
- Electronics Concepts Quick Reference — the sister glossary (concepts, not parts)
- ESP32-S3 Development Primer —
~/MicroController/projects/PRIMER.md - Hardware Inventory —
~/MicroController/projects/HARDWARE_INVENTORY.md(the canonical spreadsheet-style source of truth) - esp32s3-micropython tutorial series —
~/projects/esp32s3-micropython/(ES01–ES07 exercises that use these parts)
Datasheets (open the actual PDF for any part you're wiring):
- ESP32-S3 — espressif.com
- RP2040 / Pico W — datasheets.raspberrypi.com
- MPU-6050 — invensense.tdk.com
- TB6612FNG — Toshiba datasheet, freely available
- A4988 / TMC2209 — Allegro / Trinamic PDFs
Last updated: July 2026. Maintained as a living document — if a term on your co-op isn't here, add it.