ESP32: Arduino + FreeRTOS (in VSCode/PlatformIO)

Arduino multithreading/multicore programming for ESP32

In this course I will tell about multithreaded arduino programming for ESP32. After completing it, you will learn how to combine the powerful functionality of arduino libraries with multithreaded programming for FreeRTOS.

What you’ll learn

  • You will learn how to use VSCode and PlatformIO in ESP32 arduino projects.
  • You will learn how to combine arduino and FreeRTOS in your ESP32 project.
  • You will be able to create multithreaded ESP32 applications.
  • Learn thread synchronization (mutexes, semaphores, queues, event flags).
  • Critical sections and hardware interrupts.
  • Arduino milticore.

Course Content

  • Введение –> 1 lecture • 15min.
  • Multithreading with Arduino –> 7 lectures • 1hr 19min.

ESP32: Arduino + FreeRTOS (in VSCode/PlatformIO)

Requirements

In this course I will tell about multithreaded arduino programming for ESP32. After completing it, you will learn how to combine the powerful functionality of arduino libraries with multithreaded programming for FreeRTOS.

In the first introductory lecture, I will introduce you to VSCode, which is well suited for developing arduino programs. We will install it and the PlatformIO extension, which allows to compile and debug programs for arduino. Next, we will download a simple arduino-wifiscan project provided by PlatformIO, and use its example to learn how to work with projects in VSCode. Next, we will transfer this project to the original Arduino IDE and run it. After that, we will open the sample project in the Arduino IDE and import it from VSCode.

In the next lecture, we will figure out how the arduino program for ESP32 works and find the main file for it. Next, we will write a simple multithreaded program with three threads.

In the third lecture, we will study in detail the work of this program and use examples to understand what the priorities of tasks affect.

In the next, fourth lecture, we will begin to study ways to synchronize between tasks and change a previously written program to synchronize two threads using a mutex.

In the fifth lecture, we will run one of the tasks on another processor core and use its example to get acquainted with critical sections and find out what spinlock is.

In the sixth lecture, I will show you how to synchronize tasks using semaphores. We will get acquainted with binary and counting semaphores. Than in this lecture we will study queues.

In the seventh lecture I will talk about flags and events.

In the eighth lecture, I will tell you how synchronization is performed between hardware interrupts and tasks. We will add an interrupt from the timer to the previously written program and use its example to consider the use of flags from the interrupt. Different processor cores will be used.

Next, several more examples of multi-threaded programming of ESP32 with arduino will be considered.

Get Tutorial