Konfiguracja Arduino IDE dla ESP32-S2, S3 i C6
Konfiguracja Arduino IDE do pracy z ESP32
Krok po kroku - przewodnik instalacji Arduino IDE, dodania obsługi płytki ESP32 i wgrania pierwszego skeczu na ESP32-S2, ESP32-S3 lub ESP32-C6.
Jeśli nigdy wcześniej nie korzystałeś z Arduino IDE, proces wygląda bardziej skomplikowanie niż naprawdę jest. Składa się z trzech części: instalacja IDE, instalacja pakietu obsługi płytki ESP32, a następnie wybór odpowiedniej płytki i portu. Większość problemów pojawia się w ostatniej części, dlatego ustawienia płytki są szczegółowo opisane poniżej.
Ten przewodnik zakłada, że używasz Arduino IDE 2, czyli bieżącej wersji, którą powinieneś używać do pracy z ESP32. Starsza wersja 1.8.x nadal działa, ale menedżer płytek jest wolniejszy, a edytor jest znacznie mniej przydatny.
Co potrzebujesz przed rozpoczęciem
- Komputer z Windows, macOS lub Linux z kilkoma gigabajtami wolnej przestrzeni. Rdzeń ESP32 i jego łańcuchy narzędzi to duży plik do pobrania.
- Kabel USB, który przesyła dane. To stale wyławia ludzi. Wiele kabli USB-C dostarczanych z telefonami i powerbankami obsługuje tylko ładowanie, a płytka po prostu nigdy się nie pojawi.
- Płytka ESP32. Poniższe instrukcje obejmują warianty S2, S3 i C6.
- Rozsądne połączenie internetowe do początkowego pobrania.
Krok 1: Instalacja Arduino IDE
Przejdź do arduino.cc/en/software i pobierz bieżące wydanie dla twojego systemu operacyjnego. Witryna najpierw wyświetli stronę z prośbą o darowiznę. Możesz ją pominąć i przejść bezpośrednio do pobrania.
- Windows: wybierz instalator zamiast ZIP. Zaakceptuj monity sterownika, jeśli pojawią się podczas instalacji.
- macOS: otwórz obraz dysku i przeciągnij aplikację do folderu Aplikacje. Przy pierwszym uruchomieniu może być konieczne zatwierdzenie go w sekcji Prywatność i bezpieczeństwo.
- Linux: AppImage jest najmniej kłopotliwy. Oznacz go jako wykonywalny i uruchom. Będziesz również musiał dodać się do grupy dialout, co opisano poniżej w sekcji sterowniki.

Rysunek 1: Strona pobierania na arduino.cc
Uruchom IDE po zakończeniu instalacji. Utworzy folder sketchbook w obszarze dokumentów i ukryty folder ustawień. Warto wiedzieć, gdzie znajduje się folder ustawień, ponieważ jeśli obsługa płytki kiedyś się zepsuje, najszybszym rozwiązaniem jest usunięcie jego części i rozpoczęcie od nowa:
- Windows:
%LOCALAPPDATA%\Arduino15 - macOS:
~/Library/Arduino15 - Linux:
~/.arduino15
Krok 2: Instalacja rdzenia ESP32
Otwórz menedżera płytek. To druga ikona w lewym pasku narzędzi lub Narzędzia > Płytka > Menedżer płytek. Wpisz esp32 w pole wyszukiwania i czekaj chwilę, aż lista się załaduje.
Starsze przewodniki, w tym wiele takich, które nadal znajdują się w górnej części wyników wyszukiwania, mówią ci, aby wkleić niestandardowy URL w Preferencje, zanim będziesz to mógł zrobić. W bieżących wersjach IDE często nie jest to konieczne, więc spróbuj najpierw wyszukiwania i zobacz, co się pojawi. Jeśli pakiet Espressif jest na liście, możesz przejść dalej. Jeśli nie, poniżej znajduje się krótka objazd, która to rozwiąże.
Będziesz najprawdopodobniej widział dwa wpisy, a które z nich wybierzesz, ma znaczenie:
- Arduino ESP32 Boards, by Arduino. Ten pakiet zawiera tylko Arduino Nano ESP32. Nie będzie ci oferować wpisów modułu deweloperskiego S2, S3 ani C6. Jeśli nie jesteś właścicielem Nano ESP32, to nie jest ten pakiet, który chcesz.
- esp32, by Espressif Systems. To jest ten, który potrzebujesz. Wybierz najnowsze wydanie 3.x z listy rozwijanej wersji i kliknij Instaluj.
Pobieranie zajmuje kilkaset megabajtów razem z łańcuchami narzędzi kompilatora, więc daj mu czas. Pasek postępu na długo się nie zmienia podczas rozpakowywania. Nie zamykaj IDE w połowie procesu. Jeśli się nie powiedzie w połowie, uruchom go ponownie zamiast zakładać, że działało.

