Pinout ESP32 - jak wybrać właściwe GPIO do projektu?

Marcel Zieliński .

13 września 2026

Schemat ESP32 (DEV KIT 38 PIN) z wyprowadzeniami: zasilanie, GND, RESET, EN, ADC, DAC, TCH, TX, RX, SD, MOSI, SCL, SDA, SCK, CS.

Podłączasz czujnik, przekaźnik albo wyświetlacz do płytki ESP32 i nagle okazuje się, że nie każdy numer na obudowie oznacza zwykłe wejście lub wyjście. Schemat oznaczany jako esp32 pinout pomaga szybko rozpoznać funkcje GPIO, piny zasilania, interfejsy komunikacyjne i wyprowadzenia, których lepiej nie używać. Poniżej pokazuję, jak czytać taki diagram i bezpiecznie dobrać piny do własnego projektu.

Najważniejsze informacje o pinach ESP32 w jednym miejscu

  • GPIO6-GPIO11 są zwykle zajęte przez pamięć flash i nie powinno się ich używać do własnych układów.
  • GPIO34-GPIO39 działają tylko jako wejścia, więc nie wysterują diody ani przekaźnika.
  • GPIO0, GPIO2, GPIO5, GPIO12 i GPIO15 wpływają na uruchamianie układu i wymagają ostrożności.
  • ESP32 pracuje z logiką 3,3 V i nie jest układem odpornym na sygnały 5 V.
  • Do pomiarów analogowych przy włączonym Wi-Fi najlepiej wybierać ADC1, czyli GPIO32-GPIO39.

Schemat pinout ESP32 z oznaczeniami pinów: zielone kółka to użyteczne piny I/O, pomarańczowe kwadraty to tylko wejścia, a żółte kółka to piny nie-GPIO.

Jak czytać diagram pinów ESP32

Najpierw trzeba rozdzielić dwie rzeczy. ESP32 to rodzina mikrokontrolerów, a popularna płytka deweloperska może mieć moduł ESP32-WROOM-32, ESP32-WROOM-32E albo wariant z pamięcią PSRAM. Dlatego układ wyprowadzeń należy zawsze porównywać z konkretną płytką, a nie tylko z przypadkowym obrazkiem znalezionym w internecie.

Na typowym diagramie spotkasz oznaczenia GPIO, czyli numery wewnętrznych linii wejścia i wyjścia. Napisy takie jak IO21, D18 czy GPIO21 często odnoszą się do tego samego wyprowadzenia, ale oznaczenia 3V3, 5V, EN i GND opisują już zasilanie lub sterowanie płytką.

Oznaczenie Znaczenie Praktyczne zastosowanie
GPIO Cyfrowe wejście lub wyjście Przyciski, diody, przekaźniki, sterowanie modułami
3V3 Zasilanie 3,3 V Czujniki i moduły pracujące z logiką 3,3 V
5V Linia zasilania doprowadzona z USB lub zewnętrznego źródła Zasilanie płytki albo urządzeń wymagających 5 V
GND Masa układu Wspólny punkt odniesienia dla wszystkich połączeń
EN Enable, czyli reset i włączenie układu Resetowanie mikrokontrolera

W praktyce najczęstszy błąd polega na pomyleniu numeru fizycznego pinu z numerem GPIO. W programie Arduino używasz na przykład GPIO21, nawet jeśli na płytce znajduje się on jako dwudzieste pierwsze wyprowadzenie od jednej z krawędzi. Numer pozycji na listwie goldpinów nie jest numerem używanym w kodzie.

Nie wszystkie GPIO są równie dobrym wyborem

ESP32 ma sporo wyprowadzeń, ale ich możliwości nie są identyczne. Ja przy pierwszym projekcie dzielę je na trzy grupy: piny wygodne do codziennego użycia, piny wymagające ostrożności oraz piny, których nie traktuję jako dostępnych GPIO.

Piny zwykle bezpieczne dla początkujących

Do prostych wyjść cyfrowych często wybieram GPIO16, GPIO17, GPIO18, GPIO19, GPIO21, GPIO22, GPIO23, GPIO25, GPIO26, GPIO27, GPIO32 i GPIO33. Ostateczny wybór zależy od tego, czy projekt korzysta z SPI, I2C, UART, PWM albo pomiarów analogowych, ale te numery dają zwykle dużo swobody.

GPIO25 i GPIO26 mają dodatkową funkcję DAC, czyli przetwornika cyfrowo-analogowego. Dzięki temu mogą generować napięcie analogowe, a nie tylko stan niski lub wysoki. To przydatne między innymi przy prostym generatorze sygnału, choć nie zastąpi precyzyjnego zewnętrznego przetwornika.

