|

ESP32 programowanie przez USB: jak wgrać pierwszy program

ESP32 programowanie przez USB: jak wgrać pierwszy program

ESP32 programowanie przez USB: jak wgrać pierwszy program

Podłączasz płytkę kablem, a komputer jej nie widzi albo wgrywanie kończy się błędem. ESP32 programowanie przez USB działa dzięki konwerterowi na płytce i bootloaderowi w samym układzie, więc programator nie jest Ci potrzebny. Przejdę z Tobą całą drogę: podłączenie, sterownik CP2102, konfigurację Arduino IDE, pierwszy program z mrugającą diodą i typowe błędy, gdy port nie chce się pojawić.

Wtedy okazuje się, że programowanie przez USB to temat mniej oczywisty, niż sugerują krótkie instrukcje. Kod, który działa u kolegi, u Ciebie potrafi zatrzymać się na pierwszym kroku, a przyczyna zwykle leży w kablu albo sterowniku.

Przykładem jest układ ESP-WROOM-32 ze sklepu msalamon.pl, ale opis zadziała na każdym module z wbudowanym konwerterem. Układ firmy Espressif Systems zawdzięcza popularność m.in. wbudowanemu Wi-Fi i Bluetooth, choć do pierwszego programu nie będą Ci one potrzebne. Sprawdza się też w projektach IoT, bo ma sporo pamięci i szybki procesor taktowany zegarem do 240 MHz.

ESP32 programowanie przez USB: jak wgrać pierwszy program

Jak programować ESP32? Przegląd możliwości, SDK i firmware

W pamięci ROM układu siedzi bootloader, który odbiera firmware przez UART i zapisuje go we flash. Komputer UART-a nie ma, więc na module znajdziesz konwerter USB-UART.

Konwerter zamienia sygnały z gniazda komputera na linie RX i TX mikrokontrolera. Dzięki temu żaden programator nie wchodzi w grę.

Środowisk masz kilka. Arduino IDE używa C/C++, a ESP-IDF to SDK od Espressif Systems do bardziej zaawansowanych projektów. MicroPython to interpreter Pythona, w którym piszesz skrypty w tym języku programowania.

ŚrodowiskoDla kogoPoziom trudnościUwagi
Arduino IDEPoczątkujący i hobbyściNiskiGotowe biblioteki, prosta instalacja, wgrywanie jednym przyciskiem
ESP-IDFOsoby przygotowujące bardziej złożone projektyWyższyPełna kontrola nad konfiguracją, praca z wierszem poleceń lub dodatkiem do edytora
MicroPythonOsoby znające PythonaNiski do średniegoNajpierw wgrywasz interpreter, potem piszesz skrypty

W praktyce: tutaj sięgamy po Arduino IDE, bo ma najniższy próg wejścia. Ta sama płytka bez zmian sprzętowych przyjmie później także ESP-IDF albo MicroPython.

Moduł ESP32 i ESP-WROOM-32: co jest na pokładzie płytki DevKit

ESP-WROOM-32 to sam układ razem z pamięcią, gotowy do wlutowania w Twoje urządzenie. ESP32 DevKit dokłada do niego konwerter, złącze micro-USB, stabilizator, przyciski i diody.

Poniżej parametry z naszego przykładu, według opisu producenta.

CechaWartość
ModułESP-WROOM-32
ProcesorDwurdzeniowy, 32-bitowy
Pamięć RAM520 kB
Pamięć FLASH4 MB
Komunikacja bezprzewodowaWiFi i Bluetooth BLE
InterfejsyUART, SPI, I2C, ADC, DAC, PWM
Konwerter do komputeraCP2102
Złączemicro-USB

Poprzednikiem tego układu jest ESP8266, który ma jeden rdzeń i skromniejsze możliwości. Podobny charakter ma NodeMCU, popularna płytka z ESP8266, a do prostych zadań sięgają też po Raspberry Pi, choć to zupełnie inna klasa urządzeń.

Uwaga: w opisach tej płytki trafisz na wersje 30-pin i 38-pin. Zanim cokolwiek podłączysz, sprawdź opis i rozkład wyprowadzeń, bo od niego zależy, który pin wybierzesz na diodę.

Znajdź też na niej przyciski BOOT i EN (czasem RESET) oraz diodę. Oznaczenia i położenie różnią się między producentami, więc kieruj się nadrukiem na PCB.

Jak podłączyć ESP32 do komputera i zainstalować sterownik CP2102?

Gotowy zestaw ESP32 płytka z ESP-WROOM-32 30-pin jest dostępny w sklepie msalamon.pl. Poniższe kroki dotyczą jednak każdej podobnej konstrukcji.

  1. Weź kabel micro-USB, który na pewno przenosi dane.
  2. Wepnij go do gniazda komputera, najlepiej bezpośrednio, bez przedłużacza i taniego huba.
  3. Zerknij na diodę zasilania. Jej zaświecenie mówi tylko, że napięcie dochodzi, a nie że komputer widzi urządzenie.

