
Explore embedded systems with the ESP32 through hands-on, example-driven learning; assemble hardware, test modules, and build drone control and IoT projects using Arduino-compatible tools.
Learn to install and configure the Arduino IDE for ESP32 on Windows, macOS, and Linux, verify USB serial cables, and use Packet Sender to test UDP between host and ESP32.
Discover the ESP32 hardware essentials, including breadboard, USB serial cable, dev kit or Adafruit feather, battery, six switches, six LEDs with 330 ohm resistors, OLED display, and MPU6050.
Discover how to acquire ESP32 IC components, choosing between PCB and breadboard versions with off-the-shelf parts. The lecture highlights a store, Amazon wish lists, part descriptions, and sourcing options.
This item describes some resources that will help you get the most out of this course.
Set up the arduino ide for esp32, install board support via the 2.2.1 release, and verify with the board manager and a blink demo.
Explore the Arduino nano esp32 setup on a textile breadboard, controlling a tello drone with gestures, pins, and mpu6050 readings, plus cross-board code with ifdefs.
Examine ESP32 dev boards with 38 pins and top access, noting antenna differences, and demonstrate gabe pin connections with blue pad 32 library for Tello flight control and simulator action.
Engage in hands-on assembly guided videos to complete an ESP32 project, trimming resistors and LED leads, wiring the OLED and MPU, and daisy-chaining SCL and SDA.
Trim LED leads to the proper length, identify the anode and cathode by longer and shorter leads, and insert the red LED into the breadboard before wiring the rest.
Install and wire the MPU 6050 and OLED on a breadboard, connect ground and vcc, and bridge SDA and SCL between the OLED and MPU with short wires.
Wire and assemble the ESP32 board, connecting SDA, SCL, ground, 3.3V, six switches, and six LEDs, using color-coded wires and breadboard routing for dev kit clone and Adafruit boards.
wire and assemble the hussar eac kit, bridge ground and 3.3v rails, connect sda and scl to pins 15 and 16, wire switches and leds, and mount the esp32.
Explore printed circuit board versions of the ESP32 IC and how to assemble them with breadboard and surface-mount designs, including OLED, MPU, LEDs, and Adafruit huzzah boards.
Explore using symbolic gpio names across Huzzah and clone ESP32 boards, adjust pin numbers for six LEDs, and upload changes to see on/off blinking.
Define board-specific pins with #define and ifdef to adapt a sketch for Huzzah, clone, or dev boards. Upload and verify LED on the correct pin blinks as you switch boards.
Blink six LEDs sequentially on ESP32 boards for two seconds each, using define and ifdef to support the Huzzah and clone boards, with serial monitor messages when each LED toggles.
Explore wiring and programming a 128 by 32 OLED display via I2C on ESP32, using the Adafruit SSD1306 library to echo serial input and demonstrate basic graphics.
Learn how to drive the esp32 led and oled status example, showing top red and bottom green leds blinking while mirroring the serial monitor messages on the oled display.
Demonstrates reading ascii strings from the serial monitor and echoing them to an OLED on ESP32, while deploying sketches via the IDE across multiple boards.
Explore pwm on the ESP32 to vary LED brightness using pwm channels, ledc setup and ledc attach pin, with sample sketches showing channel, frequency, and 16-bit resolution.
Explore how to map six switches to six LEDs on the Hussar or dev board using PWM fade effects, with an OLED display showing button events and channel assignments.
Explore the MPU6050 sensor on an ESP32, using accelerometer and gyroscope data with multiple libraries to sense gestures, measure angles, and control LEDs via a mini project.
Explore MPU6050 library candidates for ESP32 by comparing the Adafruit lib and the MPU6050 light library, display angles (pitch, roll, yaw) on OLED, and stream data via the serial monitor.
Build an ESP32 capstone with pwm led effects, switches, and an oled display driven by MPU6050 angle gestures. Start from a partial sketch and implement role led pwm with tilt.
Demonstrate the ESP32 wifi scanner to enumerate nearby networks. Then run the simple ntp time example, entering your ssid and password in the Arduino IDE to fetch local time.
Use the ESP32 wifi manager to avoid embedding credentials by using a captive portal (eke ap) to configure and save network details, then run a hello server with led routes.
Build and test an ESP32 UDP server that receives raw packets on port 8889 through a soft access point at 192.168.4.1, echoes data back via Packet Sender, with OLED feedback.
Explore how to add Bluetooth gamepad support to an ESP32 project using the Blue Pad 32 library, with hands-on examples, supported controllers, and PWM-driven LED displays.
Learn blue pad 32 library and ESP32 board support with the Arduino IDE. Test multiple gamepads—Android, PS4, Xbox, and 8-bit Do—and view data in the serial monitor.
Learn a final ESP32 by example project using six LED channels with PWM mapped from a gamepad's joysticks and the D-pad, including throttle and brake mechanics.
I designed this course to guide you through Arduino development, focusing on the ESP32 microprocessor family and using the Arduino IDE version 2.2.1 or newer. This course is ideal for learners eager to build real applications with kit hardware, regardless of their prior experience with the Arduino IDE or standard Arduino hardware.
ESP32 Microprocessors in Focus
In this course, I centre our learning on the ESP32 microprocessor, selecting at least 5 varieties that are compatible with our examples and mini-projects. If you already own an ESP32 development board, I'll show you how to make it work with our course content, although some customization might be necessary due to differences in pin numbering.
Learning Methodology and Content
I adopt an examples-based learning approach, starting with simple Arduino code and advancing to more complex examples. I cover breadboard construction and provide lessons on using LEDs, push-button switches, mini OLED displays, and an MPU with a gyroscope and accelerometer. We'll conclude the first part of the course with a project that integrates ESP32 WiFi and Bluetooth capabilities with a video game system controller.
Kit Options
I offer the option to purchase an all-inclusive, affordable hardware kit for this course, but it's not mandatory if you already have the necessary components. The kit options range from a basic version with a less-capable ESP32 to a more advanced kit featuring the Adafruit ESP32 Feather Huzzah and a LiPo battery, allowing your projects to operate wirelessly. I also provide PCB versions for a more stable assembly experience for those with soldering skills.
Who is this course for?
This course is for anyone who wants to explore the world of cyber-physical systems where the worlds of software and physical system control meet.
If you have seen a drone in flight and are curious about how the drone receives and executes commands, this course is for you. In part 2 of the course, the hardware of part 1 is used to control a drone and/or a drone simulator.
If the world of Arduino programming is one you want to learn but don't want to start at an over-simplified beginning, this course is for you.
If hands-on exploration of simple electronic circuits using LEDs, switches, and displays is something you want to try, this course is for you.
If you have used video game controllers (gamepads) and would like to explore how they work and how you can make them interact with your own hardware, this course is also for you.