Tutorial : Conhecendo o ESP32 – Introdução (01)

ESSE TUTORIAL É UMA CÓPIA DO MEU BLOG :

https://jgamblog.wordpress.com/2018/02/05/conhecendo-o-esp32-introd...

Sou um grande admirador de Microcontroladores e Microprocessadores. O primeiro Microprocessador (naquela época não existia Microcontrolador), que tive contato foi o Intel 8080, na década de 1980.

Microprocessador INTEL 8080

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.

  • 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 Block diagram

ESP32 Chip pinout (visto por cima) 48 pinos

ESP32 chip pinout

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.

Essas são as 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

ESP32 complete platform

Alguns outros fabricantes, criaram as suas versões :

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 ( 26 ou 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)

ESP-WROOM-32 Pinout

ESP32 WROOM Module pinout

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.

Usando o diagrama acima do site http://www.pighixxx.com, fiz um Pinout da minha placa – ESP32 DEVKITC (não foi fabricada pela ESPRESSIF) :

Link do ESP32 DEVKIT Pinout

ESP32 DEVKIT V4 pinout v2

Não conferi o diagrama do circuito com a minha placa, mas acho que esse diagrama abaixo pode ser uma referência para ela .

esp32_devkitc_v4-sch – PDF

 

ESP32 DEVKIT V4 diagrama

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 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 do Datasheet do CP2102

Link para download dos drivers do CP2102 para Windows, Macintosh OSX, Linux e Android :

Link dos Drivers CP2102

Essa é a foto em alta definição da minha Placa ESP32 DEVKIT :

ESP32 DEVKIT do Gustavo

ESP32 DEVKIT Gustavo

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 !

Aguardem mais Tutoriais sobre o ESP32.   Espero que gostem !

Exibições: 12360

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de José Gustavo Abreu Murta em 12 outubro 2022 às 23:28

Manual super importante:

ESP IDF Programming guide - para ESP32:

https://espressif-docs.readthedocs-hosted.com/_/downloads/esp-idf/e...

Comentário de José Gustavo Abreu Murta em 14 fevereiro 2022 às 22:01

Boa noite, 

Mais um canal de informação da ESPRESSIF :

https://blog.espressif.com/

Comentário de José Gustavo Abreu Murta em 30 abril 2019 às 13:29

Bom dia Antonio, 

Favor criar um novo tópico no Lab, com o seu problema. Esse tópico é um tutorial.

Envie um diagrama eletronico e fotos da sua montagem . 

Obrigado. 

Gustavo 

Comentário de Antonio Cesario em 30 abril 2019 às 13:18

desculpe me expressei mal. Ja tenho módulo ESP32 funcionando e programado. Leio a porta ADC e jogo os valores através de um serviço de Bluetooth, (Serviço de Bateria).  Funciona tudo. Mas quando removo o cabo da serial o tx e o rx ficam sem conexão. Porque estou usando só módulo não o kit que ja vem com a serial embutido. Mas quando eu removo o cabo da serial as leituras para de ser enviadas via Bluetooth. Quando recoloco o cabo o Bluetooth volta a receber as leituras.  Parece que ele depende da serial para funcionar mesmo eu não usando a serial, inclusive nem configurei a serial para ver esses dados em um terminal.

Comentário de José Gustavo Abreu Murta em 30 abril 2019 às 1:21

Boa noite Antonio, 

Suas colocações estão confusas. 

Se esta usando o módulo ESP32 WROOM 32 como pretende fazer a comunicação, atualizar o firmware, etc?

Ou você já consegui a conexão atavés do WIFI?

Não entendi...

Comentário de Antonio Cesario em 29 abril 2019 às 23:07

Muito legal. Mas estou enfrentando um problema estranho, estou utilizando só módulo do ESP32 WROOM 32 sem serial sem nada.

Tenho 1 resistor de 10K no EN no VCC e outro de 10K no ID0  e no VCC. Programo usando um cabo serial usb externo. E coloco o pino ID0 para gnd.

Mas quando uso o adc ele não envia os dados coletados via Blutooth se o cabo serial estiver desconectado.

Pinos TX e RX não conectados. Não estou usando a serial para nada. Você teria alguma ideia o que causa isso ?

Muito Obrigado.

Mesmo se eu conectar um cabo serial com a usb sem ligar em nada funciona !!! Mas com os dois pinos tx e rx abertos nada. Ja tentei colocar resistores para o vcc e tambem para o gnd sem sucesso !

Comentário de José Gustavo Abreu Murta em 23 setembro 2018 às 11:46

Bom dia Victor,

Taxa de amostragem de que ? Se for do conversor ADC 12 bits é de :

- usando RTC controller = 200 Ksps

- usando DIG contorller = 2 Msps

https://www.espressif.com/sites/default/files/documentation/esp32_d...

Comentário de Victor Campos Lopes em 22 setembro 2018 às 23:15

Qual seria a taxa de amostragem do modelo DEVKIT ?? 

Comentário de Vitor Augusto em 17 fevereiro 2018 às 10:55

O site do Mongoose diz que a vantagem dele é ser voltado para aplicações críticas nas quais a confiança no app é importante. O trecho em inglês colei no final.

Então vejo que, na prática para protótipo, Arduino IDE é igual ao Mongoose. Mas se a ideia é fazer um hardware comercial, é mais vantagem o Mongoose.

Mongoose OS vs Arduino - what's the difference?

Arduino framework is built for makers to provide the simplest way to build hardware projects. Its architecture was not designed for commercial products. Generally, firmware built on Arduino framework is not reliable to run in production environment. Here is what our customers say: “We had a somewhat-working firmware based on the Arduino core, but it was too glitchy and unreliable. OTA often failed with a bricked device.” 

Mongoose OS is designed for commercial products where reliability is critical.

With Arduino having a vast number of drivers developed by the community, Mongoose OS has implemented an Arduino compatibility layer thus allowing to use the existing Arduino drivers for prototyping.

Comentário de SayidPef em 14 fevereiro 2018 às 11:25

achei relativamente fácil, ainda não o coloquei em pratica pois não encontrei uma utilidade específica ou uma oportunidade de utilizar, ou seja, não vi vantagens para substituir a Arduino IDE ou o PlatformIO por ele nesse momento.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço