Translation: If you want to translate this tutorial into your language, I suggest using the Google Chrome browser. Right-click – it will be translated into your language. If you have questions, you can post in any language for me!
Sou um grande admirador de Microcontroladores e Microprocessadores. O primeiro Microprocessador que tive contato foi o Intel 8080, na década de 1980 (naquela época não existia ainda o Microcontrolador).
Fiquei admirado com aquela tecnologia. Estudei um bocado sobre o Zilog Z80, depois um pouco sobre o processador Intel 8085, 8086, etc.
Estamos na era dos Microcontroladores. A diferença de um Microprocessador, é que nele já tem alguns dispositivos periféricos integrados no mesmo chip além do próprio Microprocessador, como memória RAM, memória Flash, interfaces de entrada e saída, etc.
Quando eu criei o tutorial sobre o ESP8266 no Lab de Garagem, foi o meu primeiro contato com os Microcontroladores do fabricante chinês ESPRESSIF. Fiquei fascinado com a quantidade de recursos em um único chip !
Link do Tutorial : Conhecendo o ESP8266
Depois de mais de um ano desenvolvendo o Tutorial do ESP8266, estudando bastante, pesquisando informações em sites chineses e russos, tive conhecimento do lançamento do sucessor – o ESP32. Pensei comigo, agora que estou sabendo um pouco sobre o ESP8266, a ESPRESSIF lança o ESP32 muito mais poderoso e complexo! Acho que vou dar um tempo.
E acho que agora chegou a hora de eu lançar o Tutorial no meu Blog – Conhecendo o ESP32. Como ele é muito mais complexo, sei que terei que estudar muito mais. Um dos manuais do ESP32 tem mais de 600 páginas ! Gosto de desafios, e esse será mais um desbravador.
Percebo que muitos interessados nessa Tecnologia, se acomodaram com o Arduino. Com Arduino, a gente encontra tudo pronto – é só apertar o botão e pronto. Devido à grande versatilidade do ESP32, e por ser uma tecnologia nova , tudo esta sendo criado ou adaptado. E só o tempo poderá nos dar a certeza do futuro desse poderoso Microcontrolador. Pelo pouco que já li sobre ele, (alguns já comentam que será o Arduino Killer) , percebo que ele é poderosíssimo.
Tempos atrás eu estava refletindo sobre o futuro dos Microcontroladores. Pensei comigo – gostaria de ter um Microcontrolador com poder de processamento rápido, com comunicação WIFI/ Bluetooth, com memória suficiente para inúmeras aplicações, com baixo consumo, com vários tipos de interfaces (principalmente a CAN) e com quantidade expressiva de portas de I/O. A ESPRESSIF com o ESP32, preenche todos esses requisitos ! E para complementar o meu sonho – com um preço bem baixo, acessível para todos.
Características do Chip ESP32
Esse Microcontrolador é um super chip ! Ele possui dois Microprocessadores Xtensa® 32-bit LX6 com até 600 DMIPS (velocidade de processamento). A frequência do clock pode ser de até 240 MHz, dependendo do modelo. Frequência mais comum – 160 MHz ( 10 vezes o clock do Arduino Uno).
- memória ROM interna de 448K Bytes (para Boot e Core)
- memória RAM estática interna de 520K Bytes
- Memória externa (total 4) – suporte para até 16M Bytes Flash e 16M Bytes SRAM
- 1 K Bit de Fusíveis eletrônicos (para segurança e criptografia)
- Real Time Clock com 16K Bytes de SRAM
- Interface WIFI 802.11 b/g/n – 802.11 n (2.4 GHz), até 150 Mbps
- Interface Bluetooth v4.2 BR/EDR e Bluetooth LE (low energy)
- Dois grupos de Timers – 4 timers de 64 Bits
- Aceleradores de hardware (criptografia) – AES, SHA, RSA e ECC
- Alimentação VCC de 2,3V a 3,6V CC
- Consumo de corrente max com WIFI – 240 mA
Link do Datasheet do CHIP ESP32
Periféricos do Chip ESP32
- 34 × Portas programáveis GPIOs
- 2 x Conversores ADC SAR 12-bits com até 18 canais
- 2 × Conversores DAC de 8-bits
- 10 × sensores de toque
- Sensor de Temperatura
- 4 × interfaces SPI – clock até 40 MHz !
- 2 × interfaces I2S – clock até 40 MHz !
- 2 × interfaces I2C – até 5 Mbps
- 3 × interfaces seriais UART – até 5 Mbps !
- 1 Host (SD/eMMC/SDIO) para controle de SD Cards
- 1 Escravo (SDIO/SPI)
- Interface Ethernet MAC (necessita acessório)
- Interface CAN 2.0
- Interface Infra-vermelho (Tx/Rx)
- Controle de Motor PWM
- Controle de LED PWM até 16 canais
- Sensor interno Hall
Diagrama em Blocos do Chip ESP32
ESP32 Chip pinout (visto por cima) 48 pinos
Características do Módulo ESP32
A Espressif desenvolveu alguns tipos de mini-módulos com o Chip ESP32:
- ESP-WROOM-32 , 32D e 32U (mais comum)
- ESP32-WROVER e WROOVER-I
Quando a Espressif lançou o ESP8266, ela só vendia o módulo sem regulador e sem interface USB-Serial. Isso dificultou para muitos, o uso desse módulo. Para evitar o mesmo erro, a Espressif lançou os módulos ESP32 e os boards também.
O chip ESP32 é uma tecnologia nova e muito recente. Portanto sujeita à alguns Bugs (problemas). Mas não creio que sejam tão graves. Se tiver curiosidade pode consultar aqui :
ECO and Workarounds for Bugs in ESP32
Esses são os tipos de placas (Boards) com esses mini-módulos ESP32 – versões atuais :
- ESP32 DevKitC V4
- ESP32-PICO-KIT V4
- ESP-WROVER-KIT V3
Link dos Tipos de Módulos e Boards de ESP32
Alguns outros fabricantes, criaram as suas versões :
- ESP32 – Thing da SparkFun
- ESP32 Feather Board da ADAFRUIT
- FireBeetle ESP32 da DFRobot
- WiPy 3.0 MycroPython da PYCOM
A primeira foto desse tutorial , é do módulo ESP-WROOM-32. Dentro desse módulo temos o Microcontrolador (chip) ESP32, uma memória Flash de 4M bytes, um cristal de Clock (40 MHz) e uma antena embutida. A foto da esquerda é a parte debaixo e a da direita é da parte de cima do mini-modulo ( aproximadamente 25 x 18 mm).
Em relação ao módulo do ESP8266, dá para perceber que o ESP32 tem muito mais portas.(38 pinos no total – incluindo pinos de I/O e de alimentação)
O Board mais comum que eu encontrei aqui no Brasil , é uma placa com o módulo ESP-WROOM-32. Por isso que eu comprei esse módulo. Já tem um regulador de 3,3V, um chip de interface Serial-USB e botão de RESET (EN) e LOAD (BOOT). Funciona como se fosse uma placa Arduino.
Usando o diagrama acima do site http://www.pighixxx.com, fiz um Pinout da minha placa – ESP32 DEVKITC (não foi fabricada pela ESPRESSIF) :
Não conferi o diagrama do circuito com a minha placa, mas acho que esse diagrama abaixo pode ser uma referência para ela .
Essa placa ESP32 DEVKIT tem um regulador de 3,3V (corrente max 1A) , que pode ser o chip AMS1117 -3.3. No Datasheet do ESP32, esta especificado que a corrente fornecida para alimentação de 3,3V deve ser no mínimo de 500 mA. Portanto nunca conecte um outro módulo ou dispositivo que consuma mais do que 0,5 A, para não sobrecarregar esse regulador interno.
Link do Datasheet do REG AMS1117-3.3
A alimentação dessa placa pode ser feita através do próprio conector USB (5,0V) ou então através do pino 5V (EXT) , com uma alimentação regulada de 5,0V . Apesar do Regulador AMS1117 aceitar até 12V na entrada, recomendo que se for alimentar a placa através desse pino, use sempre uma fonte regulada de 5V, pois assim nunca sobre-aquecerá o mesmo ! Evitando um possível defeito no regulador. Não recomendo que use o pino 3,3 REG para alimentar a placa. Esse pino é a saída do regulador e não a entrada. Mas no site da ESPRESSIF, considera também que a alimentação possa ser através do pino 3,3V REG. Mas uma observação importante = as opções de alimentação são mutuamente exclusivas, isto é, somente poderá usar uma opção (USB, 5V ou 3,3V) . Não use mais de uma opção, pois poderá danificar algum componente da placa. Não se esqueça de conectar o GND da fonte no GND da placa.
O Chip da interface Serial-USB é o CP2102 da Silicon Labs. Ele suporta USB 2.0. (não suporta USB 3.0). Baud Rates até 1 MBps. Na placa ESP32 DEVKIT, a alimentação 3,3V do CP2102 é feita através do regulador AMS1117. Consumo máximo de corrente é de apenas 26 mA. O CP2102 possui um regulador interno de 3,3V, mas nessa placa ESP32, esse regulador esta inoperante.
Link para download dos drivers do CP2102 para Windows, Macintosh OSX, Linux e Android :
Essa é a foto em alta definição da minha Placa ESP32 DEVKIT :
O pino G33 na parte superior da imagem esta identificado incorretamente ! Esta escrito G23, mas o correto é G33 (entre os pinos G25 e G32) .
Botão de RST – dá um pulso LOW no pino EN , reset do módulo ESP32.
Botão de BOOT – dá um pulso LOW no pino GPIO 0 – permite a gravação do programa no ESP32.
Observação interessante : Os pinos DTR e RTS do Chip CP2102, controlam o pino ENA (reset chip ESP32) e o pino GPIO0 (Load program). Portanto, ao gravar um programa com a IDE Arduino, não é necessário pressionar o botão de BOOT (Load). Muito melhor do que no ESP8266 !
- Conhecendo o ESP32 – Introdução (1)
- Conhecendo o ESP32 – Primeiros contatos (2)
- Conhecendo o ESP32 – usando Arduino IDE (3)
- Conhecendo o ESP32 – usando ESP-IDF (4)
- Conhecendo o ESP32 – usando PlatformIO / ATOM (5)
Aguardem mais Tutoriais sobre o ESP32. Espero que gostem.
Olá,
a corrente máximo que um pino GPIO pode fornecer é de 12mA (recomendável 6mA), correto? Mas qual seria a soma de corrente que as portas GPIO podem fornecer, existe alguma limitação? (Me recordo que no Atmega a soma é de 200mA).
Um grande abraço!
CurtirCurtir
Boa tarde Lucas,
Esta escrito no Datasheet:
“A tensão de operação do ESP32 varia de 2,3 V a 3,6 V. Ao usar uma fonte de alimentação única,
a tensão da fonte de alimentação recomendada é 3,3 V e sua corrente de saída recomendada é 500 mA ou mais.
Ioutput * Cumulative IO output current = 1200 mA (máximo absoluto).
Mas não recomendo que exceda os 500 mA.
Atenciosamente,
Gustavo Murta
CurtirCurtir
Olá Gustavo, muito bom seu artigo.
Estou enfrentando uma instabilidade com o ESP32. Estou alimentando-o a partir de um módulo de bateria li-ion com TP4056, que pode fornecer de 2.8 a 4.2V. Para reduzir a tensão estou utilizando um diodo, reduzindo a tensão em 0.7V. Estou ligando corretamente os pinos de controle de boot com resistores de 10K ao terra. O ESP começa funcionando bem, porém com o tempo entra em boot infinito, com mensagem de erro na leitura da memória flash: “flash read err, 1000”. Alguns ficam bom o bug intermitente, outros ficam com este erro definitivamente. Sabe o que pode ser? Muito obrigado.
CurtirCurtir
Boa tarde Márcio,
Primeiramente, não é tecnicamente recomendável usar um diodo para fazer esse tipo de alimentação.
Você deve usar um regulador de 3,3 V.
Qual modelo do seu módulo ESP32? Qual pino está usando para fazer a alimentação?
Atenciosamente,
Gustavo Murta
CurtirCurtir
Murta, boa tarde! Primeiramente o parabenizo pela qualidade do post. Precisamos mais de materiais com essa clareza e detalhamento. Vamos lá, estou com dúvidas sobre a pinagem de programação do ESP32. Como utilizarei um conversor externo preciso apenas definir esta pinagem e não encontrei nenhum material que inspire confiança. Pode me auxiliar?
CurtirCurtir
Boa noite,
Se você vai usar o módulo ESP-WROOM32 separadamente, precisará alimentar o circuito com 3,3V. Regulador de 1A, o mesmo usado em placas prontas.
A Interface USB/Serial deve ter pinos de TX e RX com níveis de tensão de 3,3V.
Para fazer as ligações é só comparar o circuito do diagrama no Tutorial. O pino TX da Interface USB/Serial conectado no RXD0 do ESP-WROOM32 (pino 34) . E o RX da Interface USB/Serial conectado no TXD0 do ESP-WROOM32 (pino 35).
Veja no diagrama, que tem um botão no pino IO0 e outro no pino EN.
Clique para acessar o esp32_devkitc_v4-sch.pdf
Atenciosamente,
Gustavo Murta
CurtirCurtido por 1 pessoa
Bom dia,mto obrigado pela disposição em nos ajuda-lo.
Sou novo em ESP32 e estou fascinado pelo poder do mesmo,o datasheet (DEVKITV1)diz que tem um flash 4Mb,duvidas:Em um projeto onde irei coletar dados durante no maximo 01 semana,precisarei usar um SD card ?E quantas entradas analógicas o controlador me disponibiliza?Pois em alguns tutoriais afirmam que só tenho 06(ADC01),pois os ADC2 ao comunicar via WIFI ficam nulos.
Mto agradecido pela atenção.
CurtirCurtir
Boa noite Paulo,
Veja meus outros tutorias sobre ESP32 (mais atualizados)
https://blog.eletrogate.com/conhecendo-o-esp32-introducao-1/
https://blog.eletrogate.com/conhecendo-o-esp32-usando-arduino-ide-2/
Na tabela dos módulos, conta que o ESP32 DevKit tem uma memória flash de 4MB.
Para coleta de dados sugiro que use um SD Card. É mais simples e mais prático.
https://randomnerdtutorials.com/esp32-data-logging-temperature-to-microsd-card/
Sobre entradas analógicas, o ESP32 tem 2 x Conversores ADC SAR 12-bits com até 18 canais. Mas o WIFI precisa ser desligado enquanto for usar as entradas analógicas. Senão o WIFI induz ruídos nas leituras dos conversores!
Atenciosamente,
Gustavo Murta
CurtirCurtir
Fala Gustavo, vc era da Ecoavis? Estou mexendo com impressão 3D e acabei achando esse seu Blog sobre Esp32. Bacana.
CurtirCurtir
Boa noite Cardoso,
Sou atualmente o Diretor vice-presidente da ONG Ecoavis. Lembro-me de você.
Que bom que gostou dos tutoriais.
Tenho vários outros tutoriais também em:
https://blog.eletrogate.com/
E aqui também :
http://labdegaragem.com/
Abraços,
Gustavo Murta
CurtirCurtir
Não consigo achar o meu esp32 no wifi, o que pode ser o problema?
CurtirCurtir
Boa noite Daniel,
Siga os procedimentos do 3o tutorial :
Conhecendo o ESP32 – usando Arduino IDE (3)
Atenciosamente,
Gustavo Murta
CurtirCurtir
Boa noite, ótimo tutorial, mas eu tentei acender o led por meio do ESP32 e obtive esse erro, teria como você me ajudar a descobrir a causa? Obrigada.
“Leaving…
Hard resetting via RTS pin…”
CurtirCurtir
Bom dia Mari,
Essa mensagem é normal, após o programa ter sido gravado na placa. Como informado no tutorial :
“A gravação do Sketch no ESP32 terá finalizado quando aparecer a mensagem:
Leaving…
Hard resetting via RTS pin…”
Leia com atenção e teste a placa com o programa do tutorial:
http://blog.eletrogate.com/conhecendo-o-esp32-usando-arduino-ide-2/
Atenciosamente,
Gustavo Murta
CurtirCurtir
Caro Gustavo….agora estou lendo seu tutorial nas entrelinhas. Excelente….parabéns pela didática. Por enquanto, sem dúvidas.
Abraço.
CurtirCurtir
Obrigado pelos elogios ! Abraços
Gustavo
CurtirCurtir
Gustavo, ja tenho certa experiencia com arduino, mas estou precisando utilizar wifi em alguns projetos, adquiri um esp01, não consegui de maneira nenhuma faze-lo funcionar, inlclusive acho q queimei algo pois ao ligarr no monitor do Arduino ele começa a jogar simbolos estranhos. Dai pesquisei um pouco sobre o esp32., que ele pode inclusive substituir o Arduino. O esp32 possui portas logicas como o arduino para se conectar varios sensores, controlar motores, botões entre outras coisas que ja se faz com o Arduino?
CurtirCurtir
Boa noite Rafael .
Se pretende usar o ESP01, sugiro que leia o meu tutorial no Lab de Garagem. Simbolos estranhos devem ser causados por configuração de velocidade incorreta da Console.
ESP8266 – Diagrama da montagem do Modulo ESP8266-01:
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId=6223006%3AComment%3A499858
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266
O ESP32 é um upgrade do ESP01 – tem mais portas digitais e analógicas (mas lembre-se que o nível de tensão é de 3,3V) .
No Arduino, o nível de tensão é de 5V.
Atenciosamente, Gustavo
CurtirCurtir
Boa noite, vou desenvolver um projeto de automação de um sistema de ventilação/exaustão com o ESP32 e gostaria de lhe perguntar se sabe informar se o pino de 5V pode ser utilizado para alimentar um módulo Relé de Estado Sólido – 1 Canal – 5V 2A? Caso não seja possível, seria uma boa alternativa dispensar o conversor AC/DC 5V microUSB e investir em uma outra fonte de energia que alimente a placa ESP32 e o relé? Obrigado.
CurtirCurtir
Bom dia Lamberto,
Favor informar as especificações do seu módulo de relé SSD (link). Você também não informou se vai usar um ESP32 DevKit. Considerando que vai usar um ESP32 DevKit e uma fonte 5V/1A para alimentá-lo através do conector micro-usb, não vejo problemas em alimentar o módulo Relé SSD através do pino 5V. Vendo no circuito do ESP32 DevKit (no tutorial), existe um diodo BAT760 entre o 5V do conector USB e o pino 5V EXT. Esse diodo suporta uma corrente máxima de 1A. A grande vantagem do relé SSD é que ele isola o circuito de controle CC, do circuito CA. Uma coisa deve ficar atento – os pinos do ESP32 suportam uma corrente de apenas 12 mA no máximo. Qual será a corrente usada nesse pino de controle do seu Módulo de relé ?
Atenciosamente, Gustavo Murta
CurtirCurtir
Olá, boa noite. Estou com um projeto parecido com o do colega acima. Atualmente estou usando o ESP8266-12E. Estou alimentando o Relé de 5V (https://www.eletrogate.com/modulo-rele-1-canal-5v?utm_source=Site&utm_medium=GoogleMerchant&utm_campaign=GoogleMerchant&gclid=Cj0KCQjw0a7YBRDnARIsAJgsF3MCUsolGIP6a0z09zpMzF1uz7zYGILLyMY3pY1keka-FU_mQ_0kGBsaAoYPEALw_wcB), com a saída de 3v3 do ESP, porém não está dando muito certo. Parece que não está alimentando corretamente. Quando ativo a porta digital do ESP enviando o comando para ativar o relé, o mesmo acende as luz vermelha e verde, como se tivesse funcionado, porém o circuito continua aberto. Tenho que dar uns “tapinhas” em cima do Relé para ele fechar o circuito. Estou alimentando o ESP com uma fonte de 5V e 1000 mA.
Estava procurando um outro ESP mais recente para ver se tinha uma saída de 5V e vi que esse ESP32 DevKit possui.
Acredito que o ESP8266-12E não está tendo tensão suficiente. Poderia me dar alguma sugestão? Obrigado
CurtirCurtir
Bom dia, Cayaque
Você esta alimentando o módulo Relé com 5V ? Ele tem que ser alimentado com 5V (pino VCC).
Se não funcionar, sugiro que use um rele com acoplador ótico, ou então um relé de Estado sólido (SSD).
As portas digitais do ESP-12E e também do ESP32 funcionam com níveis de 3,3V (não com 5V).
Atenciosamenre,
Gustavo Murta
CurtirCurtir
Olá J.Gustavo, parabéns por mais uma publicação que com certeza servira como referencia para muitos colegas, tal como foi a sua outra publicação com o ESP8266. Obrigado!
Um grande abraço!
CurtirCurtir
Obrigado amigo Carlos. Hoje chegou o meu ESP32. Já estou preparando mais material para o tutorial .
Grande abraço, Gustavo
CurtirCurtir
Murta, parabéns pela iniciativa. O ESP32 deve dominar na área de IoT devido a suas poderosas características…
CurtirCurtir
Obrigado amigo ! Esse ESP32 parece ser realmente muito poderoso !
Abraços.
CurtirCurtir