ESP32 pinout – praktyczny przewodnik po pinach, GPIO, zasilaniu i bezpiecznym projektowaniu układów

ESP32 pinout – praktyczny przewodnik po pinach, GPIO, zasilaniu i bezpiecznym projektowaniu układów

ESP32 pinout to jeden z najważniejszych tematów dla osób, które zaczynają pracę z modułami ESP32 albo chcą budować stabilne projekty z Wi-Fi, Bluetooth, czujnikami, wyświetlaczami, przekaźnikami, silnikami czy systemami automatyki. Sam ESP32 jest bardzo wszechstronnym mikrokontrolerem, ale jego piny nie są jednakowe. Niektóre można bezpiecznie wykorzystywać jako wejścia i wyjścia cyfrowe, inne służą do ADC, DAC, komunikacji I2C, SPI lub UART, część jest używana podczas startu układu, a część może być połączona z pamięcią flash i nie powinna być używana w typowych projektach.

Dobre zrozumienie ESP32 pinout pozwala uniknąć problemów, które początkujący spotykają bardzo często: płytka nie startuje, program nie chce się wgrać, czujnik pokazuje błędne wartości, przekaźnik sam się załącza po resecie, układ działa przez USB, ale nie działa z zasilania zewnętrznego albo projekt zachowuje się niestabilnie. W tym artykule znajdziesz praktyczne omówienie pinów ESP32, ich zastosowań, ograniczeń i dobrych praktyk projektowych.

Czym jest ESP32 pinout?

ESP32 pinout to opis wyprowadzeń płytki lub modułu ESP32. Pokazuje, które piny odpowiadają za zasilanie, masę, wejścia i wyjścia GPIO, komunikację, odczyt analogowy, dotyk pojemnościowy, konwerter cyfrowo-analogowy, magistrale sprzętowe oraz funkcje specjalne.

W praktyce pinout odpowiada na pytanie: do którego pinu można podłączyć konkretny element i czy będzie to bezpieczne dla działania układu.

ESP32 występuje w wielu wersjach: jako sam układ scalony, jako moduł, na przykład ESP32-WROOM, oraz jako płytka deweloperska, na przykład ESP32-DevKitC. To bardzo ważne, ponieważ pinout modułu i pinout płytki rozwojowej nie zawsze wyglądają tak samo. Oficjalny ESP32-DevKitC V4 jest płytką deweloperską, w której większość pinów I/O została wyprowadzona na boczne listwy, aby można było łatwo podłączać przewody lub używać płytki stykowej.

Dlaczego ESP32 pinout jest tak ważny?

ESP32 ma wiele możliwości, ale nie każdy pin nadaje się do każdego zastosowania. W Arduino Uno początkujący często mogą używać pinów dość swobodnie. W ESP32 trzeba zachować większą uwagę, ponieważ część wyprowadzeń ma funkcje specjalne.

Znajomość ESP32 pinout pomaga:

  • wybrać bezpieczne GPIO do diod LED, przycisków, czujników i przekaźników,
  • uniknąć pinów zajętych przez pamięć flash,
  • poprawnie podłączyć magistrale I2C, SPI i UART,
  • wybrać właściwe wejścia analogowe,
  • nie blokować startu mikrokontrolera,
  • unikać konfliktów z bootowaniem,
  • prawidłowo zaplanować zasilanie,
  • zbudować projekt, który działa stabilnie po resecie i po odłączeniu od komputera.

ESP32 jest bardzo elastyczny, ale ta elastyczność wymaga świadomego projektowania. Dokumentacja Espressif wskazuje, że wiele peryferiów może być przypisywanych do różnych GPIO dzięki mechanizmowi GPIO Matrix, ale nie oznacza to, że wszystkie piny są równie dobre do każdego zadania.

ESP32 pinout a różne płytki rozwojowe

W internecie można znaleźć wiele grafik opisanych jako „ESP32 pinout”, ale nie zawsze odnoszą się one do tej samej płytki. To jedna z najczęstszych pułapek.

ESP32-WROOM a ESP32 DevKit

ESP32-WROOM to moduł, czyli niewielka płytka z układem ESP32, pamięcią flash, anteną i elementami radiowymi. Taki moduł może zostać zamontowany na większej płytce deweloperskiej.

ESP32 DevKit to gotowa płytka rozwojowa z modułem ESP32, portem USB, konwerterem USB-UART, stabilizatorem napięcia, przyciskami BOOT i EN oraz listwami pinów. Dlatego osoba pracująca z płytką deweloperską zwykle korzysta z pinów opisanych na samej płytce, a nie bezpośrednio z rozmieszczenia wyprowadzeń modułu.

Dlaczego numeracja pinów bywa myląca?

Na płytkach ESP32 można spotkać różne oznaczenia:

  • GPIO23,
  • IO23,
  • D23,
  • 23,
  • TX0,
  • RX0,
  • VP,
  • VN,
  • 3V3,
  • VIN,
  • GND.

Najważniejsza zasada: w kodzie najczęściej używa się numeru GPIO, a nie fizycznego numeru nóżki modułu.

Jeśli na płytce widnieje oznaczenie „IO23” albo „GPIO23”, w kodzie Arduino zwykle użyjesz:

const int pin = 23;

Nie należy mylić numeru GPIO z miejscem pinu na listwie ani z numerem wyprowadzenia w dokumentacji modułu.

Najważniejsze grupy pinów ESP32

ESP32 pinout można zrozumieć znacznie łatwiej, jeśli podzieli się piny na kilka praktycznych grup.

Piny zasilania

Typowe płytki ESP32 mają piny związane z zasilaniem:

  • 3V3 – wyjście napięcia 3,3 V,
  • GND – masa układu,
  • VIN / 5V – wejście lub linia zasilania 5 V, zależnie od płytki,
  • EN – pin enable, używany do resetowania lub włączania układu.

ESP32 pracuje logicznie na poziomie 3,3 V. To bardzo ważne: GPIO ESP32 nie są wejściami 5 V tolerant w typowym sensie projektowym. Jeśli podłączasz moduł działający z logiką 5 V, należy użyć konwertera poziomów logicznych albo upewnić się, że jego sygnały są bezpieczne dla ESP32.

Piny GPIO

GPIO, czyli General Purpose Input/Output, to uniwersalne wejścia i wyjścia cyfrowe. Można do nich podłączać diody LED, przyciski, czujniki cyfrowe, przekaźniki przez tranzystor lub moduł, sterowniki, wyświetlacze i wiele innych elementów.

Nie wszystkie GPIO są jednak takie same. Część pinów jest tylko wejściowa, część jest używana podczas bootowania, a część może być zajęta przez pamięć flash.

Piny ADC

ADC, czyli przetwornik analogowo-cyfrowy, pozwala mierzyć napięcie analogowe. Dzięki temu ESP32 może odczytywać wartości z potencjometrów, czujników światła, czujników wilgotności gleby, dzielników napięcia i wielu czujników analogowych.

Piny DAC

ESP32 ma także wyjścia DAC, czyli przetwornik cyfrowo-analogowy. Pozwala to generować napięcie analogowe w ograniczonym zakresie. W klasycznym ESP32 wyjścia DAC są dostępne na GPIO25 i GPIO26.

Piny dotykowe

Niektóre GPIO ESP32 obsługują touch sensing, czyli dotyk pojemnościowy. Można je wykorzystać do tworzenia przycisków dotykowych bez mechanicznych przełączników.

Piny komunikacyjne

ESP32 obsługuje różne interfejsy komunikacyjne:

  • UART,
  • I2C,
  • SPI,
  • I2S,
  • PWM,
  • RMT,
  • MCPWM.

Wiele funkcji można przypisać do różnych GPIO dzięki elastycznej architekturze ESP32, ale przy projektowaniu nadal trzeba uwzględniać ograniczenia konkretnych pinów.

Najbezpieczniejsze piny GPIO w ESP32

W praktycznych projektach początkującym najczęściej poleca się wybierać piny, które nie są wejściami tylko do odczytu, nie są bezpośrednio związane z pamięcią flash i nie wpływają krytycznie na start układu.

Za często wygodne i bezpieczne GPIO w typowych płytkach ESP32 uznaje się między innymi:

  • GPIO13,
  • GPIO14,
  • GPIO16,
  • GPIO17,
  • GPIO18,
  • GPIO19,
  • GPIO21,
  • GPIO22,
  • GPIO23,
  • GPIO25,
  • GPIO26,
  • GPIO27,
  • GPIO32,
  • GPIO33.

Nie oznacza to, że każdy z tych pinów zawsze będzie idealny. Trzeba jeszcze sprawdzić, czy wybrany pin nie jest używany przez konkretną płytkę, wyświetlacz, moduł, kartę SD albo układ zewnętrzny.

Piny, z którymi trzeba uważać

Jednym z najważniejszych elementów ESP32 pinout jest lista pinów problematycznych. Nie są one „złe”, ale wymagają świadomości.

GPIO6–GPIO11

W modułach takich jak ESP32-WROOM piny GPIO6 do GPIO11 są zwykle połączone z wbudowaną pamięcią SPI flash. Oficjalna dokumentacja modułu ESP32-WROOM-32 wskazuje, że linie SCK/CLK, SDO/SD0, SDI/SD1, SHD/SD2, SWP/SD3 i SCS/CMD, czyli GPIO6–GPIO11, są połączone z pamięcią flash i nie są zalecane do innych zastosowań.

W praktyce oznacza to: nie używaj GPIO6–GPIO11 w typowych projektach na płytkach ESP32-WROOM.

GPIO34–GPIO39

Piny GPIO34, GPIO35, GPIO36 i GPIO39 są wejściowe. Można ich używać do odczytu sygnałów, na przykład analogowych, ale nie można używać ich jako wyjść cyfrowych do sterowania diodą, przekaźnikiem czy sygnałem PWM.

To bardzo częsty błąd początkujących. Jeśli ustawisz GPIO34 jako wyjście, projekt nie zadziała zgodnie z oczekiwaniem, ponieważ ten pin nie obsługuje trybu wyjściowego.

GPIO0

GPIO0 jest pinem startowym. Jego stan podczas resetu wpływa na tryb bootowania. Jest używany między innymi podczas wgrywania programu. Można go używać w projekcie, ale trzeba uważać, aby podłączony układ nie wymuszał niewłaściwego stanu podczas startu.

GPIO2

GPIO2 również może wpływać na proces startu. W wielu płytkach jest podłączony do wbudowanej diody LED lub ma znaczenie podczas bootowania. Da się go używać, ale nie jest to najlepszy wybór dla początkujących, zwłaszcza do przekaźników lub układów wymuszających stan przy starcie.

GPIO5

GPIO5 jest jednym z pinów strapping, czyli pinów odczytywanych podczas resetu. Można go stosować, ale trzeba pilnować, aby zewnętrzny układ nie zaburzał startu ESP32.

GPIO12

GPIO12 jest szczególnie wrażliwy, ponieważ jego stan podczas startu może wpływać na konfigurację napięcia pamięci flash w niektórych konfiguracjach. W projektach początkujących najlepiej unikać używania GPIO12 do elementów, które mogą wymuszać stan podczas bootowania.

GPIO15

GPIO15 także należy do pinów, przy których warto zachować ostrożność. Może być używany, ale w projektach, które mają startować niezawodnie, lepiej najpierw sięgnąć po mniej problematyczne GPIO.

Strapping pins w ESP32

Strapping pins to piny, których stan jest próbkowany podczas resetu lub startu układu. Na podstawie tych stanów ESP32 wybiera określone ustawienia startowe.

Dokumentacja Espressif wskazuje, że dla ESP32 do pinów strapping należą między innymi MTDI, GPIO0, GPIO2, MTDO i GPIO5, a wartości tych pinów są próbkowane podczas resetu i mogą być później odczytane programowo.

