What you'll learn:
- Learn about the ESP32 and what makes it an excellent choice for Arduino Makers.
- Learn about the differences and similarities between the ESP32 and the Arduino.
- Learn about the variants of the ESP32 module.
- Learn about the features ESP32 development kit.
- Learn how to use the ESP32 in place of the Arduino to do things such as controlling LEDs, reading button and potentiometer states, drive displays and motors.
- Learn how to use the ESP32 more advanced capabilities, like its flash memory (as a file system), the digital to analog and analog to digital converters.
- In the end, become confident in using the ESP32 in your projects.
- Learn how to use the ESP32 to enable your project to communicate with the Internet.
- Learn how to use the ESP32 to enable your project to communicate with Bluetooth devices (classic and BLE).
Course updated in August 2025
I have updated this course to support the ESP32-S3-DevKitC-1 N16R8 development board, using the latest Arduino IDE (2.2.x) and ESP32 Arduino Core Library (v3.2.1). I have also added new lectures in section four to provide you with the necessary information so that you can work with the newer ESP32-S3 module and devkits.
I have revised all example sketches for compatibility with this modern hardware and software environment. The complete set of updated scripts is available on GitHub, with most lessons offering both a simple version (ideal for quick testing) and a comprehensive version (including extended functionality and inline documentation). Each script contains detailed comments describing software behavior and hardware wiring instructions. New videos are in development to demonstrate the updated setup and highlight the new capabilities of the ESP32-S3 platform.
Course updated in July 2022
We updated this course so that all experiments work with the ESP32 Dev Kit v4 (based on the ESP32-WROOM-32E) and the ESP32 Arduino Core library 2.0.3.
All sketches and schematics have been tested and updated, links for external resources checked for validity, and several lecture videos were updated to reflect these development.
The updated course is tested to work with the ESP32 development kit version 4, ESP32 Arduino Core version 2.0.3, and the Arduino IDE 1.8.19.
About this course:
The ESP32 is a powerful microcontroller.
It integrates Wifi and Bluetooth, many GPIOs, analog input and output capabilities, many device interconnection protocols, a fast dual-core processor.
All that, at a low price.
And best of all: you can use your existing Arduino knowledge and skill to turbo-charge your projects.
Especially if you have already learned how to use the Arduino Uno in your projects, it is likely that you have hit a hardware limitation.
Perhaps your projects needed more memory, more speed, or more pins.
With the ESP32, you can get a lot more capacity to build more interesting projects, almost for free.
However, the ESP32 is not a plug-in replacement for the Arduino.
While it shares much of the Arduino’s programming and GPIO interface, you still need to learn the basics before you can deploy it.
This is the purpose of this course.
In this course you will learn:
- What is the ESP32.
- What are the various modules with that name, and how these modules are available to us in the form of development kits.
- What are the differences and similarities between the ESP32 and the Arduino.
- How can we use what we know from the Arduino to make things based on the ESP32.
- How can we use the ESP32 GPIOs to work with simple components like LEDs and buttons, but also to drive peripherals like displays, sensors (including the integrated ones) and motors.
- How can we set up the familiar Arduino IDE so that we can write programs for the ESP32.
- How to store data in non-volatile memory.
- How to communicate with near field devices and the Internet.
Larger projects will also show you how to create simple Internet of Things and Bluetooth applications, to name a few.
If you are ready to learn more, please be sure to watch the lectures in this introductory section to find our more.
Requirements:
- Be familiar with the Arduino Uno
- Be familiar with writing and editing sketches for the Arduino Uno
- Have completed Arduino Step by Step Getting Started (or have equivalent knowledge)
- Be familiar with I2C, serial communications.
- Be familiar with the breadboard and wiring.
- People who are already making things with the Arduino and are looking for a more powerful microcontroller.
- People who want to use the ESP32 but are not sure how to start.
Introduction:
- 01.10 What is this course about?
- 01.20 Software you will need
- 01.30 Hardware you will need
- 01.40 How to get the most out of this course
- Update 2025: ESP32-S3 Support, Modern IDE, and Fully Revised Codebase
- 02.10 The ESP32 module
- 02.20 The ESP32 Dev Kit
- 02.30 ESP32 vs Arduino
- 02.40 GPIOs
- 02.50 Communications
- 02.60 Power
- 03.10 Setting up ESP32 in the Arduino IDE on Mac OS (to use in this course)
- 03.20 Setting up ESP32 in the Arduino IDE on Windows 10 (to use in this course)
- 03.30 Install the drivers CP21012 USB chip
- Comparing the ESP32-WROOM-32 and ESP32-S3-WROOM-1 modules
- Comparing the ESP32 DevKit V1 and ESP32-S3-DevKitC-1
- Moving from ESP32 Arduino Core v1.x to ESP32 Arduino Core v3.x
- Getting started with the ESP32-S3 guidelines
- 04.10 Digital output LED
- 04.20 PWM and LED
- 04.30 RGB LED with PWM
- 04.40 Digital input with Button
- 04.50 Analog input with a potentiometer
- 04.52 Analog input with potentiometer and PWM output
- 04.62a An overview of Digital to Analog Conversion in the ESP32
- 04.62b DAC demo sketch
- 04.62c DAC analog waveform demo
- 04.62d Making noise with the DAC
- 04.70a GPIO interrupts, an introduction
- 04.70b GPIO interrupts, sketch and demonstration
- 05.10 Integrated Hall effect (use a magnet)
- 05.20 Touch (capacitive) sensor with LED
- 05.30 Touch (capacitive) sensor with interrupts and LED
- 05.40 Photoresistor
- 05.50 BME280 environment sensor using I2C
- 05.60 DHT22
- 05.70 ADXL335 Accelerometer
- 06.10 LCD I2C screen
- 06.20 Seven segment display
- 06.22 Seven segment display with library
- 06.30 Seven segment clock display with I2C
- 06.40 8x8 LED matrix display (single)
- 06.42 8x8 LED matrix display (multiple)
- 07.10 DC motors with the DRV8871 motor controller
- 07.20 Servo motor
- 08.20 EEPROM
- 08.30 SPIFFS
- 08.40 How to erase the flash
- 09.10 Time and date with the DS3231
- 09.20 A clock with an LCD and the DS3231
- 10.10 Wifi connection
- 10.20 Wifi HTTP client
- 10.30 Wifi HTTPS client
- 10.40 Wifi HTTPS client LED control
- 11.10 Intro to Classic Bluetooth
- 11.12a Bluetooth Classic project demonstration
- 11.12b Bluetooth Classic project, display management
- 11.12c Bluetooth Classic project, sensor updates
- 11.20a BLE server (part 1)
- 11.20b BLE server (part 2)
- 11.30 BLE server with LCD
- Congratulations!
- Bonus Lecture