Programowanie modułów ESP32 w środowisku ESP-IDF (1)

Programowanie modułów ESP32 w środowisku ESP-IDF (1)

Podczas gdy większość użytkowników układów i modułów ESP32 firmy Espressif korzysta ze środowiska Arduino, prawdziwy potencjał popularnych modułów Wi-Fi/Bluetooth pozostaje niejako w ukryciu. Niniejszy artykuł otwiera kurs programowania ESP32 w oficjalnym środowisku producenta – ESP-IDF – umożliwiającym skorzystanie w pełni z możliwości drzemiących w niedrogich i niezwykle uniwersalnych transceiverach IoT.

Układy i moduły serii ESP32, opatrzone charakterystycznym logotypem (rysunek 1), produkuje chińska firma ESPRESSIF z siedzibą w Szanghaju. Są one następcami niedrogiego układu ESP8266, łączącego w jednej strukturze mikrokontroler oraz obwody do komunikacji za pośrednictwem Wi-Fi. ESP32 przystosowany jest – oprócz łączności Wi-Fi – także do porozumiewania się z otoczeniem poprzez protokół Bluetooth, jego procesor może być 2-rdzeniowy, a do wybranych wersji układu można podłączyć pseudostatyczną pamięć RAM o pojemności do 8 MB. Oprócz tego układ jest wewnętrznie taktowany szybszym zegarem – w niektórych wersjach nawet 240 MHz, obsługuje także kilka trybów oszczędzania energii.

Moduły z ESP32 konkurują technicznie i cenowo z takimi konstrukcjami, jak Raspberry Pi Pico, STM32Nucleo czy Arduino.

ESP32 – dostępne wersje

Od czasu pojawienia się pierwszego ESP32 rodzina kontrolerów znacznie się rozrosła. Pojawiły się nowe serie jak ESP32-S czy ESP32-C z rozmaitymi wariantami w obrębie poszczególnych rodzin. W tabeli 1, na przykładzie wybranych wersji, pokazano niektóre z różnic pomiędzy nimi.

Rysunek 1.

Do zastosowań małoseryjnych lub hobbystycznych wybiera się – zamiast kontrolerów – moduły, czyli małe płytki, na których pod metalowym ekranem jest wlutowany transceiver, oscylator kwarcowy i niezbędne elementy dodatkowe, takie jak pojemności odsprzęgające linie zasilania. Na krawędzie modułu wyprowadzone są podłączenia do dostępnych portów, a także linie zasilania i resetu. Na płytce może znajdować się ścieżka pełniąca funkcję anteny Wi-Fi i Bluetooth lub miniaturowe gniazdo do podłączenia zewnętrznej anteny. Do programowania takiego modułu potrzebny jest zewnętrzny konwerter USB-UART, pracujący z sygnałami TxD i RxD o poziomach 0...3,3 V. Wyprowadzenie TxD konwertera powinno być połączone z wyprowadzeniem RxD modułu, a wyprowadzenie RxD konwertera łączy się z wyprowadzeniem TxD modułu. Dodatkowo należy połączyć ze sobą wyprowadzenia GND konwertera i modułu. Aby wprowadzić moduł w tryb programowania, port GPIO0 w momencie resetu lub podania napięcia zasilania powinien być zwarty do masy.

Jeszcze wygodniejsza w użyciu okazuje się jedna z wielu dostępnych na rynku płyt rozwojowych (fotografia tytułowa). Taka płyta ma już zamontowany moduł ESP32, może być wyposażona w stabilizator 3,3 V, układ konwertera UART i gniazdo USB do wpięcia kabla łączącego płytę z komputerem, a przy okazji dostarczającego zasilanie. Przy opisanej konfiguracji w czasie programowania użytkownik nie musi sam ustawiać poziomu na porcie GPIO0 i resetować modułu, gdyż odbywa to się z użyciem dodatkowych sygnałów udostępnianych przez konwerter.

Środowiska programistyczne