Rysunek 2: Dwa pakiety, podobne nazwy. Chcesz esp32 by Espressif Systems.
Jeśli pakiet Espressif się nie pojawia
Wskaż IDE na indeks pakietów Espressif ręcznie. To nie robi żadnej szkody, nawet jeśli pakiet był już widoczny, więc jeśli wolisz ustawić go raz i nie myśleć o tym ponownie, śmiało.
Przejdź do Plik > Preferencje, lub na macOS Arduino IDE > Ustawienia. Znajdź pole oznaczone Dodatkowe adresy URL menedżera płytek i dodaj to:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
Jeśli masz już inne adresy URL, na przykład dla obsługi ATtiny lub ESP8266, kliknij małą ikonę na prawym końcu pola, aby otworzyć większe pole i umieść każdy adres URL w osobnej linii. Kliknij OK, a następnie uruchom ponownie IDE, ponieważ nowy indeks pobiera się tylko przy uruchomieniu. Ponownie przeszukaj menedżera płytek dla esp32 i wpis Espressif będzie tam.

Rysunek 3: Pole dodatkowych adresów URL menedżera płytek w Preferencjach
Ważne dla użytkowników C6: Obsługa ESP32-C6 istnieje tylko w wersji rdzenia 3.0.0 i nowszej. Jeśli używasz starszego rdzenia 2.x C6 w ogóle się nie pojawi na liście płytek. S2 i S3 są obsługiwane w obu, ale nie ma dobrego powodu, aby pozostać na 2.x teraz.
Krok 3: Sterowniki USB, lub ich brak
Czy potrzebujesz sterownika, zależy całkowicie od sposobu podłączenia płytki do komputera, a nie od tego, który chip używasz.
Płytki z natywnym USB
S2, S3 i C6 mają wszystkie wbudowany port USB w krzemie. Jeśli gniazdo USB na twojej płytce idzie bezpośrednio do chipa, żaden sterownik nie jest potrzebny na Windows 10 lub 11, macOS lub żadnej bieżącej dystrybucji Linux. Płytka pojawia się jako standardowe urządzenie szeregowe na własny.
Płytki z mostem USB do szeregowego
Wiele płytek deweloperskich wyposażonych jest w oddzielny chip mostka, aby przesyłanie działało w tradycyjny sposób. Jeśli twoja płytka ma jeden z nich, zainstaluj pasujący sterownik:
- CP2102 lub CP2102N: sterownik Silicon Labs CP210x VCP.
- CH340 lub CH9102: sterownik WCH.
- FTDI: sterownik FTDI VCP, chociaż Windows zwykle go już dostarcza.
Niektóre płytki S3 mają dwa gniazda USB, jedno podłączone do mostka i jedno podłączone do chipa. Zachowują się inaczej i tworzą różne nazwy portów. Zanotuj, do którego gniazda się podłączyłeś, ponieważ to ma znaczenie, gdy dojdziesz do ustawień płytki.
Uprawnienia Linux
Na Linux port będzie istniał, ale nie będziesz w stanie go otworzyć, dopóki twój użytkownik nie będzie w grupie dialout:
sudo usermod -a -G dialout $USER
Wyloguj się i zaloguj ponownie, aby to zadziałało. Na niektórych dystrybucjach grupa nosi nazwę uucp.
Krok 4: Wybierz twoją płytę
Przejdź do Narzędzia > Płytka > esp32 i zostanie ci przedstawiona bardzo długa lista. Jeśli twoja płytka ma określony wpis z nazwą, użyj go, ponieważ producent już ustawił rozmiar flash, PSRAM i definicje pinów dla ciebie. Jeśli nie, użyj ogólnego wpisu modułu deweloperskiego:
- ESP32-S2: ESP32S2 Dev Module
- ESP32-S3: ESP32S3 Dev Module
- ESP32-C6: ESP32C6 Dev Module
Lista jest na tyle długa, że przewijanie jest bolesne. W Arduino IDE 2 możesz zamiast tego użyć rozwijane menu wyboru płytki u góry okna i wpisać w niego, co jest znacznie szybsze.

Rysunek 4: Wybór poprawnego modułu deweloperskiego
Krok 5: Ustawienia płytki, które naprawdę mają znaczenie
Po wybraniu płytki menu Narzędzia wypełnia się opcjami. Większość z nich można zostawić bez zmian. To są te, które będą ci sprawiać problemy, jeśli będą złe.
| Ustawienie | ESP32-S2 | ESP32-S3 | ESP32-C6 |
|---|---|---|---|
| USB CDC On Boot | Włączone | Włączone | Włączone |
| Tryb USB | Nieudostępniane | Hardware CDC i JTAG | Nieudostępniane |
| Rozmiar Flash | Dopasuj do modułu | Dopasuj do modułu | Dopasuj do modułu |
| PSRAM | Włączone tylko jeśli zainstalowane | QSPI lub OPI, odpowiednio zainstalowane | Nie obsługiwane |
| Częstotliwość CPU | 240 MHz | 240 MHz | 160 MHz |
| Schemat partycji | Domyślny na początek | Domyślny na początek | Domyślny na początek |
| Prędkość wysyłania | 921600, zmniejsz jeśli zawodne | 921600, zmniejsz jeśli zawodne | 921600, zmniejsz jeśli zawodne |
| Poziom debugowania rdzenia | Brak | Brak | Brak |
USB CDC On Boot
To jest jedyna najczęstsza przyczyna "mój skecz się wysyła, ale monitor seryjny nic nie pokazuje". Na płytce używającej natywnego USB, port szeregowy, z którym rozmawiasz, jest tworzony przez sam skecz. Jeśli USB CDC On Boot jest wyłączone, Serial jest przekierowywane do pinów hardware'owego UART zamiast gniazda USB, a ekran pozostanie całkowicie pusty. Ustaw na Włączone.
Jeśli twoja płytka używa oddzielnego chipa mostu USB do szeregowego, zostaw to wyłączone, ponieważ w takim przypadku Serial idące do pinów UART to dokładnie to, czego chcesz.
Rozmiar flash i schemat partycji
Ustaw rozmiar flash tak, aby pasował do modułu, a nie do największej wartości na liście. Jeśli powiesz IDE, że masz 16MB, a moduł ma tylko 4MB, wysłanie może wydawać się pomyślne, a następnie płytka będzie się bootować w pętli lub utraci swoje zapisane ustawienia.
Domyślny schemat partycji jest w porządku, dopóki twój skompilowany skecz nie przekroczy partycji aplikacji. Gdy IDE zacznie narzekać, że skecz jest za duży, przełącz się na jeden z większych schematów aplikacji. Jeśli zamierzasz robić aktualizacje over-the-air, potrzebujesz schematu z dwiema partycjami aplikacji, ponieważ OTA wpisuje nowy obraz do zapasowego przed przełączeniem.
PSRAM
Włącz PSRAM tylko jeśli moduł go fizycznie ma. Włączenie go na module bez PSRAM spowoduje błędy uruchamiania lub strumień błędów na wyjściu szeregowym. Na S3 musisz również wybrać między QSPI i OPI, a błędne ustawienie powoduje te same symptomy. Sprawdź numer części modułu, jeśli nie jesteś pewny. C6 w ogóle nie obsługuje PSRAM, więc opcja się nie pojawia.

