banner

ESP32: Detalhes internos e pinagem



Neste artigo vamos falar sobre os detalhes internos e a pinagem do ESP32. Vou te mostrar como fazer a identificação correta dos pinos olhando o datasheet, quais deles funcionam como OUTPUT/INPUT, como ter uma visão geral sobre os sensores e periféricos que o ESP32 nos oferece, além do boot. Portanto, acredito que, com o vídeo abaixo, vou conseguir sanar diversas dúvidas que tenho recebido em mensagens e comentários sobre as referências do ESP32, entre outras informações.


NodeMCU ESP-WROOM-32


Aqui temos o PINOUT do WROOM-32 que serve como uma boa referência para quando você vai programar. Importante prestar atenção nas GPIOs (General Purpose Input/Output), ou seja, as portas programáveis de entrada e saída de dados que, aqui, ainda podem ser um conversor AD ou um pino de Touch, como é o caso do GPIO4, por exemplo. Isso também ocorre com o Arduino, no qual os pinos de entrada e saída também podem ser PWM.

ESP-WROOM-32


Na imagem acima temos o ESP32 propriamente dito. São vários tipos de plaquinhas com características diferentes de acordo com o fabricante.

Mas, qual a pinagem correta para eu utilizar meu ESP32?


O ESP32 não é difícil, tanto que podemos dizer que não existe uma preocupação didática em seu entorno. Porém, precisamos ser didáticos, sim. Se você quiser programar em Assembler, tudo bem. Mas, tempo de engenharia custa caro. Então, se tudo quanto é fornecedor de tecnologia te der uma ferramenta que você demora pra entender como ela funciona, isso vai virar um problema para você, pois tudo isso vai aumentando o tempo de engenharia e o produto vai ficando cada vez mais  caro. Daí minha preferência por coisas fáceis, aquelas que podem facilitar nosso dia a dia, pois hoje temos que respeitar o tempo das pessoas.

Voltando ao ESP32, em um datasheet, como neste acima, temos nos destaques a identificação correta dos pinos. Muitas vezes o rótulo no chip não coincide com o número real do pino, já que temos três situações: o GPIO, o número seriado e ainda o código da própria placa.
Veja no exemplo abaixo uma ligação de um LED no ESP e o modo correto de configurar:


Repare que o rótulo na placa é TX2, porém, devemos seguir a identificação correta, como destacada na imagem anterior. Portanto, a identificação correta do pino será 17. Na imagem abaixo você vê como deve ficar o código.


INPUT / OUTPUT

Ao realizar testes de INPUT e OUTPUT nos pinos, obtivemos os seguintes resultados:
INPUT não funcionou apenas no GPIO0.
OUTPUT não funcionou apenas nos pinos GPIO34 e GPIO35, que são VDET1 e VDET2 respectivamente.
*Os pinos VDET, pertencem ao domínio de energia do RTC. Significa que eles podem ser usados como pinos ADC e que o ULP-coprocessador pode lê-los. Podem ser apenas entradas e nunca saídas.


Diagrama de Blocos


Esse diagrama expõe que o ESP32 tem dual core, tem uma área do chip que controla o WiFi, e outra que controla o Bluetooth. Também tem aceleração de hardware para criptografia, que permite a conexão com LoRa, rede de longa distância que permite uma conexão até 15km, isso com uso de uma antena. Ainda observamos o clock generator, real time clock, e outros pontos que tratam, por exemplo, de PWM, ADC, DAC, UART, SDIO, SPI, entre outros, que fazem esse dispositivo bastante completo e funcional.

Periféricos e Sensores


Como consta na imagem acima, o ESP32 tem 34 pinos GPIOs que podem ser atribuídos a várias funções, como:
Digital-only;
Analog-enabled (podem ser configurados como digital);
Capacitive-touch-enabled (podem ser configurados como digital);
E outros.

Lembrando que a maioria dos GPIOs digitais pode ser configurada como pull-up ou pull-down interno, ou configurada para alta impedância. Quando configurada como entrada (input), o valor pode ser lido através do registro.

GPIO

Analog-to-Digital Converter (ADC)
O Esp32 integra ADCs de 12 bits e suporta medições em 18 canais (analog-enabled pins). O ULP-coprocessador no ESP32 também é projetado para medir as tensões enquanto opera em modo sleep, que permite o baixo consumo de energia. A CPU pode ser despertada por uma configuração de limite e/ou através de outros gatilhos.

Digital-to-Analog Converter (DAC)
Dois canais DAC de 8 bits podem ser usados para converter dois sinais digitais em duas saídas de tensão analógica. Estes DAC duplos suportam a fonte de alimentação como referência de tensão de entrada e pode conduzir outros circuitos. Os canais duplos suportam conversões independentes.

Sensores