Dlaczego strapping pins są ważne?

Jeśli do pinu strapping podłączysz element, który wymusza zły stan logiczny podczas resetu, ESP32 może:

  • nie uruchomić programu,
  • wejść w tryb bootloadera,
  • mieć problem z pamięcią flash,
  • zachowywać się inaczej po resecie niż po normalnej pracy,
  • działać tylko wtedy, gdy odłączysz moduł zewnętrzny.

To częsty problem przy przekaźnikach, modułach z rezystorami pull-up lub pull-down, tranzystorach, przyciskach i czujnikach podłączonych bez sprawdzenia pinoutu.

Czy można używać strapping pins?

Tak, ale z ostrożnością. Strapping pins po zakończeniu resetu mogą działać jako zwykłe GPIO, jednak trzeba zadbać, aby podczas startu miały właściwy stan. Oficjalna dokumentacja ESP32 Series Datasheet opisuje, że wartości pinów strapping są dostępne w trakcie działania układu, a po resecie piny mogą być używane jako zwykłe IO.

W praktyce dla początkujących najlepsza zasada brzmi: jeśli masz wolne inne GPIO, nie zaczynaj projektu od pinów strapping.

ESP32 pinout dla ADC

ESP32 ma wejścia analogowe, które pozwalają mierzyć napięcie. To jedna z największych zalet ESP32 w porównaniu z prostszymi mikrokontrolerami, ponieważ liczba kanałów ADC jest duża.

ADC1 i ADC2

W ESP32 występują dwie grupy ADC:

  • ADC1,
  • ADC2.

To rozróżnienie jest bardzo ważne, szczególnie jeśli korzystasz z Wi-Fi. W praktyce kanały ADC2 mogą sprawiać problemy, gdy aktywne jest Wi-Fi, ponieważ zasoby ADC2 są współdzielone z funkcjami radiowymi. Dlatego do projektów z Wi-Fi często najlepiej wybierać piny ADC1.

Praktyczne piny ADC1

Do wygodnych wejść analogowych ADC1 należą zwykle:

  • GPIO32,
  • GPIO33,
  • GPIO34,
  • GPIO35,
  • GPIO36,
  • GPIO39.

Warto pamiętać, że GPIO34–GPIO39 są tylko wejściowe, więc świetnie nadają się do pomiarów analogowych, ale nie do sterowania wyjściami.

Do czego używać ADC w ESP32?

ADC można wykorzystać do:

  • odczytu potencjometru,
  • pomiaru światła przez fotorezystor,
  • odczytu czujnika wilgotności gleby,
  • pomiaru napięcia akumulatora przez dzielnik,
  • prostych czujników analogowych,
  • paneli sterowania z gałkami,
  • detekcji poziomu sygnału.

O czym pamiętać przy ADC?

Odczyty analogowe w ESP32 mogą wymagać kalibracji i filtracji programowej. Jeśli projekt wymaga wysokiej dokładności pomiaru, trzeba starannie zaprojektować układ wejściowy, używać stabilnego zasilania i uśredniać pomiary.

ESP32 pinout dla DAC

Klasyczny ESP32 ma dwa piny DAC:

  • GPIO25,
  • GPIO26.

DAC pozwala generować napięcie analogowe, choć nie należy traktować go jak profesjonalnego wyjścia audio wysokiej jakości. Jest jednak przydatny w wielu projektach edukacyjnych i eksperymentalnych.

Zastosowania DAC

Wyjścia DAC można wykorzystać do:

  • generowania prostych przebiegów,
  • sterowania napięciem odniesienia,
  • prostych efektów audio,
  • testowania układów analogowych,
  • symulowania sygnału z czujnika.

DAC a PWM

W wielu projektach zamiast DAC używa się PWM, czyli modulacji szerokości impulsu. PWM nie generuje prawdziwego napięcia analogowego, ale po filtracji może dawać podobny efekt. DAC jest wygodny, gdy potrzebujesz rzeczywistego poziomu napięcia, a PWM wtedy, gdy sterujesz jasnością LED, prędkością silnika lub prostym sygnałem mocy.

ESP32 pinout dla PWM

ESP32 bardzo dobrze radzi sobie z PWM. Można go używać do sterowania jasnością diod LED, serwomechanizmami, silnikami i innymi elementami.

Które piny obsługują PWM?

W ESP32 sygnał PWM można przypisać do wielu pinów wyjściowych. Nie używa się jednak pinów wejściowych-only, takich jak GPIO34–GPIO39. Nie należy też używać GPIO6–GPIO11 zajętych przez pamięć flash.

Najczęściej wygodne piny PWM to:

  • GPIO13,
  • GPIO14,
  • GPIO16,
  • GPIO17,
  • GPIO18,
  • GPIO19,
  • GPIO21,
  • GPIO22,
  • GPIO23,
  • GPIO25,
  • GPIO26,
  • GPIO27,
  • GPIO32,
  • GPIO33.

PWM do LED

PWM pozwala płynnie regulować jasność diody. Zamiast tylko włączać i wyłączać LED, ESP32 szybko przełącza stan pinu, zmieniając wypełnienie sygnału.

PWM do silników

Do sterowania silnikiem przez PWM nie należy podłączać silnika bezpośrednio do GPIO. Potrzebny jest tranzystor, mostek H albo sterownik silnika. GPIO ESP32 podaje sygnał sterujący, ale nie zasila silnika bezpośrednio.

ESP32 pinout dla I2C

I2C to bardzo popularna magistrala do czujników i wyświetlaczy. W projektach z ESP32 często używa się jej do modułów OLED, czujników BME280, BMP280, SHT31, MPU6050, ekspanderów portów i wielu innych układów.

Domyślne piny I2C

W wielu przykładach dla ESP32 przyjmuje się:

  • GPIO21 jako SDA,
  • GPIO22 jako SCL.

To bardzo wygodny standard w ekosystemie ESP32, choć dzięki elastyczności ESP32 można skonfigurować I2C także na innych pinach.

