2.4 Porty GPIO
Mikrokontroléry sú vybavené vstupno-výstupnými portami (GPIO), vyvedenými do fyzických pinov. Mikrokontroléry ESP32 pracujú s napätím 3,3 V.
Veľmi dôležitým limitom je maximálny prúd - nesmieme pripustiť, aby prúd pretekajúci jedným pinom presiahol povolené maximum (v prípade ESP32 sa odporúča neprekračovať 20 mA pre spoľahlivú prevádzku, absolútny limit je 40 mA), inak riskujeme zničenie mikrokontroléra! Pri používaní pinu ako výstupu je preto nutné použiť sériový ochranný rezistor s odporom aspoň 100 až 200 Ω . Samozrejme, chrániť treba aj pripojené zariadenie, ktoré môže mať nižší limit prúdu (napríklad bežná LED znesie cca 20 mA).
Hoci pri používaní pinu v úlohe vstupu nie je toto opatrenie teoreticky potrebné (vstupný port má veľký vnútorný odpor), z praktického hľadiska sa jeho použitie odporúča - pre prípad, že by sa vstupný port nechcene softvérovo prepol do režimu výstupu. Znamená to teda, že aj tlačidlo by malo byť vybavené ochranným rezistorom (cca 1 až 10 kΩ).
Mikrokontrolér ESP32 má na všetkých portoch konfigurovateľný obmedzovač prúdu (pozri kapitolu „2.5 Ovládanie digitálneho výstupu“), v predvolenom stave na úrovni cca 40 mA. Napriek tomu je vhodné použiť primeraný externý rezistor, aby zbytočne nepretekal príliš vysoký prúd a nemíňal energiu z batérie, ak to aplikácia nevyžaduje.
Prehľad dostupných GPIO portov
Klasický ESP32
Porty GPIO sú v prípade klasického čipu ESP32 označené číslami od 0 po 39, vynechané sú GPIO 20, 24, 28, 29, 30 a 31, teda teoreticky je k dispozícii 34 portov. Pre vstup a výstup sú na vývojových doskách využiteľné takmer všetky porty okrem dôležitých výnimiek:
- GPIO 1 (TX) a 3 (RX): Sú využívané pre sériové rozhranie, teda na komunikáciu s PC napríklad cez Thonny. Ich použitie pre iné účely znemožní komunikáciu.
- GPIO 6 až 11: Sú prepojené s integrovanou flash pamäťou, často sa používajú aj GPIO 37 a 38.
- GPIO 34 až 39: Sú len vstupné, ale nemajú interný pull-up / pull-down rezistor (pozri kapitolu „2.8 Digitálny vstup“). Sú vhodné pre analógové snímače alebo jednoduché vstupy, kde sa vyžaduje externý rezistor.
- V prípade externej operačnej pamäte (SPIRAM) sa pre ňu využívajú GPIO 16 a 17.
K dispozícii teda zostáva 26 portov, z toho 6 len pre vstup.
Pri zapájaní vlastných obvodov je dôležité vyhnúť sa použitiu niektorých pinov, ktoré ovplyvňujú režim spúšťania ESP32 - označujú sa ako „strapping pins“:
- GPIO 0: Ak je pri štarte v stave 0, čip prejde do režimu nahrávania firmvéru. Preto sa na doskách používa pre tlačidlo BOOT.
- GPIO 2: Pri štarte by nemal byť v stave 1, inak by nefungoval režim nahrávania firmvéru. Často je k nemu pripojená interná LED.
- GPIO 12: Pri štarte nesmie byť v stave 1, inak sa ESP32 pokúsi bootovať z 1,8 V flash, čo zlyhá.
- GPIO 5 a 15: Pri štarte nesmie byť v stave 0. Stav 1 zariaďujú interné pull-up rezistory, pokiaľ ich externe nestiahneme na stav 0.
Na vývojových doskách však nemusia byť vyvedené všetky GPIO z čipu. Je nutné oboznámiť sa s rozložením vyvedených pinov na konkrétnej vývojovej doske (toto rozloženie sa označuje ako „pinout“) a vyhýbať sa tým GPIO, ku ktorým sú pripojené komponenty (napríklad LED, tlačidlo, čítačka kariet a podobne):
- ESP32 DevKit v1: Táto klasická vývojová doska má 30 pinov.
- Osadená je modrá LED na GPIO 2 a tlačidlo na GPIO 0.
- K dispozícii je 23 GPIO: !2 (výstup s LED), 4, !5 (výstup), !12, 13, 14, !15, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33, 34 (vstup), 35 (vstup), 36 (vstup), 39 (vstup).
- TTGO T-Display: Má vyvedených 24 pinov.
- Osadený je IPS displej ST7789 a dve tlačidlá na GPIO 0 a 35.
- K dispozícii je 16 GPIO: !2, !12, 13, !15, 17, 21 (výstup), 22 (výstup), 25, 26, 27, 32, 33, 36 (vstup), 37 (vstup), 38 (vstup), 39 (vstup).
- ESP32 D1 Mini: Štandardne má vyvedených 16 pinov, ktoré slúžia na pripojenie modulov z modulárnej sady D1 Mini kit, no k dispozícii je aj ďalších 24 pinov, ku ktorým je možné pripojiť externé prvky.
- Osadená je modrá LED na GPIO 2.
- Dokopy je k dispozícii 24 GPIO, z toho 10 je štandardne vyvedených: !5, 16, 17, 18, 19, 21, 22, 23, 26, 36 (vstup).
- Je možné prispájkovať ďalších 14 pinov: !0, !2 (výstup s LED), 4, !12, 13, 14, !15, 25, 27, 32, 33, 34 (vstup), 35 (vstup), 39 (vstup).
- TTGO T7 (D1 Mini): Má rozmermi rovnaké prevedenie ako ESP32 D1 Mini, aj rovnako vyvedené piny, no dva sú použité pre SPIRAM.
- Osadená je zelená LED na GPIO 19.
- Dokopy je k dispozícii 22 GPIO, z toho 8 je štandardne vyvedených: !5, 18, 19 (výstup s LED), 21, 22, 23, 26, 36 (vstup).
- Je možné prispájkovať ďalších 14 pinov: !0, !2, 4, !12, 13, 14, !15, 25, 27, 32, 33, 34 (vstup), 35 (vstup), 39 (vstup).
ESP32-S3
Čip ESP32-S3 má GPIO číslované od 0 po 48, vynechané sú GPIO 22 až 25. Z tohto rozsahu sú vyhradené špecifické piny:
- GPIO 26 až 32: Sú vyhradené pre integrovanú flash pamäť (v prípade rozšírenej „octal“ flash sa používajú aj GPIO 33 až 37).
- GPIO 19 (D-) a 20 (D+): Slúžia pre natívne USB rozhranie (ak ho doska využíva).
Po odrátaní týchto pinov zostáva k dispozícii 36 portov, no niektoré z nich sa používajú pri bootovaní (ako „strapping pins“):
- GPIO 0: Ak je pri štarte v stave 0, čip prejde do režimu nahrávania firmvéru.
- GPIO 3, 45 a 46: Pri štarte nesmú byť v stave 1.
Konkrétne príklady vývojových dosiek majú vyvedené:
- LilyGO T7-S3 (D1 Mini): Má rozmermi rovnaké prevedenie ako ESP32 D1 Mini.
- Osadená je zelená LED na GPIO 17.
- Dokopy je k dispozícii 26 GPIO, z toho 12 je štandardne vyvedených: !3, 5, 8, 12 až 18, 43, 44.
- Je možné prispájkovať ďalších 14 pinov: !0 (vstup), 1, 4, 6, 7, 9, 10, 11, 21, 38, !45, !46, 47 a 48.
- LilyGO T-Relay S3: Má 30 + 14 + 6 pinov.
- Osadené je tlačidlo na GPIO 0.
- K dispozícii je 20 GPIO: !3, 4, 8 až 15, 21, 38 až 42, !45, !46, 47 a 48.
- Waveshare ESP32-S3-Relay-6CH: Má 40 pinov a „octal“ flash.
- Osadené je tlačidlo na GPIO 0, buzzer na GPIO 21, RGB LED na GPIO 38, 6× relé na GPIO 1, 2, 41, 42, !45, !46 a rozhranie RS485 na GPIO 17, 18.
- K dispozícii je 20 GPIO: !3, 4 až 16, 39, 40, 43 (TX), 44 (RX), 47 a 48.
ESP32-C3
Čip ESP32-C3 má GPIO číslované od 0 po 21, s výnimkou GPIO 11, ktorý je interný. Z tohto rozsahu sú vyhradené špecifické piny:
- GPIO 12 až 17: Sú vyhradené pre integrovanú flash pamäť.
- GPIO 18 (D-) a 19 (D+): Slúžia pre natívne USB rozhranie (ak ho doska využíva).
Po odrátaní týchto pinov zostáva k dispozícii 13 portov, no niektoré z nich sa používajú pri bootovaní (ako „strapping pins“):
- GPIO 9: Ak je pri štarte v stave 0, čip prejde do režimu nahrávania firmvéru.
- GPIO 2 a 8: Pri štarte nesmú byť v stave 0.
Konkrétne príklady vývojových dosiek majú vyvedené:
- ESP32-C3 Super Mini: Má vyvedených 16 pinov.
- Osadená je modrá LED na GPIO 8 a tlačidlo na GPIO 9.
- K dispozícii je 10 GPIO bez kolízie so systémovými funkciami: 0, 1, 3 až 7, 10, 20 a 21.
- ESP32-C3 01Space: Má vyvedených 15 pinov.
- Osadený je malý OLED displej, NeoPixel LED na GPIO 2 a tlačidlo na GPIO 9.
- K dispozícii je 8 GPIO bez kolízie: 0, 1, 3, 4, 7, 10, 20 a 21. Okrem toho 2 GPIO pre I²C zbernicu, zdieľané s displejom: 5 a 6.
V Classroom prílohe sa nachádza program na otestovanie portov - mal by odhaliť porty, ktoré boli poškodené („odpálené“) a už nefungujú.