Touch Sensor
O ESP32 tem 10 GPIOs de detecção capacitiva que detectam variações induzidas ao tocar ou aproximar de um GPIO com um dedo ou outros objetos.



O ESP32 ainda possui um sensor de Temperatura e um Sensor Hall interno, porém, para trabalhar com eles devem-se mudar as configurações dos registradores. Para mais detalhes acesse manual técnico através do link:

Watchdog

O ESP32 tem três temporizadores de vigilância: um em cada um dos dois módulos de temporizador (chamado o Temporizador de Watchdog Principal, ou MWDT) e um no módulo RTC (chamado RTC Watchdog Timer ou RWDT).

Bluetooth

Interface Bluetooth v4.2 BR/EDR e Bluetooth LE (low energy)
O ESP32 integra um controlador de ligação Bluetooth e Bluetooth baseband, que executam os protocolos de banda base e outras rotinas de links de baixo nível, como modulação/desmodulação, processamento de pacotes, processamento de fluxo de bits, saltos de frequência, etc.
O controlador de ligação opera em três estados principais: standby, connection e sniff. Permite múltiplas conexões e outras operações, como inquiry, page e secure simple-pairing, e, portanto, permite a Piconet e Scatternet.



Boot

Em muitas placas de desenvolvimento com USB/Serial incorporado o esptool.py pode redefinir automaticamente a placa para o modo de inicialização.
O ESP32 entrará no carregador de inicialização serial quando o GPIO0 for mantido baixo na reinicialização. Caso contrário, ele executará o programa em flash.


GPIO0 tem um resistor interno pullup, então, se ele estiver sem conexão irá setar para alto.
Muitas placas usam um botão marcado como “Flash” (ou “BOOT” em algumas placas de desenvolvimento Espressif) que seta o GPIO0 para baixo quando pressionado.
O GPIO2 também deve ser deixado sem conexão/flutuante.


Nesta imagem acima você vê um teste que fiz. Coloquei osciloscópio em todos os pinos do ESP pra ver o que acontecia no momento que ele fosse ligado. Descobri que, quando vou pegar um determinado pino, ele gera oscilações de 750 microssegundos, como no destaque ao lado direito. O que podemos fazer a respeito? Temos várias opções, como dar um delay com circuito com transistor, expansor de porta, por exemplo. Destaco que no GPIO08 é invertido. A oscilação sai para cima e não para baixo.
Outro detalhe é que temos pinos que iniciam em High e outros em Low. Portanto, esse PINOUT é referência quando o ESP32 liga, principalmente quando você está mexendo com carga para disparar, por exemplo, um triac, um relé, um contator ou algo de potência.


Faça o download do PDF


28 comentários:

  1. Boa noite Professor

    Gostaria de saber se é possível utilizar o sensor de oxigênio dissolvido da DFRobot com o esp32. Tal sensor é desenvolvido para uso com arduino. O link para o sensor é https://www.dfrobot.com/product-1628.html

    Desde ja agradeço.

    ResponderExcluir
    Respostas
    1. Olá. Sim é possível, faça a ligação correta da alimentação e o pino de dados em uma entrada ADC do seu ESP32. Depois só fazer a leitura do pino através do comando analogRead(). Abraço!

      Excluir
    2. Olá professor Fernando.

      Essa leitura analógica pode ser enviada para outra placa utilizando o protocolo ESP_NOW?

      Excluir
  2. Boa tarde Amigo. Eu não estou conseguindo fazer minha ESP-WROOM-32 ler um sensor de corrente SCT013 (30 A). Esse sensor utiliza uma entrada analógica, no arduino, funciona perfeitamente. O senhor sabe me informar se essa ESP32 tem entradas analógicas? e quais GPIO seriam?
    Desde já, obrigado.

    ResponderExcluir
    Respostas
    1. Só tem um pino analogico, sabe Deus qual é o pino da tua placa.

      Excluir
    2. Do texto acima na página....
      "
      INPUT / OUTPUT
      Ao realizar testes de INPUT e OUTPUT nos pinos, obtivemos os seguintes resultados:
      INPUT não funcionou apenas no GPIO0.
      OUTPUT não funcionou apenas nos pinos GPIO34 e GPIO35, que são VDET1 e VDET2 respectivamente.
      *Os pinos VDET, pertencem ao domínio de energia do RTC. Significa que eles podem ser usados como pinos ADC e que o ULP-coprocessador pode lê-los. Podem ser apenas entradas e nunca saídas.

      "

      Excluir
  3. Fernando. Pode alimentar o Esp32 com 5V pelo pino Vin e Gnd?

    ResponderExcluir
    Respostas
    1. Acho que pode mas não tenho certeza. Vi em alguns sites q o Vinícius e a porta USB aceitam a mesma voltagem, só não pode usar os dois juntos. Você chegou a testar?

      Excluir
    2. Também tenho essa dúvida amigo! Já tem a resposta? hehe

      Excluir
    3. Já utilizei e deu certo, mas nunca use as duas alimentações ao mesmo tempo.
      Ah uma solução para que quer alimentar com 3,3v e não tem uma fonte que forneça essa tensão, basta ligar em série com uma fonte de 5v 2 diodos 1n4001 ou outro. As quedas de tensão de 0,7v em cada resistor fornecerá a tensão aproximada para alimentação de 3,3v

      Excluir
  4. Bom dia, estou iniciando a programar o meu esp32, mas estou tendo problema com a biblioteca BLE, a IDE do Arduíno diz "Biblioteca inválida", poderia me ajudar, não estou conseguindo programar, pois ele não envia o código para a minha placa esp.

    ResponderExcluir
    Respostas
    1. 1. Você pode conseguir as 2 bibliotecas que precisa no seguinte endereço: https://github.com/nkolban/ESP32_BLE_Arduino
      2. Baixe também esta biblioteca que o arduino IDE irá reclamar dela:
      https://github.com/VSChina/ESP32_AzureIoT_Arduino
      3. Para efetuar o download do seu script para o ESP32 é necessário pressionar o botão "BOOT";
      Espero ter ajudado, boa sorte!!!

      Excluir
  5. Posso usar os modulos (sensor ultrassonico, rele, etc) do arduino no esp32?

    ResponderExcluir
  6. O esp 32 suporta 5 v nas gpio? E por que muitos sensores operam com 5 v!

    ResponderExcluir
    Respostas
    1. O esp 32 suporta 5 v nas gpio? E por que muitos sensores operam com 5 v!

      Excluir
    2. Não é possível, terá que realizar um divisor de tensão do sinal de saída do seu sensor.

      Excluir
  7. Bom dia. Observei que existem placas com o ESP32 com 30 (Doit) ou 38 (NodeMCU) pinos. Essa diferença é significativa para a escolha de compra?
    Grato

    ResponderExcluir
  8. O pino 3v3 fornece quantos amperes para módulos externos?

    ResponderExcluir
  9. 600 MA, POREM PODE CONSUMIR ATE 250 NO MAXIMO!

    ResponderExcluir
  10. Bom dia. Sou novo nesta área e estou com uma dúvida. Estou montando um circuito de monitoramento de câmara fria e pretendo utilizar 2 sensores de temperatura dentro da câmera (redundância) e um sensor de temperatura e umidade fora da câmara. Serão portanto 4 portas analógicas. Pelo que entendi, no NODEMCU posso configurar qualquer IO (ADCnn)como entrada analógica?

    ResponderExcluir
  11. Olá. Estou com dificuldades para controlar motores. Estou usando uma ponte H L298N e o ESP. Consigo controlar apenas um motor, sem que o segundo se movimente. Pensei que o problema pudesse estar relacionado à pinagem, mas mesmo depois de conferir quais pinos podem ser configurados como saída e de testá-los, ainda não consigo controlar o segundo motor.

    Esclarecendo: Consigo controlar qualquer motor, mas apenas a partir dos mesmos pinos. Se conecto ambos os motores e portanto uso outros pinos para o segundo motor, não consigo.

    ResponderExcluir
    Respostas
    1. Consegui resolver. O problema era no código. Esqueci de colocar o comando ledcWrite para o segundo motor.

      Excluir
  12. estou com dificuldade no sensor sw420 - não estou entendo a pinagem no esp32 - O DO do sensor deve ir em qual pino D4 do ESP32?

    ResponderExcluir
  13. Olá professor, no meu esp-cam estourou um transistor que fica logo abaixo do LED do flash. Como faço para saber que transistor é esse para tentar substituir? não acho a informação desses componentes em lugar nenhum!!!!

    ResponderExcluir
  14. Boa tarde professor, estou precisado usar um circuito divisor de tensão juntamento com o esp32, você já mediu ou possui algum documento que diz qual a resistência associada ao esp? Ou no caso de usar o mesmo eu não preciso levar em consideração?

    ResponderExcluir
  15. Olá professor, gostaria de saber se senhor ou alguem tem o livraria e esquematico 3d para proteus, estou usando somente parte do sistema esp32, para um projeto.
    Se alguem puder ajudar ederprestes@hotmail.com
    Obrigado!

    ResponderExcluir
  16. Olá professor, gostaria de saber se é possível usar este sensor com o esp32 € 0,91 46%de desconto | Interruptor do sensor do flutuador do nível de água líquido da c.a. 100 v para a associação horizontal do tanque de peixes dos aquários com controle automático do comprimento do flutuador de 85mm
    https://s.click.aliexpress.com/e/sOstpJsM

    ResponderExcluir

Tecnologia do Blogger.