Foundational Knowledge
Electronics, programming, and theory — a solid foundation for every IoT engineer
Communication Protocols
I2C, SPI, UART, and other peripheral communication protocols.

Debugging Basic I2C/SPI Communication
I2C/SPI debugging techniques without specialized test equipment: an I2C bus scanner, periodic health-checks, and a diagnostic checklist for common errors with the ESP32 DevKit.

I2C vs SPI vs UART Compared: Which Protocol, When?
A direct comparison table of I2C, SPI, and UART (wire count, speed, device selection) plus an example running all 3 protocols at once on a single ESP32 DevKit board.

The 1-Wire Protocol: Principles and Application (DS18B20)
The 1-Wire protocol explained (a single-wire open-drain bus, 64-bit ROM addressing), with hands-on DS18B20 temperature reading on an ESP32 DevKit and a 4.7kΩ pull-up resistor.

UART/Serial: Communication Between Two Microcontrollers
UART/Serial principles (TX/RX, baud rate, the 8N1 frame) through a hands-on example: two ESP32 DevKit boards exchanging data over hardware UART2 with cross-wired TX-RX.

What Is SPI? Compared to I2C, with a Real Application
SPI principles (SCK/MOSI/MISO/CS), compared to I2C on speed and device addressing, with a hands-on example drawing to a 240x320 ILI9341 TFT display over SPI with an ESP32 DevKit.

What Is I2C? Talking to Multiple Sensors on One Bus
Learn the I2C protocol (SDA/SCL, 7-bit addressing, ACK/NACK) through a hands-on example: pairing a BMP280 (0x76) and an SSD1306 OLED (0x3C) on the same 2 wires with an ESP32 DevKit.
Tools & Basic Programming
Git, Python, and other foundational programming tools/skills for IoT.

Managing Libraries and Versions for IoT Projects
Why pinning library versions matters for IoT projects — using the Arduino Library Manager and PlatformIO's lib_deps to lock the DHT sensor library to a known-good version, and avoid the classic "works on my machine" bug.

Advanced Arduino IDE: Effective Debugging with the Serial Monitor
Debugging techniques for ESP32 firmware using the Serial Monitor and Serial Plotter: placing logs where they matter, reading compiler errors, tracking DHT22 sensor values in real time, and debugging tricks that get overlooked in the Arduino IDE.

VS Code + PlatformIO: A Professional Development Environment for IoT
Moving from the Arduino IDE to VS Code + PlatformIO: understanding the platformio.ini/src/lib project structure, building the same DHT22 temperature/humidity firmware on ESP32, and why professionals reach for PlatformIO on real IoT projects.
PCB Design
Designing circuit boards with KiCad and other EDA tools.
PCB Design Rules to Avoid Signal Noise in IoT Circuits
Core PCB layout rules for reducing signal noise in IoT circuits — ground planes, trace spacing, decoupling capacitors, and WiFi antenna keepout zones — illustrated with an ESP32 + SHT31 (I2C) circuit.
Understanding Gerber Files and Ordering PCBs from a Fab House
What Gerber layers are, how to check Gerber files before sending them out, and the general process for ordering PCBs from a fab house — illustrated with a Gerber set exported from an ESP32 + DHT22 circuit.
Designing Custom Footprints in KiCad
How to build a custom footprint in KiCad's Footprint Editor for a part that isn't in the standard library, illustrated with a real footprint for the DHT22 sensor module on an ESP32 circuit.

KiCad: From Schematic to a Finished PCB — the Full Process for Ordering from a Fab House
Going from an ESP32 + DHT22 breadboard prototype to a finished PCB: drawing the schematic in Eeschema, assigning footprints, laying it out in the PCB Editor, running DRC, and exporting Gerbers to order from a fab house.