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
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
47 ComentƔrios
Boa noite Professor
ResponderExcluirGostaria 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.
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!
ExcluirOlĆ” professor Fernando.
ExcluirEssa leitura analógica pode ser enviada para outra placa utilizando o protocolo ESP_NOW?
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?
ResponderExcluirDesde jĆ”, obrigado.
desiste...
ExcluirSó tem um pino analogico, sabe Deus qual é o pino da tua placa.
ExcluirDo texto acima na pƔgina....
Excluir"
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.
"
Ola caio, nunca desista, se tem um problema contorne-o.
Excluirse 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!
e o pino de leitura seria o nó entre r1 e r2!
ExcluirFernando. Pode alimentar o Esp32 com 5V pelo pino Vin e Gnd?
ResponderExcluirAcho 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?
ExcluirTambém tenho essa dúvida amigo! JÔ tem a resposta? hehe
ExcluirJƔ utilizei e deu certo, mas nunca use as duas alimentaƧƵes ao mesmo tempo.
ExcluirAh 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
ótima resposta , corrigindo ( em cada diodo cairÔ 0,7Volts) só isso mesmo ok
ExcluirNã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.
ExcluirCorreção 5V e não %V
ExcluirDiria 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
ExcluirBom 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.
ResponderExcluir1. Você pode conseguir as 2 bibliotecas que precisa no seguinte endereço: https://github.com/nkolban/ESP32_BLE_Arduino
Excluir2. 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!!!
Posso usar os modulos (sensor ultrassonico, rele, etc) do arduino no esp32?
ResponderExcluirO esp 32 suporta 5 v nas gpio? E por que muitos sensores operam com 5 v!
ResponderExcluirO esp 32 suporta 5 v nas gpio? E por que muitos sensores operam com 5 v!
ExcluirNĆ£o Ć© possĆvel, terĆ” que realizar um divisor de tensĆ£o do sinal de saĆda do seu sensor.
ExcluirBom dia. Observei que existem placas com o ESP32 com 30 (Doit) ou 38 (NodeMCU) pinos. Essa diferenƧa Ʃ significativa para a escolha de compra?
ResponderExcluirGrato
O pino 3v3 fornece quantos amperes para módulos externos?
ResponderExcluirAtƩ 600 mA.
Excluir600 MA, POREM PODE CONSUMIR ATE 250 NO MAXIMO!
ResponderExcluirBom 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?
ResponderExcluirOlĆ”. 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.
ResponderExcluirEsclarecendo: 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.
Consegui resolver. O problema era no código. Esqueci de colocar o comando ledcWrite para o segundo motor.
Excluirestou 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?
ResponderExcluirOlÔ 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!!!!
ResponderExcluirBoa 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?
ResponderExcluirOlĆ” 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.
ResponderExcluirSe alguem puder ajudar ederprestes@hotmail.com
Obrigado!
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?
ExcluirTambƩm estou querendo.
ExcluirO esp32 não tem biblioteca simulavel para o proteus ainda, jÔ me informei na symasic e na EDA, só esquemÔtico mesmo
ExcluirOlĆ” 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
ResponderExcluirhttps://s.click.aliexpress.com/e/sOstpJsM
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?
ResponderExcluirSerĆ” que consigo montar o projeto speeduino no esp32?
ResponderExcluirBoa tarde Professor. Poderia orientar como corrigir a não linearidade de leitura de valores analogicos das GPIOs ADC do ESP32 ?
ResponderExcluirBoa 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?
ResponderExcluirPosso ligar uma bateria (CR2032) de Backup do RTC interno do ESP32 quando esse estiver desligado ? e em quais pinos que eu deveria conecta-la ?
ResponderExcluirPercebi que o pino TX0 como GPIO01 esta sempre em HIGH, impossibilitando seu uso pra LOW/HIGH
ResponderExcluirOlĆ”, mestre
ResponderExcluirQueria 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?
Qual Ć© o mĆ”ximo e o mĆnimo de amperes que podem ser utilizados no esp32 e esp32-CAM?
ResponderExcluirOlÔ 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