Intro to Microcontrollers Using ESP32
IEEE Concordia

Intro to Microcontrollers Using ESP32

IEEE Concordia

Jan 2025 — Jan 2025

A hands-on workshop taking students from zero to WiFi-controlled LEDs — covering fundamentals of embedded programming, GPIO, sensors, and wireless communication.

Overview

Another IEEE Concordia bi-weekly workshop where I introduced students to the world of microcontrollers. Starting from "what even is a microcontroller?" and ending with participants controlling LED brightness from their phones over WiFi.

Workshop Details

| Duration | 3 hours | | Attendees | ~30-40 students | | Audience | 1st-3rd year students, beginners welcome | | Role | Sole instructor | | Hardware | ESP32 dev kits provided to each participant |

Curriculum

Fundamentals

  • What is a microcontroller vs. a computer?
  • Understanding GPIO pins and pinouts
  • Introduction to Arduino IDE

Programming Basics

  • Variables, functions, and program structure
  • The setup() and loop() paradigm
  • Serial monitor for debugging

Digital I/O

  • Digital read/write operations
  • Working with LEDs and buttons
  • The classic "blink" sketch

Analog I/O

  • Analog sensors and ADC
  • PWM for analog output
  • Controlling LED brightness

Sensors

  • Digital vs. analog sensors
  • Reading sensor data
  • Basic signal interpretation

WiFi & Networking

  • ESP32's wireless capabilities
  • Setting up a simple web server
  • HTTP requests and responses

Hands-On Progression

Each participant received an ESP32 dev kit with sensors, LEDs, and components. The workshop followed a progressive structure:

  1. Blink — The "Hello World" of embedded systems
  2. Digital input — Reading button states
  3. Digital output — Controlling multiple LEDs
  4. Analog input — Reading sensor values
  5. PWM output — Fading LEDs smoothly
  6. WiFi finale — Controlling LED brightness from a phone

The Payoff

By the end, every participant had their ESP32 running a web server. They could open a browser on their phone, connect to the ESP32's network, and control the brightness of an LED in real-time.

I provided the web interface code so students could focus on understanding the hardware-software interaction rather than getting stuck on HTML/JavaScript.