Kurs esp32/esp8266 | #1 – Instalowanie środowisk espressif

esp-idf_instalacja

Tekst nie w pełni ukończony.

Środowiska espressif zainstalować możemy na każdym systemie operacyjnym jednak osobiście preferuję do tego celu system linux. Dodatkowo, najlepiej to zrobić na maszynie wirtualnej, zwłaszcza jeżeli chcemy korzystać z kilku różnych środowisk. Ja korzystam ze środowiska esp-idf, dla esp32 oraz RTOS SDK, dla esp8266. Instalując je na jednym systemie operacyjnym mogą pojawiać się problemy z zależnościami. Wersje bibliotek przez nie używanych, zmienne lokalne itp..
Dlatego dla każdego środowiska mam inną maszynę wirtualną.

Maszyny wirtualne są także bardzo przyjemne w przenoszeniu między sprzętami, zamiast instalować środowiska po raz kolejny na innym komputerze, można zwyczajnie zrobić jej zrzut.

ESP-IDF – Instalacja

Cały schemat instalacji przedstawiony jest w dokumentacji:

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html#installation

Postawiłem wirtualną maszynę i zainstalowałem linux mint. Osobiście polecam dystrybucje oparte o debiana. Teraz można przejść do instalacji środowiska.

1. Instalacja zależności

Instalujemy wymagane przez środowisko zależności, wystarczy jedno polecenie:

sudo apt-get install git wget flex bison gperf python3 python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

2. Pobieranie środowiska

Kolejnym krokiem jest pobranie środowiska, najlepiej w katalogu głównym wcześniej utworzyć dla niego osobny katalog. Wykonujemy kolejno trzy polecenia.

mkdir -p ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git

3. Instalacja narzędzi

Musimy jeszcze zainstalować dodatkowe narzędzia dla konkretnych mikrokontrolerów. Występują ich 3 typy: esp32, esp32s2 i najnowszy esp32s3. Najlepiej od razu zainstalować wszystkie z nich.

cd ~/esp/esp-idf
./install.sh all

Następnie otwórz plik „.bashrc” znajdujący się w głównym katalogu i wklej tam poniższą linijkę.

nano ~/.bashrc <- otwarcie pliku w edytorze nano
alias get_idf='. $HOME/esp/esp-idf/export.sh'  <- to do wklejenia

W terminalu natomiast wykonaj polecenie „source .bashrc” (znajdując się w katalogu głównym). Dzięki temu utworzysz skrót w terminalu „get_idf”, który będziesz uruchamiał zawsze po restarcie sesji terminala. Ten skrót wykonuje skrypt „export.sh”, który z kolei ustawia niezbędne dla środowiska zmienne lokalne.

4. Pierwszy projekt / flashowanie procesora

W środowisku znajduje się całkiem sporo przykładów, weźmy najprostszy o nazwie „hello_world”. Jego zadaniem będzie wysyłanie portem szeregowym tekstu „Hello world” i resetowanie procesora.

cd ~/esp/esp-idf/examples/get-started/hello_world

Kolejne dwa polecenia służą do konfiguracji projektu. Pierwszym definiujemy model mirkokontrolera jakiego używamy, a kolejne otwiera menu konfiguracyjne.

idf.py set-target esp32
idf.py menuconfig

W menu konfiguracyjnym można zdefiniować wiele ciekawych ustawień procesora, takich jak szyfrowanie kodu, ustawianie wielkości pamięci flash… Na razie nie jest nam to potrzebne, ale warto o tym wiedzieć.

Podłączamy do komputera mikrokontroler i dodajemy go przez ustawienia wirtualnej maszyny, tak by był przez nią widziany. U mnie w przypadku linuxa, wymagane było dodanie użytkownika do grupy vboxusers i reset komputera. Jeżeli jako główny system używasz Windows, nie powinno być z tym problemów.