Rysunek 5: Opcje płytki w menu Narzędzia
Krok 6: Znajdź port
Podłącz płytę i zapatrz się w Narzędzia > Port. Na Windows otrzymasz numer COM. Na macOS zobaczysz coś zaczynającego się od /dev/cu.usbmodem dla natywnego USB lub /dev/cu.usbserial dla chipa mostka. Na Linux będzie to /dev/ttyACM0 lub /dev/ttyUSB0.
Jeśli nic się nie pojawia, przejdź przez to w tej kolejności:
- Spróbuj innego kabla. To rozwiązuje problem częściej niż cokolwiek innego.
- Spróbuj innego gniazda USB, najlepiej bezpośrednio na maszynie zamiast przez hub.
- Sprawdź, czy płytka ma chip mostka, który wymaga sterownika.
- Na Windows, otwórz Menedżer urządzeń i szukaj nieznanego urządzenia pojawiającego się i znikającego, gdy podłączasz płytę.
Jest jedno zachowanie z natywnym USB, które wszystkich zaskakuje za pierwszym razem. Port należy do uruchomionego skeczy, więc znika przy resetowaniu i pojawia się znowu po sekundzie lub dwóch. Jeśli wgrasz skecz, który się zawiesza na wczesnym etapie, port może zniknąć na zawsze, dopóki nie wymuszysz płytki w tryb pobierania.
Krok 7: Wymuszenie trybu pobierania
Jeśli wgranie nie powiedzie się z komunikatem o nieudanym połączeniu, musisz ręcznie umieścić chip w jego bootloaderze. Sekwencja jest zawsze taka sama:
- Przytrzymaj przycisk BOOT (czasami oznaczony IO0).
- Naciśnij i zwolnij przycisk RESET (czasami oznaczony EN lub RST).
- Zwolnij BOOT.
Chip teraz siedzi w jego bootloaderze ROM, czekając. Na płytce z natywnym USB enuméruje się w tym momencie jako inny port szeregowy, więc wróć do Narzędzia > Port i wybierz nowy przed wgraniem. Po zakończeniu wgrania naciśnij RESET samodzielnie, aby uruchomić skecz, a oryginalny port powróci.
Notatki wg chipa
S2: najbardziej prawdopodobna z trzech, że będzie wymagać ręcznej sekwencji przycisków. Przyzwyczaj się do robienia tego zawsze, a zaoszczędzisz sobie dużo marudzenia.
S3: zwykle resetuje się do trybu pobierania automatycznie przez natywny USB, ale nie zawsze, szczególnie jeśli poprzedni skecz wyłączył USB lub zawiesił się w ustawieniu.
C6: generalnie dobrze się zachowuje. Jeśli jednak się odmawia, ta sama sekwencja przycisków się stosuje.