Najczęstsza pułapka? Kabel do samego ładowania, bez linii danych. Objaw zawsze jest ten sam: całość się zasila, a w systemie cisza.

Sterownik konwertera system czasem zainstaluje sam, a czasem musisz pobrać go ze strony producenta układu. Część tanich egzemplarzy ma zamiast niego CH340, wtedy potrzebny jest inny sterownik, więc zerknij na oznaczenie na swojej sztuce.

Różnice między systemami wyglądają tak:

  • Windows urządzenie pojawia się w Menedżerze urządzeń jako port COM z kolejnym numerem,
  • Linux w katalogu /dev pojawia się plik urządzenia szeregowego, a Twój użytkownik musi mieć do niego uprawnienia. W wielu dystrybucjach wystarczy dodać go do odpowiedniej grupy, np. dialout, i się wylogować,
  • macOS w terminalu zobaczysz urządzenie o nazwie zawierającej człon usbserial lub podobny.

Jak sprawdzić, czy komputer widzi ESP32?

Najprościej odłączyć i podłączyć kabel, patrząc, który wpis znika i wraca. W Windows obserwuj sekcję portów w Menedżerze urządzeń, a w Linuksie i macOS porównaj listę urządzeń szeregowych w terminalu przed podłączeniem i po nim.

Brak nowego wpisu wskazuje na kabel, sterownik, uszkodzone złącze albo zasilanie. Zmieniaj jedną rzecz naraz: najpierw kabel, potem gniazdo w komputerze, na końcu sterownik.

Jak podłączyć ESP32 do komputera i zainstalować sterownik CP2102?

Jak zainstalować i skonfigurować Arduino IDE dla ESP32?

Zainstaluj Arduino IDE ze strony projektu Arduino. To zintegrowane środowisko programistyczne domyślnie nie zna jednak układów od Espressif.

Dodasz je w ustawieniach: wpisujesz adres pakietu w pole dodatkowych adresów menedżera. Aktualny adres znajdziesz w dokumentacji Espressif Systems, więc nie przepisuj go z przypadkowych źródeł.

Potem otwórz Menedżer płytek, wyszukaj pakiet dla tych układów i zainstaluj go. Pobieranie chwilę trwa, bo razem z nim lecą narzędzia kompilatora. Gdy skończy, w menu pojawią się gotowe konfiguracje dla środowiska Arduino.

Następnie ustaw w menu narzędzi:

  • model, np. „ESP32 Dev Module” albo odpowiednik wskazany w dokumentacji,
  • port odpowiadający wpisowi, który wcześniej znikał i wracał,
  • rozmiar pamięci flash zgodny ze sprzętem, czyli w naszym przykładzie 4 MB.

Pozostałe opcje, jak prędkość wgrywania i schemat partycji, zostaw domyślne. Ruszaj je dopiero wtedy, gdy wiesz, po co.

Jak zainstalować i skonfigurować Arduino IDE dla ESP32?

Pierwszy program z diodą: jak wgrać kod i uruchomić Blink?

Na początek mrugniemy diodą i wyślemy tekst do komputera. To klasyczny blink, a numer pinu diody zależy od egzemplarza, więc zajrzyj do jego opisu.

const int LED_PIN = 2; // sprawdź w opisie płytki

void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  Serial.println("Dioda wlaczona");
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}

Funkcja setup wykonuje się raz po starcie i ustawia wyprowadzenie jako wyjście. Funkcja loop kręci się w nieskończoność: zapala diodę, wysyła napis, czeka, gasi i znowu czeka. Typ void oznacza, że żadna z tych funkcji nie zwraca wartości.

Kliknij „Wgraj”. Środowisko skompiluje szkic, połączy się z bootloaderem, zapisze plik binarny w pamięci i zresetuje układ.

W oknie wyjściowym zobaczysz „Connecting…”, potem kolejne linie „Writing at” z postępem w procentach, a na końcu „Hard resetting via RTS pin…”. Ten ostatni komunikat znaczy, że wgranie się udało, a program już działa. Jeśli zobaczysz słowo error, przejdź do sekcji o błędach niżej.

Gdy proces zawiesza się na „Connecting…”, czasem pomaga przytrzymanie przycisku BOOT. Nie każdy egzemplarz tego wymaga, bo wiele z nich przełącza tryb automatycznie.

Tryb boot i reset: jak wejść w tryb programowania?

Przy starcie układ sprawdza stan GPIO0. Wysoki poziom uruchamia Twój program, a niski wrzuca go w tryb pobierania, w którym bootloader czeka na nowy firmware.

Przycisk BOOT zwykle zwiera GPIO0 do GND. Przycisk EN restartuje układ.

Ręcznie wejdziesz w tryb programowania tak:

  1. Kliknij „Wgraj” w Arduino IDE i poczekaj na „Connecting…”.
  2. Przytrzymaj BOOT.
  3. Krótko naciśnij i puść EN.
  4. Puść BOOT, gdy zaczną się komunikaty „Writing at”.