Kod źródłowy programu użytkownika można stworzyć w kilku ogólnodostępnych środowiskach programistycznych, korzystających z różnych języków programowania.

  • Arduino to bardzo popularne IDE wśród programistów-hobbystów. ESP32 nie jest częścią domyślnej instalacji, wystarczy jednak zainstalować wtyczkę, aby uzyskać dostęp do ekosystemu Arduino. Domyślnym językiem programowania Arduino jest C++. Stanowi to niezły wybór dla użytkowników korzystających już z tego środowiska, zwłaszcza gdy ESP32 ma używać standardowych funkcji, do których to zastosowań można znaleźć w Internecie wiele gotowych przykładów.
  • Thonny stanowi IDE Pythona: obsługuje MicroPython dla ESP32 i wymaga instalacji oprogramowania sprzętowego obsługującego interpreter MicroPython na ESP32, zanim będzie można używać Pythona na docelowym urządzeniu. Środowisko ma zresztą wbudowane narzędzie, które pozwala to zrobić za pośrednictwem portu szeregowego.
  • PlatformIO pozwala programować zarówno w C, jak i C++. Domyślny język programowania stosowany w PlatformIO zależy od środowiska bazowego. W przypadku użytego zestawu narzędzi Arduino domyślnym językiem będzie C++.
  • ESP-IDF to oficjalne zintegrowane środowisko rozwojowe firmy Espressif przeznaczone do urządzeń ESP32. Może pracować jako dodatek do Eclipse lub VS Code. Zapewnia największą kontrolę nad urządzeniami, jest także objęte oficjalną polityką uaktualnień przy udostępnianiu nowych wersji z poprawkami i kolejnymi funkcjonalnościami. ESP-IDF udostępnia także obszerną bibliotekę przykładów ułatwiających rozpoczęcie pracy w większości praktycznych zastosowań. Domyślnym językiem programowania w ESP-IDF jest C, jednak łatwo zmodyfikować projekt do C++.

Instalacja środowiska ESP-IDF za pomocą instalatora

Jeżeli środowisko ESP-IDF miałoby pracować na komputerze z systemem operacyjnym Windows 10 lub 11, można skorzystać z przygotowanego przez firmę Espressif pliku exe instalatora. Oprogramowanie to zainstaluje Eclipse, środowisko ESP-IDF, potrzebne narzędzia i sterowniki. Plik instalatora jest dostępny na [1].

Po uruchomieniu pliku instalatora wyświetli się lista wyboru języka, a potem warunki umowy licencyjnej, które trzeba zaakceptować, żeby rozpocząć instalację. Następnie przeprowadzona zostanie weryfikacja ustawień systemu, a wyniki wyświetlone tak, jak na rysunku 2.

Rysunek 2.

Po naciśnięciu przycisku Next pokaże się informacja o domyślnej lokalizacji folderu, w którym zapisane zostaną pobrane pliki oprogramowania. Po akceptacji i naciśnięciu Next ukaże się lista komponentów do zainstalowania (rysunek 3).

Rysunek 3.

Po kolejnym naciśnięciu Next, a przed rozpoczęciem pobierania i instalacji niezbędnych plików, wyświetli się podsumowanie działań, które zostaną przeprowadzone w dalszej kolejności. Naciśnięcie klawisza Install inicjuje pobieranie plików, a pasek postępu sygnalizuje stan operacji. Po zakończeniu instalacji pokaże się tablica widoczna na rysunku 4 – z informacjami o sukcesie oraz propozycjami dodatkowych ustawień.

Rysunek 4.

Po zakończeniu instalacji można uruchomić środowisko ESP-IDF np. przez kliknięcie na dodaną na pulpicie ikonę Espressif-IDE. Najpierw pojawi się pytanie o lokalizację katalogu obszaru roboczego z domyślnym położeniem katalogu, którą można zaakceptować lub podać inną. Potem zostanie uruchomione IDE z wyświetloną stroną powitalną, tak jak to pokazano na rysunku 5. W tym momencie automatycznemu skonfigurowaniu ulegną zmienne środowiskowe, nie trzeba zatem uruchamiać żadnych dodatkowych narzędzi instalacyjnych z IDE.

Rysunek 5.

Szczegółowy opis instalacji można znaleźć na [2].

Instalacja środowiska ESP-IDF na komputerach z innymi systemami operacyjnymi

W przypadku innych systemów operacyjnych, np. Linuksa, można zainstalować środowisko ESP-IDF jako wtyczkę do Eclipse. Trzeba wtedy wykonać ręczną instalację. Wcześniej w systemie powinny znajdować się następujące składniki:

  • Java 17 lub nowsza wersja,
  • Python 3.6 lub nowsza wersja,
  • Git (najnowsza dostępna wersja).

Trzeba upewnić się, że Java, Python i Git są dostępne w środowisku systemowym PATH.

Szczegółowy opis instalacji można znaleźć na [3].

Ryszard Szymaniak, EP

Linki

  1. https://dl.espressif.com/dl/esp-idf/
  2. https://github.com/espressif/idf-eclipse-plugin/blob/master/docs/Espressif-IDE-Windows-Installer.md
  3. https://github.com/espressif/idf-eclipse-plugin/blob/master/README.md#Installation
Artykuł ukazał się w
Elektronika Praktyczna
czerwiec 2024

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik październik 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio wrzesień - październik 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje wrzesień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna październik 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich październik 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów