Welcome to
Learn ESP32!

What is the ESP32
The ESP32 is a low-cost, low-power system on a chip (SoC) with Wi-Fi and Bluetooth capabilities. It's a great device to build IOT (Internet Of Things) projects.
What we offer
Our course covers 17 hours and 34 minutes of video content on the official ESP-IDF (IOT Developer Framework).
Who is this course for
whether you are using the Arduino libraries and want better control your program, An enthusiast who know a little bit of C, A technical entrepreneur or a professional embedded developer who needs to get up to speed fast. This course is for you

Best of the best course. What I am learning here, is way more then what I have learned in past 2 months from different resources. I have no words to say thanks to you for giving me access to this course


Learnesp32.com is by far the best online course available to learn about ESP32-IDF. The course is well structured and easy follow. Mair (lecturer) is highly knowledgeable in his field of study. Would highly recommend this course to anyone interested in ESP32 programming.

P. Mistry

I was looking for a good way to refresh some skills during furlough due to COVID-19. I really appreciated the “Learn ESP32” online course. It was an excellent review of FreeRTOS and the basic and essential capabilities of the ESP32 offering from Espressif. I appreciated the delivery style and now use the materials as a resource when needed in my current developments. Excellent value.

Michael Loh, Principal Consultant, DBML Group Inc.

LearnESP32 is by far the best resource I’ve found for learning how to program the esp32 using the ESP IDF! It covers everything from start to finish, including how to set up the IDF in visual studio and giving additional background lessons on trickier topics, which I really struggled to understand before this course. As an electronics student, I found that the tutorials on using FreeRTOS were particularly helpful and the skills I’ve learnt can easily be transferred, when working with other devices in the future. I would strongly recommend anyone buy a subscription to LearnESP32 if they want to make the most of the ESP32!

Emily Wayland

Course Introduction

Course Introduction

Course Introduction

Dev Boards

Introduction to the development boards

Environment Setup


Introduction to setting up your environment

Installing and configuring VS Code

installing out code IDE

project walk through

Walk through of the template. Intellisense, built in terminal etc.

ESP32 Types


Introduction ESP types

Comparing ESP types

Comparing the different types of ESP's

VSCode ESP32 Target

How to switch a VSCode project form one ESP to a different one

A First Look - Introduction

A First Look - Introduction

Getting started with the IDF


all about logging


how to pause a program

Random Number

Generate a random number


Blink an LED

Keyboard Input

Capture serial data with the keyboard

Using Examples - Chip Data 1

using the esp-idf examples

Using Examples - Chip Data 2

using the esp-idf examples continued with mac address

Working With C

Working With C - Intro

Introduction to module on C

Structure and Pointer Primer

Structures and pointers

Function Pointers

pass a function as a variable

Headers, Components and Libraries

Referencing C and H files

Referencing other files


IDF Components - Other Source Files

External Components

IDF Components - Shared libraries

Fundamentals in FreeRTOS

Fundamentals in FreeRTOS - Intro

Introduction Fundamentals in FreeRTOS

FreeRTOS Resources

FreeRTOS Resources

FreeRTOS Tasks

creating tasks

Using the Second Core

Using the Second Core

FreeRTOS Tasks Decision Tree

Choices for interacting with tasks

Task Notifications 1

Controlling Tasks with notification

Task Notifications 2

Controlling Tasks with notification continued

Mutex - Mutual Exclusion Object

Controlling tasks with Mutex's

Binary Semaphore

Controlling tasks with Semaphore's


Send data to a task with a Queue

Event Groups

Make decisions based on events

FreeRtos Timer

Using FreeRtos built in timer

High Resolution Timer

Using microsecond timers

Debugging with OpenOCD

Manual debugging

Debugging by analyzing the ESP32 output

OpenOCD Overview

OpenOCD Theory

Debug Walk-Through

breakpoints, inspecting variables and stepping through an application

Wiring the FT2232

using the JTAG

OpenOCD Software Configuration

Configuring the OPENOCD for your environment

Introduction to QEMU

using QEMU to emulate the ESP32

Configuration and Menuconfig

Menuconfig Introduction

Menuconfig Introduction

Menu Basics

How the idf-configuration works