Po zapisie układ zwykle sam się restartuje. Jeśli nie, naciśnij EN, żeby odpalić nowy program.

Co z ESP32-S2 i innymi wariantami układu?

Warianty takie jak ESP32-S2 mają inne mechanizmy, w tym własną obsługę USB, więc konstrukcje z nimi często nie mają osobnego konwertera. Port pojawia się wtedy inaczej, dlatego zajrzyj do dokumentacji konkretnego modelu.

Tryb boot i reset: jak wejść w tryb programowania?

Dlaczego ESP32 nie wykrywa portu COM i wgrywanie się nie udaje?

Tu przyczyny wykluczaj po kolei, od najprostszych. Każdy punkt sprawdź osobno:

  • Kabel wymień na inny, który wcześniej działał z transmisją danych,
  • Sterownik sprawdź w systemie, czy konwerter jest rozpoznany bez wykrzyknika, i zainstaluj właściwy dla układu na Twojej sztuce,
  • Uprawnienia w Linuksie brak dostępu do pliku urządzenia daje błąd otwarcia,
  • Zajęty port blokować go może monitor szeregowy albo inny program,
  • Tryb boot komunikat „Failed to connect to ESP32, wrong boot mode detected” znaczy, że układ nie wszedł w tryb pobierania, więc użyj przycisków jak wyżej,
  • Podłączone peryferia elementy na wyprowadzeniach rozruchowych mogą zmienić ich stan przy starcie, więc odłącz je na czas zapisu.

Gdy nic nie pomaga, spróbuj innego gniazda w komputerze. Słabe zasilanie z rozgałęziacza też potrafi namieszać.

Dlaczego ESP32 nie wykrywa portu COM i wgrywanie się nie udaje?

Jak wyświetlić dane z ESP32 w monitorze portu szeregowego?

Otwórz monitor portu szeregowego z menu narzędzi Arduino IDE. Prędkość ustaw taką samą jak w Serial.begin, czyli w przykładzie 115200.

Po restarcie na ekranie powinny pojawiać się napisy z programu. Krzaczki zamiast tekstu to prawie zawsze niezgodna prędkość. Pierwsze linie po starcie to natomiast komunikaty układu, a nie Twojego szkicu.

Gdy ten pierwszy program ruszy, kolejnym krokiem może być aktualizacja bezprzewodowa przez OTA z użyciem ArduinoOTA. Pierwszy szkic z taką funkcją i tak wgrasz kablem. Do dalszej zabawy przydadzą się też narzędzia takie jak ESPHome, które generuje firmware z pliku konfiguracji.

Jak wyświetlić dane z ESP32 w monitorze portu szeregowego?

Podsumowanie

Znasz już ścieżkę od komputera do pamięci układu: konwerter, bootloader i plik binarny. Wiesz też, jak zainstalować sterownik, skonfigurować Arduino IDE, wgrać program i zobaczyć jego komunikaty.

Gdy coś nie działa, zacznij od kabla i sterownika, a potem sprawdź tryb boot. Większość problemów kończy się na tych trzech punktach.

Naturalny następny krok to biblioteka WiFi i pierwsze połączenie z siecią, a z czasem ESP-IDF albo MicroPython, jeśli wolisz inne środowisko.

msalamon.pl

FAQ – ESP32 programowanie przez USB

1. Czy ESP32 trzeba za każdym razem wprowadzać w tryb boot ręcznie? Nie, wiele egzemplarzy robi to samo przez linie sterujące konwertera. Przytrzymanie BOOT przydaje się tylko wtedy, gdy wgrywanie zawiesza się na „Connecting…”.

2. Czy mogę programować ESP32 w MicroPython przez ten sam kabel? Tak, ten sam kabel i konwerter wystarczą. Najpierw wgrywasz interpreter, a potem skrypty wysyłasz przez port szeregowy.

3. Czy ESP32 programuje się tak samo jak ESP8266? W Arduino IDE schemat jest podobny: wybierasz model, port i klikasz „Wgraj”. Różnią się pakiety, a układy mają inne wyprowadzenia i możliwości.

4. Dlaczego po wgraniu programu nic się nie dzieje? Sprawdź, czy układ się zrestartował, i naciśnij EN. Upewnij się też, że numer pinu diody w szkicu pasuje do Twojego egzemplarza.

5. Czy komendy AT działają na ESP32 przez USB? Tak, jeśli wgrasz odpowiedni firmware z obsługą komend AT. Komunikujesz się wtedy z układem przez ten sam port szeregowy.

sklep.msalamon.pl

Prezentowaną w artykule elektronikę – w tym płytka ESP32 z modułem ESP-WROOM-32 i układem CP2102 – znajdziesz w naszym sklepie sklep.msalamon.pl. Zapraszamy również na nasze social media, gdzie pokazujemy nowości i projekty.

Podobne wpisy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *