🤖 ESP32 STEP 2. ESP-IDF Espressif's official IoT Development Framework

:robot: ESP32 STEP 2. ESP-IDF Espressif’s official IoT Development Framework


Środowisko Espressif ESP-IDF jest oficjalną platformą projektową dla mikrokontrolerów ESP32.
IDF używa C/C++ jako głównego języka programowania i obsługuje cross-compilation (generowania kodu maszynowego dla platformy/procesora innej niż ta, na której został ten kompilator uruchomiony). IDF działa w systemach operacyjnych, takich jak Linux, Mac i Windows.

W tym wpisie pokażę jak w Visual Studio Code uruchomić program napisany w środowisku IDF.
Podobnie jak w kroku 1. nie będę ospisywał jak zainstalować IDF i skonfigurować toolchain(nażędzia potrzebne do cross-compilation) tylko dostarczę gotowy kontener który wystarczy uruchomić w VS.

Klonowanie repozytorium z projektem w IDF

W konsoli wpisujemy

git clone https://github.com/sviete/AIS-ESP-DEV-PROJECTS.git

lub jeżeli mieliśmy już wcześniej sklonowane repozytorium z STEP 1. to w konsoli przechodzimy do folderu AIS-ESP-DEV-PROJECTS i wykonujemy aktualizację kodów:

cd AIS-ESP-DEV-PROJECTS
git pull

Otwieramy projekt IDF w VS Code

W VS Code wybieramy FileOpen Folder a następnie wybieramy nasz sklonowany projekt step-2-idf

Uruchamiamy projekt w kontenerze Docker

Projekt ma skonfigurowany kontener Dockera w którym są pobierane i instalowane pakiety, środowisko IDF i dodatek PlatformIO . W CS Code uruchamiamy wiersz poleceń kombinacją klawiszy: Ctrl + Shift + p a nstępnie w wierszu poleceń wyszukujemy komendy Reopen in container

Instalujemy program na ESP32

W konfiguracji pliku platformIO mamy ustawioną płytę jako esp32-s3-devkitc-1 (bo taką mam) i framework espidf

podłączamy naszą płytę z ESP32 do USB i instalujemy (wybierając w PlatformIO zadanie Upload) nasz pierwszy program w IDF

Program

Po zainstalowaniu nasz program robi 3 rzeczy:

  1. Loguje powitanie za pomocą standardowej komendy C printf

  2. Loguje informacje o układze ESP32

  3. Przechodzi do nieskończonej pętli - tzw. Super Loop

Debug

Nasz projekt step-2-idf bazuje na projekcie step-1-debug, w kontenerze mamy też zainstalowane narzędzia do debugowania kodu, dzięki czemu możemy ustawić pułapkę (brekpoint) na początku naszego kodu i przejść do jego wykonywania krok po kroku:

Wynik programu w konsoli

Jak widać nasz program wszedł w nieskończoną pętlę tzw. Super Loop, w tej pętli może odbywać się to co nasz program ma robić, czyli wykonywać zadania jedno po drugim, np. mierzyć jakąś wartość z czujnika podłączonego do GPIO i raportować np. do Home Assistant czy do chmury.

Podejście z nieskończoną pętlą jest całkowicie poprawne i szeroko stosowane w frameworku Arduino. Jednak nasze ESP32 potrafi więcej, bo działa na systemie operacyjnym freeRTOS (real time operating system) który może wykonywać zadania jednocześnie. Dzięki Espressif IDF mamy łatwy dostęp do możliwości systemu freeRTOS i możemy uruchamiać zadania w osobnych wątkach - to podejście do programowania ESP32 pokażę w kroku 3.

1 polubienie