Custom Configuration

Create custom configuration with KConfig.projbuild files

Menu Defaults

Setting defaults for menu's

Understanding Memory

SRAM 1 - Understanding RAM Allocation

Understanding RAM Allocation


Extending Ram with PSRAM

Flash Partition

understanding the partition table


Loading Files Directly into Flash

Loading files at flash time

NVS - Simple Data

Non Volatile storage with primitives

NVS - Custom Partition

creating your own NVS Storage

NVS - Structured Data

adding complex data to NVS

SPIFFS - Introduction

SPI (Serial Peripheral Interface) Flash File System

SPIFFS - Upload with Flash

Uploading and storing files

SPIFFS - Looping Through Files

Looping Through Files

SPIFFS - Loading Data Scripts

Saving files with scripts


Create, Read, Update and Delete files


GPIO - Intro

General Purpose Input and Output

GPIO Output

setting pin values

GPIO Input

Reading pin values


Using interrupts


de-bounce a switch

GPIO - Config

using the configuration structure


Digital to Analogue Converter


Analogue to Digital Converter


Control power with Pulse Width Modulation

Hall Sensor

built in magnetic sensor


using the GPIO touch sensors


Bus Systems - Intro

Intro to bus systems

Bluetooth logging JDY-31

doing a serial monitor to wok over blue tooth

UART 1 Basic Echo

starting with UART

UART to PC Communication

UART to PC comms

UART Queue

UART on a event queue

i2C LM75A

reading temperature with the i2c

SPI - SSD Wire up

reading and writing files into SSD memory

SPI - SSD Code

reading and writing files into SSD memory continued

SPI - Wire up Display

using a simple monochrome display

SPI - Show Display

using a simple monochrome display continued


light Sleep with Timer

wake up after a time

Light Sleep with GPIO

wake up with interrupt

Deep Sleep with timer

wake up after a time

Deep Sleep with EXT0

wake up with interrupt

Deep Sleep with EXT1

wake up with interrupt multiple pins


very deep sleep

Internet Connection

Example Connection

Getting connected quickly

Wi-Fi Scanner

looking for access points

NTP Time

Setting and displaying time

Wi-Fi Connect 1

Creating a connection component

Wi-Fi Connect 2 - event loop

understanding the event loop

Wi-Fi Connect 3 - init

initializing the Wi-Fi

Wi-Fi Connect 4 - STA

Connecting as a STA

Wi-Fi Connect 6 - AP

Connecting as an AP

Internet REST Client

Introduction to REST

communications with REST protocol

Simple GET

getting simple data from the internet

Chunking data

breaking data into chunks


encrypted data

large json

dealing with very large payloads

Creating json - send email

creating hson to send and email

Internet Server

Creating a server

creating a server


Creating a .local domain

togging an LED with POST

toggle a LED with a POST

web sockets intro

getting started with web sockets

web sockets continued

finalizing our web socket

Website on chip

Site in SPIFFS

Loading the site into memory

wild cards

loading different pages

getting scanned WiFi

returning nearby AP's

Website proxy

creating a proxy for development

creating web pages

creating a proxy for development

changing networks

Changing from STA to AP

final steps

deployment and future considerations



ESP-NOW is a chip to chip communication

ESP-NOW basic

basic setup for ESP-NOW

ESP-NOW Auto Registration

ESP-NOW automatically add peers

ESP-NOW push button

ESP-NOW send message with button

ESP-NOW Encrypted messages

ESP-NOW sending encrypted messages

Bluetooth BLE

BLE iBeacon

find objects by signal strength

BLE Eddy Stone

Find objects with an Eddy Stone beacon and advertising a url


Generic Access Profile (Connect)


Generic Attributes (Communicate)


Archive - connecting to internet

Connect to the Internet

Connect to the Internet

Connect to the Internet IDF v4.1

Connect to the Internet with the new version of the IDF

Archive - Rest

Getting Data

retrieving data

Allocating Memory for Incoming Data

dynamically allocating memory for incoming comms

Parsing JSON

using JSON

Sending SMS

use the ESP32 to snd SMS's

2023 ©Learn ESP32|Privacy|Terms and Conditions|Contact Us