Rysunek 6: Przyciski BOOT i RESET - Na mercury przycisk POWER to RESET, a BUTTON to przycisk BOOT na przykład.
Krok 8: Pierwszy skecz, aby udowodnić łańcuch narzędzi
Oprzeź się chęci, aby zacząć od mrugania. Na wielu płytkach deweloperskich S3 i C6 wbudowana LED jest typu RGB adresowalnego, a nie zwykłego, więc standardowy skecz mrugający nic nie robi, a ty zostajesz zastanawiając się, czy wgranie pracowało. Zamiast tego wydrukuj coś przez port szeregowy, ponieważ to mówi ci, że chip naprawdę uruchamia twój kod i potwierdza ustawienia płytki jednocześnie.
void setup() {
Serial.begin(115200);
delay(2000); // lets the USB serial port enumerate before we print
Serial.println();
Serial.println("ESP32 is alive");
Serial.print("Chip model : ");
Serial.println(ESP.getChipModel());
Serial.print("Cores : ");
Serial.println(ESP.getChipCores());
Serial.print("Flash bytes : ");
Serial.println(ESP.getFlashChipSize());
Serial.print("Free heap : ");
Serial.println(ESP.getFreeHeap());
}
void loop() {
Serial.print("uptime ms: ");
Serial.println(millis());
delay(1000);
}
Kliknij strzałkę, aby wgrać, a następnie otwórz Monitor szeregowy ikoną lupy w prawym górnym rogu i ustaw prędkość transmisji na 115200. Powinieneś zobaczyć, że chip się raportuje. Jeśli linia modelu mówi ESP32-S3 i wybrałeś tablicę S2, wszystko od IDE aż do krzemienia mówi prawidłowo.
Dwusekundowe opóźnienie na początku jest zamierzone. Z natywnym USB host zajmuje moment, aby otworzyć port po resetowaniu, a wszystko wydrukowane przed tym jest tracone. Nie zastępuj go nagim while (!Serial); pętlą, ponieważ na płytce zasilanej z baterii bez podłączonego komputera zawiesza się na zawsze. Jeśli chcesz czekać prawidłowo, daj limit czasu na to:
while (!Serial && millis() < 3000) {
delay(10);
}
Krok 9: Instalacja bibliotek
Większość czujników i urządzeń peryferyjnych wymaga biblioteki. Użyj menedżera bibliotek, który jest ikoną książek na lewym pasku narzędzi, lub Skecz > Dołącz bibliotekę > Zarządzaj bibliotekami. Wyszukaj, wybierz, zainstaluj, a IDE zaproponuje również wprowadzenie wszelkich zależności. Powiedz tak tym.
Dla biblioteki dostarczonej jako plik ZIP, użyj Skecz > Dołącz bibliotekę > Dodaj bibliotekę .ZIP. Jest rozpakowany do folderu bibliotek wewnątrz twojego sketchbook, i możesz również po prostu upuścić folder tam ręcznie, jeśli wolisz. Uruchom IDE ponownie, jeśli ręcznie dodana biblioteka się nie pojawia.
Jedna rzecz do obejrzenia: nie każda biblioteka Arduino pracuje na ESP32, i z tych, które pracują, nie wszystkie pracują na wszystkich trzech chipach. Cokolwiek, co kopie do rejestrów AVR bezpośrednio, lub zakłada starszy zestaw urządzeń peryferyjnych ESP32, może nie skompilować się na C6 w szczególności, ponieważ jest częścią RISC-V zamiast Xtensa. Jeśli biblioteka odmawia budowy, sprawdź jej tracker problemów przed założeniem, że twoja konfiguracja jest zepsuta.
Utrzymanie wersji pod kontrolą
Ta część jest pomijana przez prawie wszystkich, a następnie powoduje problemy sześć miesięcy później. Wersja rdzenia, przed którą budujesz, wpływa na czas, zachowanie urządzeń peryferyjnych i czasami znaczenie wywołania API. Projekt, który zbudował i latał idealnie ostatniego sezonu, może zachowywać się inaczej po aktualizacji.
Dwa nawyki są warte nabycia:
- Zanotuj wersję rdzenia i wersje bibliotek, których użyłeś, obok kodu. Komentarz na górze głównego pliku skeczy jest wystarczający.
- Nie aktualizuj rdzenia w środku projektu, chyba że masz powód. Skończ, potwierdź, a następnie aktualizuj, a następnie re-potwierdź, zanim znowu się na nim oprzesz.
Menedżer płytek pozwala ci wybrać dowolną opublikowaną wersję z listy rozwijanej, nie tylko najnowszą, więc powrót jest prosty, jeśli aktualizacja coś zepsuje.
Rozwiązywanie problemów
| Symptom | Prawdopodobna przyczyna i naprawa |
|---|---|
| Żaden port się nie pojawia wcale | Kabel tylko do ładowania, brakujący sterownik mostka, lub hub w drodze. Spróbuj najpierw znanego dobrego kabla. |
| Nieudane połączenie, lub timeout czekając na nagłówek pakietu | Chip nie jest w trybie pobierania. Użyj sekwencji BOOT i RESET, a następnie re-wybierz port, który się pojawi. |
| Wgranie powiedzie się, ale monitor szeregowy jest pusty | USB CDC On Boot jest wyłączone, lub prędkość transmisji jest złe, lub wydrukowano przed otwarciem portu. |
| Ciągłe restarty z rst reason wydrukowanym na 115200 | Zwykle PSRAM włączony, gdy nie ma zainstalowanego, złym tryb PSRAM na S3, lub złym rozmiarze flash. |
| Detektor napięcia zaniki został wyzwolony | Niewystarczający prąd zasilania, często podczas transmisji Wi-Fi. Użyj lepszego zasilacza lub krótszego kabla. |
| Skecz za duży | Zmień na schemat partycji z większym obszarem aplikacji. |
| Port znika w momencie startu skeczy | Skecz zawala się w ustawieniu. Wymuszaj tryb pobierania i wgrywaj coś wiadomego. |
| Na liście płytek pojawia się tylko Nano ESP32 | Zainstalowałeś Arduino ESP32 Boards zamiast esp32 by Espressif Systems. Zainstaluj pakiet Espressif również. |
| Płytka nie pojawia się na liście | Rdzeń za stary, szczególnie dla C6. Aktualizuj do 3.x lub nowszej. |
| Błędy kompilacji zaraz po zainstalowaniu rdzenia | Przerwane pobieranie. Usuń pakiet esp32 w menedżerze płytek i zainstaluj go ponownie. |
Dokąd iść dalej
Raz masz wyjście szeregowe pracujące masz najtrudniejszą część za sobą. Wszystko po tym jest tylko kod. Przykłady, które są dostarczone z rdzeniem, to dobre miejsce do rozpoczęcia, i wszystkie znajdują się w Plik > Przykłady raz tablicę ESP32 jest wybrana. Tylko przykłady odpowiednie do chipa, który wybrałeś, będą pokazane, co jest przydatne samo w sobie, gdy próbujesz pracować, co konkretna część może robić.
Jeśli coś w tym przewodniku nie pasuje do tego, co widzisz, ustawienia płytki są pierwszym miejscem do obejrzenia. Dziewięć razy na dziesięć to jest USB CDC On Boot, rozmiar flash, lub ustawienie PSRAM.


