top of page

Introdução ao ESP32

  • Foto do escritor: automatelabonline
    automatelabonline
  • 16 de fev.
  • 6 min de leitura

Atualizado: 21 de fev.

ESP32 é uma série de microcontroladores produzidas pela Espressif Systems. Contando com 512KB de SRAM e processamento de 160 ou 240 MHz, o foco das placas ESP32 é unir funcionalidade e baixo consumo de energia. Encontram-se versões single-core e, em sua maioria, dual-core. O ESP32 é muito utilizado para projetos de IoT e automação, pelo fato de possuir nativamente Wi-fi e Bluetooth. Os principais periféricos presentes são:

Até 18 Entradas Analógicas (ADC)

Capazes de ler tensões entre 0V e 3,3V, com uma resolução de 12 bits

2 Saídas Analógicas (DAC)

Possuem resolução de 8 bits, geram tensões analógicas reais

Até 16 canais PWM

Canais de Modulação por Largura de Pulso, simulam tensões analógicas, possuem resolução de 16 bits

Até 10 sensores de toque

Portas com detecção capacitiva

Diversas interfaces de comunicação

Interfaces para comunicação SPI, I2C, I2S e UART

Além disso, todos os pinos do ESP32 suportam interrupções, exceto a GPIO 6 e a GPIO11. As interrupções pausam o código quando alguma porta digital mudar de estado, e então executam uma determinada função. Essa funcionalidade é muito útil para criar sistemas que reagem em tempo real.

É importante ressaltar que existem diversos modelos de placas ESP32, cada um contando com pinagens e funcionalidades diferentes. Portanto, diferentes placas podem conter ou não determinadas funcionalidades. Um dos modelos mais comuns é o ESP32 devkit v1, que conta com 30 portas. Abaixo é mostrado um esquema dos pinos desse modelo.

Pinagem ESP32
  1. SPI

SPI (Serial Peripheral Interface) é um protocolo de comunicação que permite a criação de uma rede de comunicação entre o microcontrolador e diversos outros componentes. O ESP32 apresenta 3 interfaces para SPI, nomeadas como SPI, VSPI e HSPI. Cada uma delas utiliza 4 portas para realizar a troca de informações: MISO, MOSI, CS e CLK.

  1. I2C

I2C (Inter-Integrated Circuit) é outro protocolo de comunicação bastante utilizado para troca de dados entre microcontroladores e módulos. O ESP32 apresenta uma interface para comunicação I2C, sendo utilizados os pinos 22 (SCL) e 21 (SDA).

  1. UART

UART (Universal Asynchronous Receiver/Transmitter) é mais um protocolo de comunicação. O ESP32 contém 3 interfaces UART, sendo elas:

  • UART0 - Utilizada para upload do código e pela Serial. Utiliza os pinos 1 (TX) e 3 (RX). Esses pinos não podem ser alterados. Pode ser utilizada para comunicação com outros dispositivos, porém geralmente é utilizada apenas pelo monitor serial.

  • UART1 - Utilizada pela memória Flash. É necessário alterar seus pinos para ser utilizada para comunicação com outros dispositivos.

  • UART2 - Livre para uso. Utiliza os pinos 17 (TX) e 16 (RX). Esses pinos podem ser alterados.


  1. GPIO

Referem-se aos terminais do microprocessador ESP32. Nem todas as portas do processador estão disponíveis como pinos na placa. Dependendo da placa obtida, as GPIOs disponíveis podem mudar, porém sua função sempre será a mesma. Ou seja, algumas placas podem não ter a GPIO15, porém em todas que esse pino existir, sua função será a mesma.

É importante enfatizar que o ESP32 é apenas o chip microcontrolador, mostrado na imagem abaixo. Já o ESP32 devkit v1 é uma placa de desenvolvimento que utiliza o microcontrolador ESP32. Porém, para facilitar, a placa de desenvolvimento é comumente chamada apenas de ESP32.

Módulo ESP32-WROOM-32
  1. ADC

São as portas em que é possível realizar a conversão analógico / digital do sinal. É possível medir tensões entre 0V e 3,3V, com resolução de até 12 bits. Essa resolução pode ser alterada via código.

  1. TOUCH

Representam os pinos de toque capacitivos. Esses pinos conseguem detectar quando carga capacitiva, por exemplo um dedo, se aproxima. Podem ser utilizados como entradas digitais ou para despertar o ESP32 do modo de economia de energia.

  1. DAC

São as saídas analógicas verdadeiras da placa. Geram uma tensão analógica entre 0V e 3,3V com 8 bits de resolução. Os pinos com essa função são o 25 e o 26.

  1. Pinos de Alimentação

Existem 3 maneiras de alimentar o ESP32:

  1. Através dos 5V do cabo USB.

  2. Utilizando 3,3V no terminal 3V3.

  3. Utilizando entre 3,3V e 12V no pino Vin.

O ESP32 possui uma fonte reguladora de tensão no pino Vin, que suporta até 12V. Porém, não é recomendado utilizar tensões tão altas, sendo o máximo recomendado 5V.