Piny tylko do odczytu

GPIO34, GPIO35, GPIO36 i GPIO39 są wejściami. Możesz podłączyć do nich przycisk, sygnał z czujnika albo wejście analogowe, ale nie ustawisz na nich stanu wysokiego i nie wysterujesz diody. Co więcej, te linie nie mają zwykłych wewnętrznych rezystorów podciągających, więc przy przycisku trzeba zastosować rezystor zewnętrzny.

Wyprowadzenia zajęte przez pamięć

GPIO6-GPIO11 są połączone z pamięcią flash modułu. Na wielu płytkach pojawiają się na listwie pinów, lecz ich wykorzystanie może zawiesić program albo uniemożliwić uruchomienie mikrokontrolera. Obecność numeru na diagramie nie oznacza więc, że jest to pin dostępny dla użytkownika.

To jeden z tych szczegółów, który na papierze wygląda niewinnie, a w praktyce potrafi zabrać kilka godzin. Jeżeli po podłączeniu modułu do GPIO6, GPIO7, GPIO8, GPIO9, GPIO10 lub GPIO11 program zaczyna losowo się resetować, pierwszym podejrzanym powinna być właśnie pamięć flash.

GPIO rozruchowe mogą zmienić zachowanie płytki

Niektóre linie są odczytywane podczas startu ESP32. Nazywa się je strapping pins, czyli pinami konfiguracyjnymi rozruchu. Ich stan w chwili resetu decyduje między innymi o trybie uruchamiania, komunikatach startowych albo napięciu używanym przez interfejs pamięci.

GPIO Dlaczego trzeba uważać Typowy problem
GPIO0 Wybiera normalny start lub tryb programowania Układ wchodzi do bootloadera zamiast uruchomić aplikację
GPIO2 Bierze udział w wyborze trybu startu Problemy z programowaniem przy niewłaściwym poziomie logicznym
GPIO5 Ma funkcję konfiguracyjną interfejsu SDIO Konflikt z modułem podłączonym podczas resetu
GPIO12 Wpływa na konfigurację napięcia pamięci Brak startu lub niestabilna praca przy złym stanie pinu
GPIO15 Wpływa na komunikaty i konfigurację startową Nieoczekiwane logi albo problemy z uruchomieniem

Nie oznacza to, że tych GPIO nie wolno używać. Można, ale urządzenie podłączone do takiej linii nie powinno wymuszać przypadkowego poziomu logicznego podczas resetu. Przy prostym przycisku zwykle da się to rozwiązać rezystorem, natomiast przekaźnik, konwerter poziomów lub moduł z własnym układem startowym może już wejść w konflikt.

Szczególnie ostrożnie traktuję GPIO12. W niektórych konfiguracjach wymuszenie niewłaściwego poziomu podczas uruchamiania prowadzi do problemów z pamięcią. Jeżeli nie ma wyraźnego powodu, wybieram inny pin i oszczędzam sobie diagnostyki.

Interfejsy komunikacyjne i ich najwygodniejsze piny

Jedną z mocnych stron ESP32 jest możliwość przypisywania funkcji peryferyjnych do różnych GPIO. Nie oznacza to jednak, że każdy wariant jest równie wygodny. Domyślne zestawy są dobrze opisane w bibliotekach i przykładach, dlatego przy pierwszym projekcie zwykle nie opłaca się ich zmieniać.

I2C dla czujników

Najczęściej używany zestaw I2C to GPIO21 jako SDA i GPIO22 jako SCL. SDA przenosi dane, a SCL sygnał zegarowy. Do jednej magistrali można podłączyć kilka czujników, jeśli mają różne adresy albo korzystają z multipleksera.

I2C wymaga rezystorów podciągających. Wiele gotowych modułów ma je już na płytce, ale przy połączeniu kilku urządzeń mogą pojawić się problemy z nadmiernie małą rezystancją. Dla krótkich przewodów i typowych modułów wartości około 4,7 kΩ są częstym punktem wyjścia, choć finalny dobór zależy od napięcia, długości przewodów i liczby urządzeń.

SPI dla wyświetlaczy i szybkich modułów

Popularny zestaw VSPI wykorzystuje GPIO18 jako SCK, GPIO19 jako MISO, GPIO23 jako MOSI oraz GPIO5 jako CS. SCK to zegar, MISO i MOSI służą do przesyłania danych w dwóch kierunkach, a CS wybiera konkretne urządzenie.