Dlaczego I2C jest wygodne?

I2C używa tylko dwóch linii sygnałowych:

  • SDA – dane,
  • SCL – zegar.

Do jednej magistrali można podłączyć wiele urządzeń, o ile mają różne adresy. To sprawia, że I2C jest świetne do projektów z wieloma czujnikami.

Pull-up na I2C

Linie I2C zwykle wymagają rezystorów podciągających do 3,3 V. Wiele modułów ma takie rezystory już wbudowane, ale nie zawsze. Jeśli magistrala działa niestabilnie, warto sprawdzić podciąganie, długość przewodów i jakość połączeń.

ESP32 pinout dla SPI

SPI to szybka magistrala używana między innymi do wyświetlaczy, kart SD, czytników RFID i niektórych czujników.

Typowe piny SPI w ESP32

W praktycznych projektach często spotyka się następujące przypisanie VSPI:

  • GPIO18 – SCK,
  • GPIO19 – MISO,
  • GPIO23 – MOSI,
  • GPIO5 – CS.

GPIO5 bywa używany jako CS, ale trzeba pamiętać, że jest też pinem strapping. Jeśli projekt ma problemy ze startem, warto rozważyć inny pin CS.

SPI a wiele urządzeń

Na jednej magistrali SPI można mieć kilka urządzeń, jeśli każde ma osobną linię CS. Linie SCK, MISO i MOSI są wspólne, a CS wybiera aktywne urządzenie.

Karta SD i wyświetlacze

Przy kartach SD i wyświetlaczach SPI trzeba uważać na jakość przewodów, długość połączeń i poziomy logiczne. Długie przewody mogą powodować zakłócenia, szczególnie przy wyższych prędkościach.

ESP32 pinout dla UART

UART służy do komunikacji szeregowej. ESP32 ma kilka interfejsów UART, a najważniejszy dla początkujących jest UART0, używany zwykle do komunikacji przez USB i wgrywania programu.

UART0

UART0 wykorzystuje zwykle:

  • GPIO1 – TX0,
  • GPIO3 – RX0.

Te piny są związane z komunikacją przez USB-UART. Można ich używać, ale trzeba uważać, ponieważ są wykorzystywane do programowania i debugowania. Jeśli podłączysz do nich zewnętrzny moduł, może on przeszkadzać w wgrywaniu programu.

UART do modułów zewnętrznych

Do komunikacji z modułami GPS, GSM, czytnikami kodów, innymi mikrokontrolerami lub czujnikami szeregowymi lepiej użyć innego UART i przypisać go do wygodnych pinów, na przykład GPIO16 i GPIO17.

ESP32 pinout dla pinów dotykowych

ESP32 obsługuje czujniki dotykowe na wybranych pinach. To pozwala tworzyć przyciski pojemnościowe, panele dotykowe i proste interfejsy bez mechanicznych elementów.

Przykładowe zastosowania touch pins

Piny dotykowe można wykorzystać do:

  • przycisku włączania,
  • panelu sterowania LED,
  • prostego zamka dotykowego,
  • sterowania jasnością,
  • interaktywnych instalacji,
  • urządzeń w obudowie bez widocznych przycisków.

O czym pamiętać?

Czujniki dotykowe są wrażliwe na warunki środowiskowe, obudowę, wilgotność, zakłócenia i sposób wykonania elektrody. W praktycznych projektach warto testować progi wykrywania i dodać filtrację programową.

ESP32 pinout dla przycisków

Przycisk można podłączyć do wielu GPIO, ale najlepiej wybierać piny bezpieczne, które nie wpływają na start układu.

Najprostsze podłączenie przycisku

Typowe rozwiązanie to:

  • jedna strona przycisku do GND,
  • druga strona do GPIO,
  • w programie włączony wewnętrzny pull-up.

Przykład:

const int buttonPin = 27;

void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(115200);
}

