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

45 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