Caso opte por alimentar a placa pelo Vin ou pelo USB, o pino 3V3 representará a tensão já regulada, ou seja, será 3,3V. Esse pino pode ser utilizado como uma fonte auxiliar para alimentar outros componentes.

  1. Enable

O pino de Enable (ativação) possibilita o reinicio da placa. Ao conectar esse pino ao GND, ele desativa a fonte reguladora de tensão e deliga a placa.

  1. PWM

O pinos de PWM (Pulse Width Modulation) permitem a modulação por largura de pulso do sinal. O sinal de saída é alternado entre 3,3V e 0V com uma frequência alta. A proporção de tempo que o sinal permanece em 3,3V indica a tensão de saída. Por exemplo, se o sinal ficar 50% do tempo em 3,3V e os outros 50% em 0V. A tensão de saída será 1.65V, metade de 3,3V. Com isso, esses pinos simulam saídas analógicas, que para muitos casos já é o suficiente.

  1. Botões

As placas ESP32 possuem dois botões, denominados EN e BOOT. O botão de EN curto circuita o pino enable com o GND, fazendo a placa reiniciar. Já o botão BOOT faz a placa entrar em modo de download. Algumas vezes, pode ser necessário segurar esse botão durante o upload do código.


Programando o ESP32

Para programar o ESP32, vamos utilizar o software Arduino IDE. Temos um tutorial de como preparar o seu ambiente de programação para as placas ESP32 aqui no site, você pode acessá-lo por esse link.

Ao iniciar o programa, um projeto novo será criado.

Novo Projeto Arduino IDE

Nesse projeto, existem duas funções (void), A função setup() irá ser executada apenas uma vez, quando a placa for ligada. Nessa função, são feitas as configurações iniciais da placa. Já a função loop() irá executar repetidamente durante o funcionamento da placa.

Vamos criar um código simples, em que o ESP32 escreva a mensagem "Hello World!" a cada 1 segundo pelo monitor serial.

void setup() { // código que irá rodar apenas 1 vez
  Serial.begin(9600); // inicia a Serial com baudrate de 9600 bps
}

void loop() { // código que será executado repetidamente
  Serial.println("Hello World!"); // escreve "Hello World!"
  delay(1000); // Espera 1 segundo
}

Explicando o Código

Na função setup, que executa apenas uma vez ao iniciar a placa, existe a seguinte linha de código.

 Serial.begin(9600);

Essa linha inicia o monitor Serial, ou seja, a comunicação entre o ESP32 e o computador. o número entre parênteses, 9600, representa o baudrate da comunicação. O baudrate, em termos simples, é a taxa de transmissão de dados. Ou seja, quanto maior o baudrate, mais rápida tende a ser a comunicação entre ESP32 e computador.

Já na função loop, existem duas linhas.

Serial.println("Hello World!");

Essa linha envia a mensagem "Hello World!" pela Serial. A função Serial.println() adiciona uma quebra de linha ao final da mensagem. Ou seja, A próxima mensagem enviada será mostrada na linha de baixo. Caso isso não for desejado, é necessário utilizar a função Serial.print() apenas. Desse jeito, a quebra de linha não será adicionada.

A próxima linha chama a função delay().

delay(1000);

Essa função faz o ESP32 esperar determinado tempo para prosseguir com a execução. O tempo é passado em milissegundos. Nesse caso, 1000ms = 1s, ou seja, a placa irá esperar 1 segundo para continuar com o programa.


Executando o Código

Clicando no botão de seta, no canto superior esquerdo, o código será passado para sua placa. Certifique-se que o modelo de placa e a porta serial estejam corretas para o upload do código. Caso tenha alguma dúvida, verifique o tutorial desse link.

Passando o código para ESP32 no Arduino IDE

Para abrir o monitor serial e verificar as mensagens enviadas pelo ESP32, basta clicar em Ferramentas -> Monitor Serial no menu superior.

Abrindo Monitor Serial no Arduino IDE

Com isso, o monitor serial irá abrir na parte inferior do Arduino IDE. Lá será possível ver as mensagens aparecendo a cada 1 segundo, conforme configurado no código. Certifique-se que o Monitor Serial esteja configurado com mesmo baudrate que a placa, isso pode ser configurado no canto direito da aba Monitor Serial.

Rodando o Código no Arduino IDE

Conclusões

O ESP32 é, sem dúvida, uma das placas mais poderosas e versáteis disponíveis no mercado, oferecendo recursos impressionantes como Wi-Fi, Bluetooth, múltiplos núcleos de processamento e uma vasta gama de periféricos. Essa combinação de desempenho e conectividade torna o ESP32 uma escolha excelente para quem deseja explorar o mundo da automação e da Internet das Coisas (IoT).

Aprender a programá-la abre um leque de possibilidades, desde projetos simples de automação residencial até sistemas mais complexos e conectados. Com o conhecimento sobre o ESP32, você estará pronto para criar soluções inovadoras, integrar dispositivos e melhorar a eficiência de processos. Esse aprendizado não apenas aumenta as suas habilidades em eletrônica e programação, mas também coloca você na vanguarda das tecnologias que estão moldando o futuro da automação.

Comments


bottom of page