
Learn the software you need for the ESP32 Arduino makers course, including the ESP32 core extension, a text editor, a terminal emulator, and a web browser.
Explore the ESP32 dev kit (version four), its exposed pins, breadboard compatibility, USB-to-serial interface, power options, and debugging features like reset, upload mode, and programmable LED.
Compare the ESP32 and Arduino boards, highlighting hardware architecture, memory, and wireless features, and show how the ESP32 can be programmed with the Arduino IDE and compatible libraries.
Set up ESP32 support in the Arduino IDE on Windows 10. Install ESP32 boards via Boards Manager using the JSON URL, then choose the correct ESP32 module.
Are you using Arduino IDE on MacOS Big Sur?
Please be aware that Silicon Labs is working on a new driver for Big Sur. Here is a relevant post on the Silicon Labs forum about the CP210xxx drivers for Big Sur (https://www.silabs.com/community/interface/forum.topic.html/vcp_driver_for_macosbigsur110x-SWJK):
------------
With new version of macOS released which is macOS Big Sur 11.0.x, the latest version of our VCP driver for Macintosh OSX (v5.3.5) now becomes incompatible. The reason for this is because of new driver model change on macOS which you can find more information from links below:
https://developer.apple.com/documentation/macos-release-notes/macos-big-sur-11_0_1-release-notes
https://developer.apple.com/support/kernel-extensions/
We currently are working to update our driver to fix this issue, although due to testing requirements, we do not expect the new version of driver to be available on our website for now.
This is the location of the drivers for all OS, including MacOS Big Sur once it will be available:
https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
------------
Compare the ESP32-WROOM-32 and ESP32-S3-WROOM-1 modules, detailing cores, Bluetooth, USB OTG, ADC channels, GPIO, and motor-control features for AI edge and IoT applications.
Learn to fade an LED with the ESP32’s pwm, using up to 16 channels on pwm-capable pins, set 12 kHz frequency with 8-bit resolution, and vary brightness 0–255.
Combine prior sketches to read a potentiometer with analogRead on the ESP32 and feed it to a PWM output on GPIO 32, using 12-bit resolution to control LED brightness.
Explore the ESP32 DAC write function to generate triangle, sine, and square waveforms with 8-bit values on GPIOs, and observe results on an oscilloscope.
No schematic (dev kit only).
learn to use the ESP32 touch sensor with an interrupt service routine to trigger an led without blocking the main loop, with a threshold and quick handling.
Use the BME280 via I2C on an ESP32 to read temperature, humidity, barometric pressure, and calculate altitude, with addresses 76 or 77.
Discover pin mappings for a single seven-segment display with ESP32 via trial and error, wire a common cathode to ground with resistors, and drive segments using bit patterns in code.
Learn to drive a single 8x8 LED matrix with an ESP32 over SPI, wiring data to GPIO23, clock to GPIO18, and 3.3V power, using the MAX72XX panel library.
Learn how to use the ESP32 EEPROM to store booleans and other data in non-volatile flash, preserving a GPO state across power cycles, with read, write, and commit operations.
No schematic, using the ESP32 board only.
Learn to erase the ESP32 flash memory with a Python-based command line tool, configure the port, run erase flash, and verify by confirming the readme file is gone.
Set up the DS3231 real time clock with ESP32 via I2C, configure date and time, and print readings to the serial monitor, using the RTC library.
Connect a DS3231 RTC and an I2C LCD to an ESP32, sharing I2C lines on a single power supply to display date, time, and temperature.
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.
In this course, I have also included numerous mini-projects to demonstrate how to use capabilities such as GPIO read and write, classic Bluetooth, Bluetooth Low Energy, Wifi, digital to analog conversion, touch sensors, and more.
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.