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”.
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.
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
Dodaj komentarz