GPIO5 jest jednak pinem konfiguracyjnym, dlatego przy wymagającym projekcie można przenieść CS na inne, wygodniejsze wyprowadzenie. Sam interfejs SPI nadal może korzystać z GPIO18, GPIO19 i GPIO23, a wybór urządzenia odbywa się przez osobne linie CS.

Przeczytaj również: Sterowanie silnikiem DC z Arduino - Poradnik bez błędów!

UART dla komunikacji szeregowej

GPIO1 i GPIO3 są zwykle używane przez UART0, czyli port połączony z układem USB-UART na płytce. To właśnie przez niego odbywa się programowanie i często pojawiają się komunikaty diagnostyczne. Podłączenie zewnętrznego urządzenia do tych pinów może zakłócać wgrywanie programu.

Do dodatkowej komunikacji szeregowej wygodniejsze bywają GPIO16 i GPIO17. Trzeba jednak sprawdzić wersję modułu, ponieważ w wariantach z PSRAM część tych linii może być zajęta wewnętrznie. Diagram konkretnej płytki ma tu większe znaczenie niż ogólna tabela dla rodziny ESP32.

Zasilanie i sygnały 3,3 V decydują o bezpieczeństwie układu

ESP32 nie jest mikrokontrolerem 5-woltowym. Jego logika pracuje przy 3,3 V, dlatego bezpośrednie podanie 5 V na GPIO może uszkodzić wejście. Dotyczy to również sygnałów z modułów Arduino, czujników i konwerterów, które nie mają wyjść zgodnych z poziomami 3,3 V.

Jeżeli urządzenie wysyła sygnał 5 V, stosuję dzielnik rezystorowy albo konwerter poziomów logicznych. Dla prostych, wolnych sygnałów dzielnik często wystarcza. Przy szybkiej magistrali, takiej jak SPI, lepszy jest odpowiedni konwerter, ponieważ pojemności pasożytnicze i sposób przełączania mogą zniekształcić przebieg.

Pin 3V3 służy do zasilania urządzeń wymagających 3,3 V, ale nie jest dobrym źródłem dla dużych obciążeń. Serwomechanizm, taśma LED albo przekaźnik powinny mieć osobne zasilanie, a masa tego zasilacza musi być połączona z GND ESP32. Brak wspólnej masy jest częstą przyczyną pozornie losowych błędów komunikacji.

Przy pomiarach analogowych trzeba pilnować nie tylko napięcia, lecz także źródła sygnału. Wejście ADC nie jest idealnym woltomierzem, a odczyty mogą zależeć od tłumienia, impedancji i zakłóceń. Do stabilnych pomiarów wybieram ADC1 na GPIO32-GPIO39, ponieważ kanały ADC2 mogą kolidować z aktywnym Wi-Fi.

Jak dobrać piny do typowego projektu

Najprościej zacząć od funkcji, a dopiero później przypisać numery GPIO. Poniższy układ sprawdza się jako punkt wyjścia dla małego projektu z czujnikiem, wyświetlaczem i sygnalizacją.

Element Proponowane GPIO Na co zwrócić uwagę
Dioda LED GPIO25, GPIO26, GPIO27 lub GPIO33 Dodaj rezystor, zwykle 220-1000 Ω
Przycisk GPIO32 lub GPIO33 Użyj podciągania i nie obciążaj pinu podczas resetu
Czujnik analogowy GPIO32-GPIO39 Nie przekraczaj 3,3 V i pamiętaj, że GPIO34-GPIO39 są tylko wejściami
Czujnik I2C GPIO21 i GPIO22 Sprawdź adres oraz obecność rezystorów podciągających
Wyświetlacz SPI GPIO18, GPIO19, GPIO23 oraz dowolny bezpieczny CS Nie zajmuj GPIO6-GPIO11
Dodatkowy UART GPIO16 i GPIO17 Sprawdź, czy płytka nie korzysta z PSRAM

Przy większej liczbie urządzeń tworzę sobie prostą mapę połączeń przed włożeniem przewodów. Zapisuję nazwę sygnału, numer GPIO, napięcie oraz to, czy pin jest używany podczas startu. Taka minuta planowania często zapobiega sytuacji, w której działający czujnik blokuje programowanie albo wyświetlacz zakłóca uruchamianie płytki.

Błędy, przez które pinout ESP32 wprowadza w błąd

Pierwszy błąd to korzystanie z diagramu innej wersji płytki. Klony DevKit mogą mieć 30, 36 albo 38 wyprowadzeń, a ich opisy na laminacie bywają skrócone. Zawsze porównuję numer GPIO nadrukowany na płytce z dokumentacją modułu i dopiero wtedy podłączam układ.

