Description
The “Learn ESP32 with Arduino IDE” course contains 9 Modules to take the most out of the ESP32. We’ll start by introducing the ESP32 main features and explore its GPIOs. We’ll also cover a variety of subjects related with IoT like Web Servers, Bluetooth Low Energy (BLE), and LoRa. Each subject contains practical examples with schematics and code. Module 9 contains 4 advanced projects.
Table of Contents
This first Module is an introduction to the ESP32 board. We'll explore its features, and show you how to use your board with this course. You'll also prepare your Arduino IDE to upload code to the ESP32.
- Unit 1: Introducing ESP32
- Unit 2: Installing the ESP32 Board in Arduino IDE (Windows, Mac OS X, and Linux)
- Unit 3: How To Use Your ESP32 Board with this Course
- Unit 4: Make the ESP32 Breadboard Friendly
- Unit 5: ESP32 Troubleshooting Guide
- Unit 6: [Optional] Programming ESP32 with Atom Text Editor and PlatformIO IDE
In this second Module we'll explore the ESP32 GPIO functions. We'll show you how to control digital outputs, create PWM signals, and read digital and analog inputs. We'll also take a look at the ESP32 touch capacitive pins and the built-in hall effect sensor.
- Unit 1: ESP32 Digital Inputs and Outputs
- Unit 2: ESP32 Touch Sensor
- Unit 3: ESP32 Pulse-Width Modulation (PWM)
- Unit 4: ESP32 Reading Analog Inputs
- Unit 5: ESP32 Hall Effect Sensor
- Unit 6: ESP32 with PIR Motion Sensor - Interrupts and Timers
- Unit 7: ESP32 Flash Memory - Store Permanent Data (Write and Read)
- Unit 8: Other ESP32 Sketch Examples
Using deep sleep in your ESP32 is a great way to save power in battery-powered applications. In this Module we'll show you how to put your ESP32 into deep sleep mode and the different ways to wake it up.
- Unit 1: ESP32 Deep Sleep Mode
- Unit 2: Deep Sleep - Timer Wake Up
- Unit 3: Deep Sleep - Touch Wake Up
- Unit 4: Deep Sleep - External Wake Up
This Module explains how to build several web servers with the ESP32. After explaining some theoretical concepts, you'll learn how to build a web server to display sensor readings, to control outputs, and much more. You'll also learn how you can edit your web server interface using HTML and CSS.
- Unit 1: ESP32 Web Server - Introduction
- Unit 2: ESP32 Web Server - Control Outputs
- Unit 3: ESP32 Web Server - HTML and CSS Basics (Part 1/2)
- Unit 4: ESP32 Web Server - HTML in Arduino IDE (Part 2/2)
- Unit 5: ESP32 Web Server – Control Outputs (Relay)
- Unit 6: Making Your ESP32 Web Server Password Protected
- Unit 7: Accessing the ESP32 Web Server From Anywhere
- Unit 8: ESP32 Web Server – Display Sensor Readings
- Unit 9: ESP32 Control Servo Motor Remotely (Web Server)
- Unit 10: ESP32 Color Picker Web Server for RGB LED Strip
- Unit 11: Asynchronous Temperature and Humidity Web Server with Auto Update
- Unit 12: Asynchronous Web Server - Control Outputs
The ESP32 comes not only with Wi-Fi, but it also has Bluetooth and Bluetooth Low Energy built-in. Learn how to use the ESP32 Bluetooth functionalities to scan nearby devices and exchange information (BLE client and server). Units in this Module:
- Unit 1: ESP32 Bluetooth Low Energy (BLE) - Introduction
- Unit 2: Bluetooth Low Energy - Notify and Scan
- Unit 3: ESP32 BLE Server and Client (Part 1/2)
- Unit 4: ESP32 BLE Server and Client (Part 2/2)
LoRa is a long range wireless technology. In this Module you'll explore what's LoRa and how you can use it with the ESP32 to extend the communication range between IoT devices. Units in this Module:
- Unit 1: ESP32 with LoRa - Introduction
- Unit 2: ESP32 LoRa Sender and Receiver
- Unit 3: Further Reading about LoRa Gateways
- Unit 4: LoRa - Where to Go Next?
MQTT stands for Message Queuing Telemetry Transport. It is a lightweight publish and subscribe system perfect for Internet of Things applications. In this module you'll learn how to use MQTT to establish a communication between two ESP32 boards, and how you can control the ESP32 using Node-RED. Units in this Module:
- Unit 1: ESP32 with MQTT – Introduction
- Unit 2: Installing Mosquitto MQTT Broker on a Raspberry Pi
- Unit 3: MQTT Project – MQTT Client ESP32 #1
- Unit 4: MQTT Project – MQTT Client ESP32 #2
- Unit 5: Installing Node-RED and Node-RED Dashboard on a Raspberry Pi
- Unit 6: Connect ESP32 to Node-RED using MQTT
ESP-NOW is a connectionless communication protocol developed by Espressif that features short packet transmission. This protocol enables multiple devices to talk to each other in an easy way. Units included:
- Unit 1: ESP-NOW: Getting Started
- Unit 2: ESP-NOW Two-Way Communication Between ESP32
- Unit 3: ESP-NOW Send Data to Multiple Boards (one-to-many)
- Unit 4: ESP-NOW Receive Data from Multiple Boards (many-to-one)
- Unit 5: ESP-NOW Web Server Sensor Dashboard (ESP-NOW Wi-Fi)
In this project you'll build an ESP32 Wi-Fi Multisensor. This device consists of a PIR motion sensor, a light dependent resistor (LDR), a DHT22 temperature and humidity sensor, a relay, and a status RGB LED. You'll also build a web server that allows you to control the ESP32 multisensor using different modes. Units in this project:
- Unit 1: ESP32 Wi-Fi Multisensor - Temperature, Humidity, Motion, Luminosity, and Relay Control
- Unit 2: ESP32 Wi-Fi Multisensor - How the Code Works?
Project #2: Remote Controlled Wi-Fi Car Robot
In this project we’ll show you step by step how to create an ESP32 Wi-Fi remote controlled car robot. Units in this project:
- Unit 1: Remote Controlled Wi-Fi Car Robot - Part 1/2
- Unit 2: Remote Controlled Wi-Fi Car Robot - Part 2/2
- Unit 3: Assembling the Smart Robot Car Chassis Kit
- Unit 4: Extra - Access Point (AP) For Wi-Fi Car Robot
In this project you’re going to create an Android application to interact with the ESP32 using Bluetooth Low Energy (BLE).Units in this project:
- Unit 1: ESP32 BLE Android Application – Control Outputs and Display Sensor Readings
- Unit 2: Bluetooth Low Energy (BLE) Android Application with MIT App Inventor 2 – How the App Works?
In this project you’re going to build an off-the-grid monitoring system that sends soil moisture and temperature readings to and indoor receiver. To establish a communication between the sender and the receiver we'll be using LoRa communication protocol. Units in this project:
-
- Unit 1: LoRa Long Range Sensor Monitoring and Data Logging
- Unit 2: ESP32 LoRa Sender
- Unit 3: ESP32 LoRa Receiver
- Unit 4: ESP32 LoRa Sender Solar Powered
- Unit 5: Final Tests, Demonstration, and Data Analysis
This Module contains extra units that explore other useful subjects related with the ESP32:
- ESP32 Static/Fixed IP Address
- ESP32 Dual Core – Create Tasks
- ESP32 SPIFFS (SPI Flash File System)
- Build an ESP32 Web Server using Files from Filesystem (SPIFFS)
- ESP32 Over-the-air (OTA) Programming – Web Updater
- ESP32 Client-Server Wi-Fi Communication Between Two Boards
- ESP32 HTTP GET (OpenWeatherMap and Thingspeak)
- ESP32 HTTP POST (ThingSpeak and IFTTT.com)
- ESP32 Pinout Reference: Which GPIO pins should you use?
About the Authors

Hey there, I’m Rui Santos, founder of the Random Nerd Tutorials blog. For more than 6 months we’ve been working hard on a new course dedicated exclusively to the popular ESP32 chip. This course is our complete guide to take the most out of the ESP32. If you like my work, you'll certainly like "Learn ESP32 with Arduino IDE" course.

Hi! I’m Sara Santos! I work at the RNT blog and I've been working with Rui in the "Learn ESP32 with Arduino IDE" course. The ESP32 is a powerful chip and allows you to build complex IoT projects if you know how to use its capabilities. By the end of this course you'll be able to make your own ESP32 projects. I'm sure you'll like it.