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

47 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. Ola caio, nunca desista, se tem um problema contorne-o.
      se for trabalhar com projetos problemas sempre surgirão! dito isso,
      vamos sana-los.
      se voce tem um sensor que trabalha com leitura analogica que varia de 0 a 5v
      o que deve fazer ao utilizalo no esp32 que trabalha em 3v3 seria colocar um divisor de tensão no pino de saida! no caso de deste SCT013 sensor não invasivo, ou seja capta uma corrente indutiva AC.
      faƧa o circuito de forma que . o sensor Ʃ alimentado por 5v normalmente ok?
      porƩm na saida voce coloca 2 resistores desta maneira:
      R1 = 1K
      R2 = 2K
      onde o r1 uma ponta vai na saĆ­da do sensor, a outra ponta de r1 vai no r2, e a ultima ponta que sobrou liga no terra, gnd, -, negativo ou como estiver escrito ai no seu sensor!
      desta maneira.
      o que muda seria o calculo.
      agora quando for fazer a conversão em vez de calcular a divisão entre 5v / leitura analog, serÔ 3v3 / leitura analog.
      Boa sorte!

      Excluir
    4. e o pino de leitura seria o nó entre r1 e r2!

      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. ótima resposta , corrigindo ( em cada diodo cairÔ 0,7Volts) só isso mesmo ok

      Excluir
    5. Não aconselho usar 3.3V na alimentaçãO. Quando o WiFi estÔ ativado a placa consome bastante potência. Mesmo alimentando pela USB, se for pelo computador e não for uma porta com capacidade de corrente boa você pode obter um brownout. Mesmo um cabo muito comprido na alimentAção pela USB que fios bem finos no cabo em alguns casos pode provocar isso. Usando %V você mitiga este aspecto jÔ que a corrente pode ser menor. Os ESP32 são placas manhosas em muitos dos detalhes.

      Excluir
    6. Correção 5V e não %V

      Excluir
    7. Diria que é até melhor usar 3.3v na alimentação, justamente pelo wifi e outras coisas que consomem muito, Não é bom confiar no ams1117 integrado da placa, nunca se sabe se é um chip bom ou vagabundo (ex alguns são pra 100ma). Eu particularmente sempre alimento pela porta 3v3

      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
    2. O esp32 não tem biblioteca simulavel para o proteus ainda, jÔ me informei na symasic e na EDA, só esquemÔtico mesmo

      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
  19. Boa tarde Professor. Poderia orientar como corrigir a não linearidade de leitura de valores analogicos das GPIOs ADC do ESP32 ?

    ResponderExcluir
  20. Boa tarde, to montando meu TCC com o esp32 pra automatizar um quarto...por enquanto liguei ele com um relé pra acender uma lâmpada, um sensor de LDR e um sensor de presença...minha dúvida é, quantos sensores eu posso ligar no esp32 ? qual o mÔximo de portas dele que posso usar sem comprometer meu sistema?

    ResponderExcluir
  21. Posso ligar uma bateria (CR2032) de Backup do RTC interno do ESP32 quando esse estiver desligado ? e em quais pinos que eu deveria conecta-la ?

    ResponderExcluir
  22. Percebi que o pino TX0 como GPIO01 esta sempre em HIGH, impossibilitando seu uso pra LOW/HIGH

    ResponderExcluir
  23. OlĆ”, mestre
    Queria uma solução para uma aplicação que fiz no meu ventilador com o ESP8266. JÔ consigo ligar e desligar ele pela internet através de um clique e tbm desligar e ligar através de um temporizador, mas a hora e os minutos são setados só pelo IDE do arduíno. Queria conseguir mudar as horas e minutos do despertador pela pÔgina web tbm. Você pode me ajudar?

    ResponderExcluir
  24. Qual Ʃ o mƔximo e o mƭnimo de amperes que podem ser utilizados no esp32 e esp32-CAM?

    ResponderExcluir
  25. OlÔ professor. Boa noite. Estou tendo um problema em um projetinho onde quero realizar a leitura de 20 entradas digitais no esp32. Porém estou com um problema onde o ESP reporta em alguns pino uma flutuação de valores entre acionado e não acionado que não existem. Sabe me dizer se tem alguma ideia do que possa estar acontecendo?

    ResponderExcluir