Drugi problem to założenie, że każdy pin oznaczony jako GPIO działa identycznie. GPIO34-GPIO39 są tylko wejściami, GPIO6-GPIO11 współpracują z pamięcią, a piny rozruchowe mogą zmienić zachowanie całego mikrokontrolera. Sam numer GPIO nie mówi jeszcze, czy nadaje się on do konkretnego zadania.

Trzeci błąd dotyczy zasilania. Podanie 5 V na wejście, brak wspólnej masy albo zasilanie silnika z pinu 3V3 może prowadzić do resetów i uszkodzeń. Jeżeli układ działa poprawnie bez Wi-Fi, a zaczyna się zawieszać po jego włączeniu, sprawdzam przede wszystkim pobór prądu, spadki napięcia i konflikt z ADC2.

Na końcu sprawdzam dokumentację biblioteki, której używam. Biblioteka wyświetlacza, karty SD albo konkretnego czujnika może domyślnie zajmować inne piny niż te, które wybrałem. Zmiana konfiguracji jest możliwa, ale lepiej zrobić ją świadomie niż później szukać błędu w samym diagramie.

Dobry wybór GPIO zaczyna się od sprawdzenia płytki

Najbardziej uniwersalna zasada brzmi prosto: wybieraj piny zgodnie z ich funkcją, napięciem i zachowaniem podczas startu. Do zwykłych sygnałów cyfrowych używaj dostępnych GPIO, do analogowych preferuj ADC1, a linii flash oraz pinów tylko wejściowych nie traktuj jako zamienników dla dowolnego wyprowadzenia.

Jeżeli projekt ma działać stabilnie, zostaw sobie kilka wolnych GPIO na późniejsze rozszerzenia. ESP32 daje dużą elastyczność, ale właśnie dlatego łatwo zbudować układ, w którym kilka peryferiów walczy o te same zasoby. Sprawdzenie konkretnego diagramu płytki przed lutowaniem jest szybsze, tańsze i bezpieczniejsze niż naprawianie źle zaprojektowanego połączenia.

FAQ - Najczęstsze pytania

GPIO6-GPIO11 są zwykle połączone z pamięcią flash modułu. Nie należy używać ich do własnych układów, ponieważ mogą powodować zawieszanie programu, resety albo problemy z uruchomieniem mikrokontrolera.
GPIO34, GPIO35, GPIO36 i GPIO39 są przeznaczone wyłącznie do odczytu. Można podłączyć do nich przycisk, czujnik lub sygnał analogowy, ale nie wysterują diody ani przekaźnika. Nie mają też zwykłych wewnętrznych rezystorów podciągających, więc przy przycisku potrzebny jest rezystor zewnętrzny.
Dla I2C najczęściej stosuje się GPIO21 jako SDA i GPIO22 jako SCL. Popularny zestaw VSPI to GPIO18 jako SCK, GPIO19 jako MISO, GPIO23 jako MOSI oraz GPIO5 jako CS, choć CS można przenieść na inny bezpieczny pin. Dodatkowy UART często wykorzystuje GPIO16 i GPIO17, ale w płytkach z PSRAM te linie mogą być zajęte.
Nie, ponieważ logika ESP32 pracuje przy 3,3 V, a bezpośrednie podanie 5 V może uszkodzić wejście. Dla prostych, wolnych sygnałów 5 V można użyć dzielnika rezystorowego, a przy szybkich magistralach, takich jak SPI, lepszy będzie konwerter poziomów logicznych.
Oceń artykuł

Średnia: 0.0 / 5 · 0 ocen

Tagi

esp32 gpio i2c spi adc
Autor Marcel Zieliński
Marcel Zieliński
Nazywam się Marcel Zieliński i od trzech lat zajmuję się tematyką elektroniki, robotyki i programowania. Moje zainteresowanie tymi dziedzinami zaczęło się w dzieciństwie, kiedy to pierwszy raz zbudowałem prosty robot. Od tego momentu pasjonuję się odkrywaniem, jak technologia może ułatwiać życie i rozwiązywać codzienne problemy. W moich tekstach staram się w przystępny sposób tłumaczyć złożone zagadnienia, porównując różne źródła i śledząc aktualne trendy w branży. Zależy mi na tym, aby dostarczać czytelnikom rzetelne, zrozumiałe i użyteczne informacje, które pomogą im lepiej zrozumieć świat elektroniki i robotyki.
Komentarze (0)
Dodaj komentarz