W terminalu maszyny wywołaj polecenie „ls /dev/tty*” powinno być widoczne urządzenie z końcówką „ttyUSB”. Jeżeli jest, wystarczy sflashować procesor.

idf.py -p /tty/USB0 -b 115200 flash

Jeśli pojawi się problem z uprawnieniami wykonaj polecenie „sudo chmod 777 /dev/ttyUSB0”. Natomiast jeśli podczas flashowania, skrypt będzie miał problem z połączeniem się z mikroklockiem musisz wprowadzić go w stan bootowania manualnie. Zrobisz to przytrzymując przycisk boot i wciskając chwilowo przycisk reset.

idf.py ma wbudowany monitor portu szeregowego, podejrzeć go można poleceniem „idf.py -p /dev/ttyUSB0 monitor”.

Poprawne działanie przykładu „Hello world”

ESP8266 RTOS SDK – Instalacja

Instrukcja dla Windows, Mac i Linux dostępna poniżej. Ja oczywiście posłużę się Linuxem.

https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/index.html#setup-toolcha

Podjąłem decyzję by nie przedstawiać tutaj procedury instalacji. Środowisko ESP8266 RTOS SDK jest trochę bardziej oporne niżeli ESP-IDF. Nie jest ono już aktualizowane i polega na przestarzałych zależnościach przez co instalacja często wiąże się z rozwiązywaniem wielu problemów.
Postanowiłem zamieścić zrzut maszyny wirtualnej z wgranym lubuntu, a na nim środowiskiem esp (na mincie, przez wspomniane problemy coś nie poszło).

https://drive.google.com/file/d/1szVEC-riNPMddbyTtBF_Hk7wI8sAZ_Qa/view?usp=sharing
Login: linux Hasło: linux123

Pierwszy projekt / flashowanie procesora

Jako pierwszy projekt użyjemy przykładu znajdującego się w środowisku.

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

Zmodyfikujmy program tak by działał poprawnie. Ten kod powinien wypisywać informacje o procesorze i restartować się po 10 sekundach. Dodam do niego zestaw poleceń inicjalizujących UART; w przeciwnym wypadku w podglądzie portu szeregowego, pojawiają mi się jakieś „krzaki”.

Wystarczy to dodać na początku funkcji „app_main”:

#include "driver/uart.h" // To dodajemy poza funkcją

uart_config_t uart_config = {
	.baud_rate = 115200,
	.data_bits = UART_DATA_8_BITS,
	.parity = UART_PARITY_DISABLE,
	.stop_bits = UART_STOP_BITS_1,
	.flow_ctrl = UART_HW_FLOWCTRL_DISABLE
};

uart_driver_install(UART_NUM_0, 2048, 0, 0, NULL, 0);
uart_param_config(UART_NUM_0, &uart_config);

Z tą modyfikacją program powinien działać prawidłowo. Więcej informacji na temat uart’a znajdziesz pod tym linkiem: https://mcinm.pl/kurs-esp32-esp8266-4-uart/

By skompilować program używamy polecenia make, w katalogu projektu (nie – podkatalogu z kodem).

  • make – kompiluje
  • make clean – „czyści” projekt
  • make flash – kompiluje i wgrywa program na mikrokontroler
  • make menuconfig – otwiera menu konfiguracyjne projektu

Poniżej efekt działania programu.

esp8266 rtos sdk hello world
esp8266 rtos sdk hello world

Monitor portu szeregowego jaki używam to minicom, otwieram podgląd następującym poleceniem:
„minicom –device /dev/ttyUSB0 –baudrate 115200”. By go zamknąć wystarczy kombinacja klawiszy „ctrl + a” > „z” > „q” > „ENTER”.


Póki co, nie mam zamiaru opisywać tutaj procesu instalacji dla systemu Windows. Nigdy tego nie robiłem, a poza tym uważam, że Linux znacznie lepiej nadaje się do obsługi tych środowisk


Kolejna część: #2 – porty GPIO

Kurs esp32 i esp8266 – spis treści

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *