Recents in Beach


Receba o meu conteĆŗdo GRATUITAMENTE


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


Postar um comentƔrio

31 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
    Respostas
    1. Oi! Estou com a mesma dúvida... preciso simular o ESP32 no Proteus, mas o componente não aparece lÔ. Alguém sabe como fazer?

      Excluir
  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
  17. Uso o ESP32 WRROM 32 com 38 pinos mais 1 GND, tem uns IO que não consigo usar por nd são eles GPIO 6,7,8,9,10 e 11 nem pra acender um led, vi que estão ligados a Flash, tem como desativar isso? e usar tais pinos?

    ResponderExcluir
  18. SerĆ” que consigo montar o projeto speeduino no esp32?

    ResponderExcluir