void loop() {
if (digitalRead(buttonPin) == LOW) {
Serial.println(\"Przycisk nacisniety\");
}
}

W takim układzie naciśnięcie przycisku daje stan LOW.

Debouncing

Mechaniczny przycisk może generować drgania styków, czyli szybkie, niepożądane przełączenia przy naciśnięciu. W prostych projektach można dodać krótkie opóźnienie, ale w lepszych rozwiązaniach stosuje się programowy debouncing bez blokowania programu.

ESP32 pinout dla diod LED

Diodę LED można podłączyć do wielu GPIO wyjściowych, ale nie do pinów wejściowych-only. Zawsze należy użyć rezystora ograniczającego prąd.

Przykład podłączenia LED

Dioda LED może być podłączona:

  • anodą przez rezystor do GPIO,
  • katodą do GND.

Przykładowy kod:

const int ledPin = 26;

void setup() {
pinMode(ledPin, OUTPUT);
}

void loop() {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}

Wbudowana dioda LED

Niektóre płytki ESP32 mają wbudowaną diodę LED, często podłączoną do GPIO2, ale nie jest to uniwersalna reguła. Zawsze warto sprawdzić opis konkretnej płytki.

ESP32 pinout dla przekaźników

Przekaźniki są popularne w projektach automatyki, ale wymagają szczególnej ostrożności. ESP32 nie powinien bezpośrednio zasilać cewki przekaźnika. Najczęściej używa się gotowego modułu przekaźnikowego albo tranzystora z diodą zabezpieczającą.

Jaki pin wybrać do przekaźnika?

Do sterowania przekaźnikiem lepiej wybierać piny, które nie zmieniają krytycznie stanu podczas bootowania. Dobre wybory to często:

  • GPIO16,
  • GPIO17,
  • GPIO18,
  • GPIO19,
  • GPIO21,
  • GPIO22,
  • GPIO23,
  • GPIO25,
  • GPIO26,
  • GPIO27,
  • GPIO32,
  • GPIO33.

Lepiej unikać na początek GPIO0, GPIO2, GPIO12 i GPIO15, ponieważ mogą powodować problemy podczas startu albo niepożądane załączenia.

Przekaźnik aktywny stanem LOW

Wiele modułów przekaźników jest aktywowanych stanem LOW. To znaczy, że przekaźnik włącza się wtedy, gdy pin ma stan niski. W takim przypadku podczas resetu ESP32 może dojść do krótkiego, niechcianego załączenia. W projektach sterujących realnymi urządzeniami trzeba to uwzględnić.

ESP32 pinout dla serwomechanizmów i silników

ESP32 może generować sygnały sterujące dla serw i silników, ale nie powinien zasilać ich bezpośrednio z GPIO.

Serwomechanizm

Serwo potrzebuje:

  • zasilania,
  • masy,
  • sygnału sterującego.

Sygnał można podać z pinu PWM, ale zasilanie serwa powinno pochodzić z odpowiedniego źródła. Masa zasilacza serwa i masa ESP32 muszą być wspólne.

Silnik DC

Silnik DC wymaga sterownika, na przykład mostka H albo tranzystora. Bezpośrednie podłączenie silnika do GPIO może uszkodzić ESP32.

Silnik krokowy

Silnik krokowy wymaga sterownika, na przykład popularnego modułu A4988, DRV8825 lub ULN2003 w przypadku małych silników 28BYJ-48. ESP32 podaje tylko sygnały sterujące.

ESP32 pinout a zasilanie

Zasilanie jest równie ważne jak dobór pinów. Wiele problemów z ESP32 wynika nie z błędnego kodu, lecz ze spadków napięcia, słabego kabla USB, niewydolnego stabilizatora lub przeciążenia linii 3,3 V.

Zasilanie przez USB

Podczas nauki najczęściej zasila się ESP32 przez USB. To wygodne, ale nie zawsze wystarczające dla modułów pobierających większy prąd, takich jak przekaźniki, silniki, taśmy LED czy modemy.

Pin 3V3

Pin 3V3 może zasilać małe czujniki, ale nie należy przeciążać stabilizatora na płytce. Jeśli podłączasz wiele modułów, wyświetlacz, kartę SD albo czujniki o większym poborze prądu, sprawdź możliwości konkretnej płytki.

Pin VIN lub 5V

Na wielu płytkach pin VIN lub 5V jest powiązany z zasilaniem USB albo wejściem stabilizatora. Dokładne działanie zależy od modelu płytki, dlatego nie należy zakładać, że każda płytka ESP32 działa identycznie.

Wspólna masa

Jeśli używasz zewnętrznego zasilacza dla przekaźnika, silnika, taśmy LED lub serwa, pamiętaj o wspólnej masie. Bez wspólnego GND sygnał sterujący może nie mieć poprawnego punktu odniesienia.

ESP32 pinout a Wi-Fi i Bluetooth

Jednym z głównych powodów wyboru ESP32 jest wbudowane Wi-Fi i Bluetooth. To ogromna zaleta, ale ma też konsekwencje projektowe.

ADC2 i Wi-Fi

W projektach korzystających z Wi-Fi lepiej wybierać ADC1 do pomiarów analogowych. ADC2 może być niedostępne lub problematyczne podczas pracy Wi-Fi, dlatego czujniki analogowe warto podłączać do GPIO32–GPIO39, jeśli to możliwe.

Zasilanie przy Wi-Fi

Podczas transmisji Wi-Fi ESP32 może pobierać chwilowo większy prąd. Jeśli zasilanie jest słabe, płytka może się resetować. Objawy to między innymi niestabilna praca, błędy połączenia, losowe restarty i komunikaty brownout.

Antena i ułożenie przewodów

Nie prowadź przewodów, masywnych elementów metalowych ani ekranów bezpośrednio przy antenie modułu ESP32. Może to pogorszyć zasięg Wi-Fi i Bluetooth.

Praktyczna tabela ESP32 pinout

Poniższa tabela ma charakter praktyczny i dotyczy typowych płytek z klasycznym ESP32, zwłaszcza opartych o moduły ESP32-WROOM. Zawsze sprawdzaj dokumentację swojej płytki.

GPIOTypowe zastosowanieUwagi praktyczneGPIO0przycisk, sygnał ostrożniepin boot/strapping, używany przy programowaniuGPIO1TX0komunikacja USB-UART, debugGPIO2LED, ostrożniepin strapping, czasem LED na płytceGPIO3RX0komunikacja USB-UARTGPIO4GPIO, touch, ADC2możliwy do użycia, uważać w projektach z Wi-Fi przy ADC2GPIO5SPI CS, GPIOpin strapping, używać świadomieGPIO6–11pamięć flashzwykle nie używaćGPIO12GPIO, ADC2, touchostrożnie, może wpływać na startGPIO13GPIO, ADC2, touchczęsto dobry pin, ale ADC2 problematyczne z Wi-FiGPIO14GPIO, ADC2, touchczęsto dobry pinGPIO15GPIO, ADC2, touchostrożnie przy bootowaniuGPIO16GPIO, UARTdobry pin ogólnego zastosowaniaGPIO17GPIO, UARTdobry pin ogólnego zastosowaniaGPIO18SPI SCK, GPIOdobry do SPIGPIO19SPI MISO, GPIOdobry do SPIGPIO21I2C SDA, GPIOpopularny pin I2CGPIO22I2C SCL, GPIOpopularny pin I2CGPIO23SPI MOSI, GPIOdobry pin ogólnego zastosowaniaGPIO25DAC, GPIO, ADC2dobry pin, ma DACGPIO26DAC, GPIO, ADC2dobry pin, ma DACGPIO27GPIO, ADC2, touchczęsto dobry pinGPIO32GPIO, ADC1, touchdobry do analogów i GPIOGPIO33GPIO, ADC1, touchdobry do analogów i GPIOGPIO34ADC1, input onlytylko wejścieGPIO35ADC1, input onlytylko wejścieGPIO36ADC1, input onlytylko wejście, często VPGPIO39ADC1, input onlytylko wejście, często VN

Najlepsze piny ESP32 do popularnych zastosowań

Najlepsze piny do LED

Do diod LED możesz użyć na przykład:

  • GPIO16,
  • GPIO17,
  • GPIO18,
  • GPIO19,
  • GPIO21,
  • GPIO22,
  • GPIO23,
  • GPIO25,
  • GPIO26,
  • GPIO27,
  • GPIO32,
  • GPIO33.

Unikaj GPIO34–GPIO39, ponieważ są tylko wejściowe.

Najlepsze piny do przycisków

Do przycisków dobrze nadają się:

  • GPIO13,
  • GPIO14,
  • GPIO16,
  • GPIO17,
  • GPIO18,
  • GPIO19,
  • GPIO21,
  • GPIO22,
  • GPIO23,
  • GPIO25,
  • GPIO26,
  • GPIO27,
  • GPIO32,
  • GPIO33,
  • GPIO34–GPIO39, jeśli potrzebujesz tylko wejścia.

Najlepsze piny do czujników analogowych

Do analogowych czujników, szczególnie w projektach z Wi-Fi, wybieraj przede wszystkim ADC1:

  • GPIO32,
  • GPIO33,
  • GPIO34,
  • GPIO35,
  • GPIO36,
  • GPIO39.

Najlepsze piny do I2C

Najczęściej:

  • GPIO21 – SDA,
  • GPIO22 – SCL.

Najlepsze piny do SPI

Często używany zestaw:

  • GPIO18 – SCK,
  • GPIO19 – MISO,
  • GPIO23 – MOSI,
  • GPIO5 lub inny wolny GPIO – CS.

Jeżeli GPIO5 powoduje problemy przy starcie, wybierz inny pin CS, na przykład GPIO16, GPIO17, GPIO21, GPIO22, GPIO25, GPIO26 lub GPIO27.

Przykład kodu: test pinów GPIO

Poniższy program pozwala przetestować diodę podłączoną do wybranego pinu.

const int ledPin = 23;

void setup() {
pinMode(ledPin, OUTPUT);
}

void loop() {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}

Jeśli dioda nie miga, sprawdź:

  • czy wybrany pin nie jest wejściowy-only,
  • czy dioda ma rezystor,
  • czy polaryzacja LED jest poprawna,
  • czy masa jest wspólna,
  • czy w kodzie używasz numeru GPIO, a nie fizycznego numeru pinu.

Przykład kodu: odczyt analogowy z ADC1

const int analogPin = 34;

void setup() {
Serial.begin(115200);
}

void loop() {
int value = analogRead(analogPin);
Serial.println(value);
delay(200);
}

GPIO34 jest dobrym wyborem do odczytu analogowego, ale pamiętaj, że jest tylko wejściem. Nie użyjesz go do sterowania LED, przekaźnikiem czy sygnałem PWM.

Przykład kodu: I2C na ESP32

#include 

const int sdaPin = 21;
const int sclPin = 22;

void setup() {
Serial.begin(115200);
Wire.begin(sdaPin, sclPin);
Serial.println(\"I2C uruchomione\");
}

void loop() {
}

To typowa konfiguracja dla wielu projektów z czujnikami i wyświetlaczami OLED.

Przykład kodu: PWM na ESP32

W nowszych środowiskach Arduino dla ESP32 sposób konfiguracji PWM może zależeć od wersji core, ale ogólna idea pozostaje taka sama: wybierasz pin, częstotliwość, rozdzielczość i wartość wypełnienia.

Przykład koncepcyjny:

const int ledPin = 25;
const int pwmChannel = 0;
const int freq = 5000;
const int resolution = 8;

void setup() {
ledcSetup(pwmChannel, freq, resolution);
ledcAttachPin(ledPin, pwmChannel);
}

void loop() {
for (int duty = 0; duty <= 255; duty++) {
ledcWrite(pwmChannel, duty);
delay(10);
}

for (int duty = 255; duty >= 0; duty--) {
ledcWrite(pwmChannel, duty);
delay(10);
}
}

Jeśli korzystasz z nowszej wersji pakietu ESP32 dla Arduino i kompilator zgłasza błąd, sprawdź aktualną składnię funkcji LEDC dla swojej wersji środowiska.

Najczęstsze problemy z ESP32 pinout

Płytka nie startuje po podłączeniu modułu

Najczęstsza przyczyna to użycie pinu strapping w sposób, który wymusza zły stan podczas resetu. Sprawdź GPIO0, GPIO2, GPIO5, GPIO12 i GPIO15.

Program nie chce się wgrać

Jeśli używasz GPIO1 lub GPIO3 do zewnętrznego modułu, może on zakłócać komunikację UART0. Odłącz moduł na czas programowania albo użyj innych pinów.

Przekaźnik załącza się po resecie

Niektóre piny zmieniają stan podczas startu. Użyj innego GPIO, dodaj odpowiedni układ tranzystorowy albo wybierz moduł, który nie aktywuje się niechcianie przy bootowaniu.

Czujnik analogowy działa bez Wi-Fi, ale nie działa z Wi-Fi

Prawdopodobnie używasz ADC2. Przenieś czujnik na pin ADC1, na przykład GPIO32, GPIO33, GPIO34, GPIO35, GPIO36 lub GPIO39.

Dioda nie świeci na GPIO34

GPIO34 jest tylko wejściem. Wybierz pin wyjściowy, na przykład GPIO23, GPIO25, GPIO26 albo GPIO27.

Płytka resetuje się przy włączeniu Wi-Fi

To może być problem z zasilaniem. ESP32 podczas transmisji radiowej potrzebuje stabilnego źródła zasilania. Sprawdź kabel USB, zasilacz, stabilizator i pobór prądu podłączonych modułów.

Dobre praktyki projektowania z ESP32 pinout

Zaczynaj od bezpiecznych pinów

Do pierwszych projektów wybieraj GPIO, które nie są pinami strapping, nie są wejściami-only i nie są używane przez pamięć flash.

Dobry zestaw startowy to:

  • GPIO16,
  • GPIO17,
  • GPIO18,
  • GPIO19,
  • GPIO21,
  • GPIO22,
  • GPIO23,
  • GPIO25,
  • GPIO26,
  • GPIO27,
  • GPIO32,
  • GPIO33.

Nie używaj GPIO6–GPIO11

W typowych modułach ESP32-WROOM są one połączone z pamięcią flash. Ich użycie może uniemożliwić działanie układu.

Uważaj na logikę 5 V

ESP32 pracuje na logice 3,3 V. Przy modułach 5 V stosuj konwertery poziomów logicznych albo moduły zgodne z 3,3 V.

Projektuj z myślą o starcie układu

Nie wystarczy, że projekt działa po uruchomieniu programu. Musi jeszcze poprawnie przechodzić reset i start z zasilania. Dlatego szczególnie uważaj na elementy podłączone do pinów strapping.

Testuj każdy moduł osobno

Jeśli budujesz większy projekt, nie podłączaj wszystkiego naraz. Najpierw sprawdź czujnik, potem wyświetlacz, potem przekaźnik, potem komunikację. Łatwiej znaleźć błąd.

Dokumentuj połączenia

Przy ESP32 bardzo łatwo pomylić piny. Warto zapisywać, który moduł jest podłączony do którego GPIO. W większych projektach przygotuj prostą tabelę połączeń.

ESP32 pinout w projektach IoT

ESP32 jest bardzo popularny w projektach IoT, ponieważ ma Wi-Fi i Bluetooth. Pinout w takich projektach trzeba planować szczególnie ostrożnie.

Czujniki środowiskowe

Do czujników I2C, takich jak BME280 czy SHT31, wygodnie używać GPIO21 i GPIO22. Do czujników analogowych w projektach z Wi-Fi najlepiej wybierać ADC1.

Sterowanie przekaźnikami

Przekaźniki najlepiej podłączać do bezpiecznych GPIO, unikając pinów bootujących. Warto też sprawdzić, czy moduł przekaźnika jest zgodny z logiką 3,3 V.

Wyświetlacze OLED

Małe OLED-y I2C zwykle działają dobrze z GPIO21 i GPIO22. Jeśli ekran nie działa, sprawdź adres I2C, zasilanie, masę i rezystory pull-up.

Karta SD

Karta SD może korzystać z SPI. Trzeba zadbać o poprawne piny, krótkie przewody i stabilne zasilanie, ponieważ karty SD bywają wrażliwe na jakość połączeń.

ESP32 pinout a deep sleep

ESP32 często wykorzystuje się w urządzeniach bateryjnych. W takich projektach znaczenie mają piny, które mogą wybudzać układ ze snu.

Wake-up pins

Nie wszystkie piny mają takie same możliwości wybudzania. W projektach bateryjnych trzeba sprawdzić, które GPIO obsługują wybudzanie z deep sleep w wybranym trybie.

Czujniki zasilane tylko podczas pomiaru

Aby oszczędzać energię, można zasilać czujnik tylko na czas pomiaru. Wtedy trzeba dobrać pin sterujący tranzystorem lub układem zasilania, pamiętając o dopuszczalnym prądzie GPIO.

Pull-up i pull-down a pobór prądu

Rezystory podciągające i wymuszone stany logiczne mogą zwiększać pobór prądu. W urządzeniach bateryjnych trzeba zwracać uwagę nie tylko na kod, ale też na cały schemat.

ESP32 pinout a projektowanie płytki PCB

Jeśli prototyp działa na płytce stykowej, kolejnym krokiem może być własna PCB. Wtedy znajomość ESP32 pinout staje się jeszcze ważniejsza.

Zostaw dostęp do EN i GPIO0

Własna płytka powinna umożliwiać reset i programowanie. Warto przewidzieć przycisk EN, przycisk BOOT lub automatyczny układ programowania.

Nie prowadź ścieżek pod anteną

Jeśli używasz modułu ESP32-WROOM z anteną PCB, zachowaj odpowiedni obszar wolny od miedzi i elementów przy antenie. To ważne dla jakości Wi-Fi i Bluetooth.

Zapewnij stabilne zasilanie

ESP32 potrzebuje dobrego zasilania 3,3 V. Stabilizator powinien mieć odpowiednią wydajność prądową, a przy module powinny znaleźć się kondensatory filtrujące.

Opisz GPIO na PCB

Na płytce warto opisać nie tylko fizyczne złącza, ale też numery GPIO. Ułatwia to uruchamianie, serwis i dalszy rozwój projektu.

ESP32 pinout a Arduino IDE

W Arduino IDE dla ESP32 w kodzie używa się numerów GPIO. To bardzo wygodne, ale wymaga zgodności z opisem płytki.

Przykład definicji pinów

const int relayPin = 26;
const int buttonPin = 27;
const int sensorPin = 34;

Taki zapis oznacza GPIO26, GPIO27 i GPIO34, a nie fizyczne miejsca na listwie.

Board selection

W Arduino IDE trzeba wybrać odpowiednią płytkę. Dla wielu popularnych modułów działa wybór „ESP32 Dev Module”, ale konkretne płytki mogą wymagać innego ustawienia.

Monitor portu szeregowego

Do debugowania używaj Serial.begin(115200); i monitora portu szeregowego. To najprostszy sposób sprawdzenia, czy odczyty z pinów są zgodne z oczekiwaniami.

ESP32 pinout a MicroPython

ESP32 można programować nie tylko w Arduino IDE, ale także w MicroPythonie. Pinout nadal ma takie same ograniczenia sprzętowe.

Przykład migania diodą w MicroPythonie:

from machine import Pin
from time import sleep

led = Pin(23, Pin.OUT)

while True:
led.value(1)
sleep(0.5)
led.value(0)
sleep(0.5)

Jeśli używasz MicroPythona, również unikaj GPIO6–GPIO11, uważaj na piny strapping i pamiętaj, że GPIO34–GPIO39 są tylko wejściowe.

ESP32 pinout a ESP32-S2, ESP32-S3 i ESP32-C3

Warto podkreślić, że hasło ESP32 pinout bywa używane ogólnie, ale różne rodziny ESP32 mają różne układy pinów. Klasyczny ESP32, ESP32-S2, ESP32-S3, ESP32-C3 i inne warianty nie są identyczne.

Klasyczny ESP32

Ten artykuł koncentruje się głównie na klasycznym ESP32, szczególnie popularnych płytkach z modułami ESP32-WROOM.

ESP32-S3

ESP32-S3 ma inne możliwości i inne przypisania pinów. Często wybiera się go do projektów z USB, AI na brzegu sieci, kamerami i bardziej rozbudowanymi interfejsami.

ESP32-C3

ESP32-C3 jest oparty na rdzeniu RISC-V i również ma inny pinout. Nie należy przenosić schematu z klasycznego ESP32 bez sprawdzenia dokumentacji.

Najważniejsza zasada: zawsze sprawdzaj pinout dokładnie tej płytki, którą masz na biurku.

Jak czytać schemat ESP32 pinout?

Grafiki pinout bywają przeładowane informacjami. Najlepiej czytać je warstwowo.

Najpierw zasilanie

Znajdź:

  • 3V3,
  • GND,
  • VIN lub 5V,
  • EN.

Bez poprawnego zasilania reszta nie ma znaczenia.

Potem bezpieczne GPIO

Zaznacz piny, których możesz użyć jako zwykłych wejść i wyjść. Unikaj na początku pinów z funkcjami bootowania.

Następnie funkcje specjalne

Sprawdź:

  • ADC,
  • DAC,
  • touch,
  • I2C,
  • SPI,
  • UART,
  • PWM.

Na końcu ograniczenia

Zwróć uwagę na:

  • input only,
  • flash,
  • strapping,
  • boot,
  • TX/RX,
  • piny używane przez elementy na płytce.

Krótka lista zasad ESP32 pinout dla początkujących

Jeśli chcesz szybko rozpocząć projekt, zapamiętaj te zasady:

  • Nie używaj GPIO6–GPIO11.
  • GPIO34–GPIO39 są tylko wejściowe.
  • Do I2C najczęściej używaj GPIO21 i GPIO22.
  • Do SPI często używa się GPIO18, GPIO19 i GPIO23.
  • Do analogów z Wi-Fi wybieraj ADC1: GPIO32–GPIO39.
  • Uważaj na GPIO0, GPIO2, GPIO5, GPIO12 i GPIO15.
  • ESP32 używa logiki 3,3 V.
  • Silników i przekaźników nie zasilaj bezpośrednio z GPIO.
  • Zawsze sprawdzaj pinout konkretnej płytki.

FAQ – najczęstsze pytania o ESP32 pinout

Co oznacza ESP32 pinout?

ESP32 pinout oznacza opis wyprowadzeń płytki lub modułu ESP32. Pokazuje, które piny służą do zasilania, masy, GPIO, ADC, DAC, I2C, SPI, UART, PWM, touch i funkcji specjalnych.

Których pinów ESP32 najlepiej nie używać?

W typowych modułach ESP32-WROOM nie należy używać GPIO6–GPIO11, ponieważ są połączone z pamięcią flash. Ostrożnie należy też traktować GPIO0, GPIO2, GPIO5, GPIO12 i GPIO15, ponieważ mogą wpływać na start układu.

Które piny ESP32 są tylko wejściowe?

GPIO34, GPIO35, GPIO36 i GPIO39 są tylko wejściowe. Można ich używać do odczytu sygnałów, w tym analogowych, ale nie można nimi sterować diodą LED, przekaźnikiem ani innym wyjściem.

Jakie piny ESP32 są najlepsze do I2C?

Najczęściej używa się GPIO21 jako SDA i GPIO22 jako SCL. To popularna konfiguracja dla wyświetlaczy OLED i wielu czujników I2C.

Jakie piny ESP32 są najlepsze do SPI?

Często używany zestaw SPI to GPIO18 jako SCK, GPIO19 jako MISO i GPIO23 jako MOSI. Pin CS można dobrać osobno, choć często spotyka się GPIO5.

Czy ESP32 obsługuje sygnały 5 V?

ESP32 pracuje na logice 3,3 V. Do sygnałów 5 V należy stosować konwertery poziomów logicznych lub moduły zgodne z 3,3 V.

Dlaczego ESP32 nie startuje po podłączeniu czujnika?

Możliwe, że czujnik lub moduł wymusza niewłaściwy stan na pinie strapping podczas resetu. Sprawdź szczególnie GPIO0, GPIO2, GPIO5, GPIO12 i GPIO15.

Czy GPIO34 nadaje się do LED?

Nie. GPIO34 jest tylko wejściem. Do LED wybierz pin wyjściowy, na przykład GPIO23, GPIO25, GPIO26, GPIO27 albo GPIO32.

Czy można zmienić piny I2C w ESP32?

Tak. ESP32 pozwala przypisywać I2C do różnych pinów, ale najczęściej stosuje się GPIO21 i GPIO22, ponieważ wiele przykładów i modułów zakłada właśnie taką konfigurację.

Czy można używać GPIO1 i GPIO3?

Można, ale są to piny UART0 używane do komunikacji przez USB-UART, programowania i debugowania. Podłączony do nich moduł może utrudniać wgrywanie programu.

Jakie piny wybrać do projektu z Wi-Fi i czujnikiem analogowym?

Najlepiej wybierać piny ADC1, czyli GPIO32, GPIO33, GPIO34, GPIO35, GPIO36 lub GPIO39. Pozwala to uniknąć typowych problemów związanych z ADC2 podczas pracy Wi-Fi.

Czy każdy ESP32 ma taki sam pinout?

Nie. Różne płytki ESP32 i różne warianty układów, takie jak ESP32, ESP32-S2, ESP32-S3 czy ESP32-C3, mogą mieć inne rozmieszczenie i funkcje pinów. Zawsze trzeba sprawdzić dokumentację konkretnej płytki.