Aziz Bench

Pinagem do ESP32: quais pinos GPIO usar com segurança

Toque em um pino para ver o que ele pode fazer e com o que tomar cuidado. Depois liste os pinos do seu projeto: o planejador aponta pinos de strapping, GPIOs só de entrada e pinos do ADC2 que param de funcionar com o Wi-Fi.

Pinagem do Raspberry Pi Pico →
  • Livre
  • Com cuidado
  • Só entrada
  • Não usar
  • Alimentação e controle
Projeto

Os pinos do ADC2 param de funcionar enquanto o Wi-Fi está ligado.

Adicionar pino

Meu plano de pinos

    Nenhum pino ainda. Escolha um no mapa ou adicione com o formulário.

    Pronto para colar no topo de um sketch ou em uma issue.

    Os pinos que você deve evitar ou usar com cuidado

    O ESP32 tem 34 GPIOs, mas em um DevKit só uns dois terços deles se comportam como pinos comuns. Quatro grupos exigem atenção.

    GPIO 6 a 11: ocupados pela flash

    Estes seis pinos ligam o chip à flash SPI dentro do módulo. As placas DevKitC trazem esses pinos para fora como CLK, SD0, SD1, SD2, SD3 e CMD, mas mexer neles trava o programa ou impede a placa de inicializar.

    GPIO 0, 2, 5, 12 e 15: pinos de strapping

    O chip lê estes pinos no reset para decidir como inicializar. Com o programa rodando, eles são GPIOs normais, então funcionam bem como saídas ou para botões. O problema vem de qualquer coisa que force o nível errado ao ligar a placa, como um resistor de pull-up, um módulo que aciona a linha ou um sensor que a mantém em um nível.

    GPIOPadrão no resetO que selecionaNa prática
    0Pull-up (ALTO)Modo de boot: ALTO roda o programa, BAIXO entra no modo de downloadNada pode mantê-lo em BAIXO ao ligar a placa
    2Pull-down (BAIXO)Precisa estar em BAIXO ou flutuando para o modo de downloadSem pull-up; muitas vezes é o LED da placa
    5Pull-up (ALTO)Timing do SDIO slave, junto com o GPIO15Serve para quase tudo
    12Pull-down (BAIXO)Tensão da flash: BAIXO 3,3 V, ALTO 1,8 VNunca em ALTO no reset
    15Pull-up (ALTO)Log de boot na UART0: ALTO imprime, BAIXO desativaSeguro; BAIXO só esconde o log

    GPIO 34 a 39: só entrada

    Estes pinos não têm driver de saída nem pull-up ou pull-down internos. São uma boa opção para leituras analógicas e para botões com um resistor externo. Não conseguem acionar um LED, um relé ou uma linha de barramento. Os GPIOs 37 e 38 existem no chip, mas não são expostos nos módulos WROOM.

    GPIO 1 e 3: a porta serial USB

    A UART0 vai até o chip USB-serial e cuida tanto do upload quanto do Serial. Você pode reaproveitar estes pinos em um projeto pronto, mas perde o monitor serial, e o upload pode falhar enquanto houver algo conectado.

    O ADC2 para de funcionar com o Wi-Fi ligado

    O ESP32 tem dois ADCs. O ADC1 fica nos GPIOs 32 a 39, e o ADC2 nos GPIOs 0, 2, 4, 12 a 15 e 25 a 27. O driver do Wi-Fi usa o ADC2, então, assim que o Wi-Fi inicia, as leituras nesses pinos falham ou retornam lixo. Em um projeto conectado, coloque todas as entradas analógicas no ADC1. Vai medir uma bateria? GPIO 34 ou 35 com um divisor resistivo é a escolha comum.

    Mesmo no ADC1, as leituras não são lineares perto dos extremos da faixa. Com atenuação de 12 dB, a Espressif recomenda ficar mais ou menos entre 0,15 V e 2,45 V para ter resultados precisos, então dimensione o divisor para manter o sinal nessa janela.

    Tabela completa de GPIOs do ESP32

    GPIOStatusADCTouchRTCNotas
    GPIO0Com cuidadoADC2_CH1T1RTC_GPIO11strapping
    GPIO1 (TX)Com cuidado———serial USB, UART0 TX
    GPIO2Com cuidadoADC2_CH2T2RTC_GPIO12strapping, LED em algumas placas
    GPIO3 (RX)Com cuidado———serial USB, UART0 RX
    GPIO4LivreADC2_CH0T0RTC_GPIO10—
    GPIO5Com cuidado———strapping, VSPI SS
    GPIO6 (CLK)Não usar———flash SPI
    GPIO7 (SD0)Não usar———flash SPI
    GPIO8 (SD1)Não usar———flash SPI
    GPIO9 (SD2)Não usar———flash SPI
    GPIO10 (SD3)Não usar———flash SPI
    GPIO11 (CMD)Não usar———flash SPI
    GPIO12Com cuidadoADC2_CH5T5RTC_GPIO15strapping, HSPI MISO
    GPIO13LivreADC2_CH4T4RTC_GPIO14HSPI MOSI
    GPIO14LivreADC2_CH6T6RTC_GPIO16possível atividade no boot, HSPI SCK
    GPIO15Com cuidadoADC2_CH3T3RTC_GPIO13strapping, HSPI SS
    GPIO16Livre———PSRAM no WROVER, RX2/TX2 em algumas placas
    GPIO17Livre———PSRAM no WROVER, RX2/TX2 em algumas placas
    GPIO18Livre———VSPI SCK
    GPIO19Livre———VSPI MISO
    GPIO21Livre———I2C SDA
    GPIO22Livre———I2C SCL
    GPIO23Livre———VSPI MOSI
    GPIO25LivreADC2_CH8—RTC_GPIO6—
    GPIO26LivreADC2_CH9—RTC_GPIO7—
    GPIO27LivreADC2_CH7T7RTC_GPIO17—
    GPIO32LivreADC1_CH4T9RTC_GPIO9cristal de 32 kHz
    GPIO33LivreADC1_CH5T8RTC_GPIO8cristal de 32 kHz
    GPIO34Só entradaADC1_CH6—RTC_GPIO4só entrada
    GPIO35Só entradaADC1_CH7—RTC_GPIO5só entrada
    GPIO36 (VP)Só entradaADC1_CH0—RTC_GPIO0só entrada
    GPIO39 (VN)Só entradaADC1_CH3—RTC_GPIO3só entrada

    Os pinos RTC podem despertar o chip do deep sleep (sono profundo): ext0 para um pino, ext1 para um grupo. Os pinos touch podem despertá-lo com um toque. As funções padrão são as do Arduino-ESP32: Wire em 21/22, SPI (VSPI) em 18/19/23/5. Os pinos padrão do Serial2 mudaram no core 3.x, então indique-os explicitamente.

    Perguntas frequentes

    Quais pinos do ESP32 são seguros para usar?

    Em um DevKit, os GPIOs sem restrições são 4, 13, 14, 16 a 19, 21 a 23, 25 a 27, 32 e 33. Os GPIOs 34 a 39 servem como entradas. Os GPIOs 0, 2, 5, 12 e 15 funcionam com o programa rodando, mas definem como o chip inicializa, e os GPIOs 6 a 11 pertencem à flash. Nos módulos WROVER, os GPIOs 16 e 17 são usados pela PSRAM.

    Posso usar os pinos do ADC2 com Wi-Fi?

    Não. O driver do Wi-Fi usa o ADC2, então as leituras analógicas nos GPIOs 0, 2, 4, 12 a 15 e 25 a 27 falham enquanto o Wi-Fi está ligado. Use os pinos do ADC1, os GPIOs 32 a 39. O ADC2 só volta a funcionar com o Wi-Fi desligado.

    Por que meu ESP32 não inicializa depois que liguei algo no GPIO12?

    O GPIO12 define a tensão da flash no reset. Se um pull-up ou um módulo conectado o mantém em ALTO, o chip alimenta a flash com 1,8 V e os módulos com flash de 3,3 V não iniciam. Mude a ligação para outro pino, ou grave a tensão da flash nos eFuses com espefuse set-flash-voltage 3.3V. Esse último passo é permanente e não pode ser desfeito.

    Quais pinos podem despertar o ESP32 do deep sleep?

    Os GPIOs RTC: 0, 2, 4, 12 a 15, 25 a 27 e 32 a 39. Use ext0 para despertar com um pino e ext1 para despertar com um grupo de pinos. Os pinos touch também podem despertar o chip com um toque.

    Quais são os pinos I2C e SPI padrão do ESP32?

    No Arduino-ESP32, o Wire usa o GPIO 21 para SDA e o 22 para SCL, e o SPI usa os pinos VSPI: 18 SCK, 19 MISO, 23 MOSI e 5 SS. Graças à matriz GPIO, você pode movê-los para quase qualquer pino que funcione como saída, passando os pinos para Wire.begin() ou SPI.begin().

    Os pinos do ESP32 toleram 5 V?

    Não. Os GPIOs trabalham com 3,3 V e a Espressif não os garante para 5 V. Ligue sinais de 5 V por meio de um conversor de nível lógico ou de um divisor resistivo.