We may earn an affiliate commission when you visit our partners.
Dr. Peter Dalmaris

Course last 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 version0.3, and the Arduino IDE 1.8.19.

About this course

The ESP32 is a powerful microcontroller.

Read more

Course last 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 version0.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

  • 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.

Enroll now

What's inside

Learning objectives

  • 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).

Syllabus

Introduction
01.10 What is this course about?
01.20 Software you will need
01.30 Hardware you will need
Read more
01.40 How to get the most out of this course
Know your ESP32
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
Development environments
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)

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

------------

GPIOs
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
Sensors

No schematic (dev kit only).

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
Displays
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 8×8 LED matrix display (single)
06.42 8×8 LED matrix display (multiple)
Motors
07.10 DC motors with the DRV8871 motor controller
07.20 Servo motor
Storage
08.20 EEPROM

No schematic, using the ESP32 board only.

08.40 How to erase the flash
Time and date
09.10 Time and date with the DS3231
09.20 A clock with an LCD and the DS3231
Wifi

No schematic, do this experiment with an ESP32 devkit only.

No schematic for this experiment, use the ESP32 devkit only.

No schematic for this experiment, use the ESP32 devkit only. If your devkit does not provide an onboard LED, use an external one and adjust the LED_GPIO variable in the sketch to point to the correct GPIO for the external LED (don't forget the current limiting resistor!).

Bluetooth

In this experiment, use the ESP32 devkit only.

11.12a Bluetooth Classic project demonstration
11.12b Bluetooth Classic project, display management
11.12c Bluetooth Classic project, sensor updates

The ESP32 devkit is the only hardware required in this experiment.

11.30 BLE server with LCD
Conclusion and Bonus Lecture
Congratulations!
Bonus Lecture

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Focuses on leveraging existing Arduino knowledge, which allows makers to quickly apply familiar concepts to the ESP32 platform and accelerate project development
Covers WiFi and Bluetooth integration, which enables makers to create connected projects and explore IoT applications using the ESP32's communication capabilities
Includes mini-projects demonstrating GPIO, Bluetooth, WiFi, and digital-to-analog conversion, which provides hands-on experience with the ESP32's features
Requires the Arduino IDE, which may require learners to download additional software and drivers to ensure compatibility with the ESP32 development environment
Updated in July 2022, which ensures that the course content and examples are current and compatible with recent versions of the ESP32 Dev Kit and Arduino Core library
Requires specific hardware, such as the ESP32 Dev Kit v4, which may require learners to purchase additional components to fully participate in the course experiments

Save this course

Save ESP32 For Arduino Makers to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in ESP32 For Arduino Makers with these activities:
Review Arduino Fundamentals
Reviewing Arduino fundamentals will help you understand the similarities and differences between Arduino and ESP32, making the transition smoother.
Show steps
  • Review basic Arduino syntax and programming concepts.
  • Practice with simple Arduino projects like blinking an LED.
  • Familiarize yourself with the Arduino IDE.
Review "Programming ESP32 with Arduino"
Reading this book will provide a solid foundation for understanding the ESP32 and its capabilities within the Arduino ecosystem.
Show steps
  • Read the chapters relevant to the course syllabus.
  • Experiment with the code examples provided in the book.
  • Take notes on key concepts and differences between Arduino and ESP32.
Practice GPIO Control Exercises
Practicing GPIO control exercises will reinforce your understanding of digital input and output, PWM, and interrupts on the ESP32.
Show steps
  • Implement sketches to control LEDs using different GPIO pins.
  • Write code to read button states and trigger actions.
  • Experiment with PWM to control LED brightness or motor speed.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Document Your ESP32 Projects
Documenting your projects will help you solidify your understanding of the concepts and improve your communication skills.
Show steps
  • Write a blog post or create a video tutorial about one of your ESP32 projects.
  • Share your project on online forums or social media.
Build a Simple IoT Sensor Node
Building an IoT sensor node will allow you to apply your knowledge of Wifi, sensors, and data transmission to a practical project.
Show steps
  • Connect a sensor (e.g., temperature, humidity) to the ESP32.
  • Configure the ESP32 to connect to your Wifi network.
  • Write code to read sensor data and transmit it to a cloud platform.
  • Visualize the sensor data on a dashboard.
Review "ESP32 Technical Reference Manual"
Consulting the technical reference manual will provide a deeper understanding of the ESP32's hardware and capabilities.
Show steps
  • Download the ESP32 Technical Reference Manual from Espressif's website.
  • Read the sections relevant to your projects or areas of interest.
  • Refer to the manual when troubleshooting or optimizing your code.
Contribute to an ESP32 Open Source Project
Contributing to open source projects will provide valuable experience in collaborative development and deepen your understanding of ESP32 programming.
Show steps
  • Find an ESP32 open source project on GitHub or GitLab.
  • Identify a bug or feature request that you can contribute to.
  • Submit a pull request with your changes.

Career center

Learners who complete ESP32 For Arduino Makers will develop knowledge and skills that may be useful to these careers:
Maker
A Maker is someone who enjoys creating and building physical projects, often combining electronics and programming. The ESP32's low cost, versatility, and ease of programmability make it a popular choice for makers. This course is perfectly suited for a maker looking to get started with the ESP32. The course's many mini-projects demonstrate the capabilities of the ESP32 including how to connect to WiFi and Bluetooth and provides hands-on experience, which is crucial for the maker's process. This course is a good starting point for anyone wanting to make projects with the ESP32.
Internet of Things Developer
An Internet of Things Developer focuses on creating software and systems for interconnected devices, allowing them to communicate and interact with each other and the internet. With its integrated WiFi and Bluetooth capabilities, the ESP32 is a foundational component in many IoT projects. This course is a great starting point for developers by providing the practical skills needed to work with the ESP32, including data storage, communication, and sensor integration. The course also provides examples of creating simple Internet of Things and Bluetooth applications, giving one a feel for the work of an Internet of Things developer.
Embedded Systems Engineer
An Embedded Systems Engineer designs, develops, and tests software and hardware for embedded systems, often found in devices that aren't general-purpose computers. This course directly helps an aspiring embedded systems engineer learn about the ESP32 microcontroller, a popular platform for developing such systems. Through the course, one gains hands-on experience with GPIOs, sensors, various communication protocols, and more. These skills form the foundation of embedded systems development. This course, with its focus on practical application through mini-projects, is a great introduction to this field.
Firmware Engineer
A Firmware Engineer develops low-level software that controls hardware devices. The ESP32 is a microcontroller used in many applications. This course provides a direct and practical way to learn the fundamentals of programming the ESP32, including how to manage GPIOs, utilize memory, and implement communication protocols. The course's hands-on approach, focusing on real-world examples, is valuable for someone interested in becoming a Firmware Engineer. Working through the course's mini-projects will give an aspiring firmware engineer a working knowledge of how to create and test embedded firmware.
Hobbyist Programmer
A Hobbyist Programmer is someone who enjoys coding and building projects in their free time. Many hobbyists are interested in embedded systems. This course is an excellent choice for a hobbyist programmer who wants to use their coding skills in creating embedded systems projects. With a focus on programming the ESP32 in the Arduino IDE, the hobbyist programmer will gain new skills and a foundation to build more complex projects. This course is a great way to expand one's programming and problem solving skills.
Automation Engineer
An Automation Engineer designs and implements automated systems for industrial or commercial applications. The ESP32's networking capabilities and ability to interface with sensors and actuators make it useful in automation projects. This course focuses on the ESP32's capabilities in data acquisition, motor control, and communication, valuable skills for an automation engineer. The course also introduces the concept of IoT integration, allowing the ability to control and monitor systems remotely. This course may be useful to automation engineers looking to expand their skillset to include IoT devices.
Prototyping Engineer
A Prototyping Engineer is responsible for rapidly creating and testing new designs and ideas. This course is helpful for a prototyping engineer because it introduces a versatile and low-cost platform, the ESP32, which can be used to quickly build interactive hardware prototypes. The course covers various input, output, and communication options, allowing an engineer to explore many possibilities. The course's many mini-projects can be used as building blocks for prototyping new technology. This course may be useful for those looking for a new platform to quickly prototype with.
Research Engineer
A Research Engineer engages in research and development of new technologies and solutions, often involving cutting-edge hardware and software. This course is helpful for a research engineer by providing a foundation of knowledge for a low-cost and versatile microcontroller platform, the ESP32. The course provides a solid understanding of interfacing, communication, and data processing, which are relevant to many research applications. The hands-on approach offered by the course may be helpful for research engineers looking to explore new ideas.
Electrical Engineer
An Electrical Engineer designs and develops electrical systems and devices. This course provides a practical perspective of a key element in many electrical systems, the ESP32 and the basics of using it in a hands-on way. The course's coverage of GPIOs, power considerations, various sensors, and communication protocols directly aligns with the responsibilities of an electrical engineer. This course may be useful for those moving into electrical engineering roles since it provides an understanding of how a common microcontroller can be incorporated into a design. This course is useful for expanding one's understanding of embedded systems.
Hardware Engineer
A Hardware Engineer designs, develops, and tests physical hardware components and systems. This course provides a practical perspective of a key element in many hardware systems, the ESP32, and the basics of using it in a hands-on way. The course's coverage of GPIOs, power considerations, various sensors, and communication protocols directly aligns with the responsibilities of a Hardware Engineer. This course may be useful for those moving into hardware engineering roles, since it provides an understanding of how a common microcontroller can be incorporated into a design.
Robotics Engineer
A Robotics Engineer designs, develops, and tests robots and robotic systems for various applications. The ESP32's capabilities, including its dual-core processor, extensive I/O, and wireless communication features, make it suitable for many robotic applications. This course may be helpful to robotics engineers who want to explore the possibilities of the ESP32's potential when controlling motors, reading sensors, and connecting to other devices through Wifi and Bluetooth. A strong understanding of embedded systems is necessary for this field, and this course helps provide that understanding.
Electronics Technician
An Electronics Technician assembles, tests, and repairs electronic components and systems. This course may be useful in this role because it provides hands-on experience using the ESP32 microcontroller. Gaining a practical familiarity with the ESP32 is useful for diagnosing problems and understanding the functionality of a system. This course helps build a foundation for those interested in working with the hardware and software of electronic devices. The course's practical approach to working with hardware components makes it helpful for an electronics technician.
Test Engineer
A Test Engineer is responsible for developing and executing tests to ensure the reliability and performance of hardware and software. The ESP32 is a useful device for testing embedded systems and communication protocols. Therefore, experience with the ESP32, such as that gained in this course, is be beneficial to a test engineer. The course gives one a practical understanding of how to set up and interact with the ESP32. This course may be useful for test engineers needing to evaluate embedded systems and devices.
Application Engineer
An Applications Engineer applies technical knowledge to help customers implement and use products. This course gives a good general introduction to the capabilities of the ESP32. The information about its input output, communication abilities, and sensor integration are useful for anyone working with the ESP32 platform. This course may be useful for an applications engineers who must work with the ESP32.
Product Developer
A Product Developer is responsible for the overall design and development of new products, often with engineering and technical components. This course may be useful to a product developer who wants to gain a practical overview of the ESP32 platform. The course covers the ESP32's capabilities, including sensors, communication options, and its integration with the Internet of Things, which are useful aspects for developing new products. This course gives product developers insight into the possibilities of a popular and low-cost embedded platform.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in ESP32 For Arduino Makers.
Provides a comprehensive guide to programming the ESP32 using the Arduino IDE. It covers a wide range of topics, including GPIO, networking, and Bluetooth. This book is particularly useful for those already familiar with Arduino, as it highlights the differences and similarities between the two platforms. It serves as a valuable reference tool throughout the course.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser