wtorek, 9 maja 2017

ESP32 - Konfiguracja środowiska

Co będzie nam potrzebne

Najpierw trzeba sobie przygotować środowisko w którym będziemy pisać i kompilować oprogramowanie. Potrzebne nam będzie:

  • komputer PC z dowolnym systemem operacyjnym: Windows, Linux lub Mac. Ja będę używał Windowsa ale poza Toolchainem reszta powinna wyglądać identycznie na każdym systemie.
  • Toolchain do kompilacji aplikacji na ESP32. Toolchain to w uproszczeniu kross-kompilator i biblioteka standardowa C
  • ESP-IDF który zasadniczo zawiera API dla ESP32 i skrypty do obsługi Toolchaina
  • Edytor tekstowy  do pisania programów w C np. Eclipse, Notepad++, Visual Studio Code albo cokolwiek w czym lubisz pisać
  • no i oczywiście moduł ESP32. Ja będę używał ESP‑DevKitC, który ma na pokładzie ESP-WROOM-32, przyciski do resetu i wgrywania firmware'u, interfejs USB i wyprowadzone większość pinów. Przyda się również kabel microUSB.


Konfiguracja Toolchaina

Przygotować Toolchain można sobie na dwa sposoby. Najszybszym i najprostszym sposobem na rozpoczęcie pracy z ESP32 jest zainstalowanie gotowego Toolchaina. 
Zamiast pobierać binarny toolchain z witryny Espressif, możesz samodzielnie zbudować narzędzie.
Jeśli nie przychodzą Ci do głowy powody, dla których musisz go samodzielnie zbudować, prawdopodobnie lepiej jest trzymać się wersji binarnej. Oto niektóre z przyczyn, dla których warto skompilować toolchain ze źródła:
  • chcesz użyć innej wersji GCC (np. 7.1)
  • chcesz użyć jakiejś alternatywy dla newlib np. newlib-nano
  • jesteś ciekawy i / lub masz dużo wolnego czasu
  • nie masz zaufania do plików binarnych pobranych z Internetu
Ja wybieram opcję pierwszą i pobieram toolchain ze strony Espressif: https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20170330.zip a następnie rozpakowuję na dysku D. Po rozpakowaniu w katalogu d:/msys32 możesz uruchomić terminal mingw32.exe.


Pobranie ESP-IDF

Oprócz toolchaina potrzebne są nam również biblioteki/API do ESP32. Są one udostępniane przez Espressif w repozytorum na githubie https://github.com/espressif/esp-idf . Użyjemy je i w tym celu tworzymy otwieramy terminal, tworzymy katalog w którym chcemy umieścić ESP-IDF, przechodzimy do niego i robimy klona za pomocą polecenie git clone:
mkdir ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git

Toolchain potrzebuje dostępu do ESP-IDF, bo w przeciwnym razie projekty nie będą się budować. Aby wskazać gdzie ESP-IDF się znajduje należy ustawić zmienną środowiskową IDF_PATH. Można to robić ręcznie po każdym uruchomieniu komputera lub na trwałe ustawić to w profilu użytkownika. W tym celu w katalogu D:\msys32\etc\profile.d tworzymy nowy skrypt o nazwie export_idf_path.sh w którym umieszczamy:

export IDF_PATH="D:/msys32/home/Mateusz/esp/esp-idf"

Oczywiście ścieżkę trzeba odpowiednio zmodyfikować, bo nie każdy ma na imię Mateusz ;)
Teraz zapisujemy plik, zamykamy konsolę i ponownie otwieramy. Aby sprawdzić czy wszystko poszło ok, wklepujemy: printenv IDF_PATH Powinniśmy dostać coś takiego:

Zasadniczo już teraz mamy przygotowane całe środowisko do zabawy z ESP32. Sprawdźmy teraz czy jesteśmy w stanie skompilować jakiś przykład i wgrać do ESP-DevKitC


Hello world!

Skopiujmy sobie przykład hello_world dostarczony przez Espresiff do nowego katalogu:

cd ~/esp/
cp -r $IDF_PATH/examples/get-started/hello_world .

Zauważ, że na końcu drugiego polecenia jest kropka, która oznacza: "skopiuj do katalogu w którym jestem".

Teraz potrzebna nam będzie informacja pod jakim numerem portu COM pojawia się moduł. Podłączamy więc moduł do komputera i sprawdzamy w menadżerze urządzeń:
W moim przypadku jest to port COM4 - trzeba tę informację zapamiętać.
Przejdźmy teraz do katalogu z projektem i go skonfigurujmy:

cd ~/esp/hello_world 
make menuconfig

Po chwili pokaże się menu znajome każdemu kto próbował kiedykolwiek zmienić coś w jądrze Linuksa. 

Przechodzimy do Serial flasher config > Default serial port i ustawiamy odpowiednio port, po czym wychodzimy i na końcu zapisujemy.

Teraz pozostało nam jedynie skompilować projekt i wgrać do urządzenia. Można to zrobić jednym poleceniem:

make flash

Jeśli wszystko pójdzie dobrze na końcu powinieneś zobaczyć coś takiego:

Przykład, który wgraliśmy wysyła Hello world! na konsolę i po chwili się resetuje. Możemy to podejrzeć w dowolnym terminalem np Putty (baudrate 115200) lub za pomocą wbudowanych narzędzi w ESP-IDF:

make monitor


No to tyle na dzisiaj. Następnym razem odpalimy GPIO, podłączymy LED i może jakiś switch i spróbujemy to oprogramować.

1 komentarz:

  1. Dziękuję, zadziałało. Dotychczas wykorzystywałem do programowania Visuino i Arduino IDE. Jednak WiFi i I2C slave dla ESP32 nie działają.

    OdpowiedzUsuń