ESP32 Microcontrolador com WiFi e Bluetooth Integrados

Este post é destinado para as pessoas que querem dar um passo a mais no mundo maker com o ESP32 pois busca opções mais robusta de microcontroladores ao invés do Arduino.

Aplicações

  • IoT;
  • Automação Industrial;
  • Malha de rede;
  • Agricultura Inteligente;
  • Eletrônicos vestíveis;
  • Monitoramento por câmera.

ESP32 Especificações

  • Voltagem de Trabalho: 3V a 3,6V;
  • WiFi
    • Protocolos:
      • 802.11 b/g/n (802.11n up to 150 Mbps);
      • A-MPDU and A-MSDU aggregation and 0.4 µs guard interval support.
    • Faixa de Frequência: 2,4GHz a 2,5GHz.
  • Bluetooth
    • Protocolo: Bluetooth v4.2 BR/EDR and BLE specification;
    • Radio:
      • NZIF receiver with –97 dBm sensitivity;
      • Class-1, class-2 and class-3 transmitter;
      • AFH.
    • Áudio: CVSD and SBC;
  • Consumo:
    • 300uA Funcionando;
    • 0,1uA Standby.
  • Tamanho: 18mm x 25,5mm x 3,10mm;

Periféricos

  • 34 × GPIOs programáveis;
  • SAR ADC de 12 bits até 18 canais;
  • DAC 2 × 8 bits;
  • 10 × sensores de toque;
  • 4 × SPI;
  • 2 × I²S;
  • 2 × I²C;
  • 3 × UART;
  • 1 host (SD / eMMC / SDIO);
  • 1 escravo (SDIO / SPI);
  • Interface Ethernet MAC com DMA dedicado e suporte IEEE 1588;
  • Interface automotiva de dois fios (TWAI®, compatível com ISO11898-1);
  • IR (TX / RX);
  • Motor PWM;
  • LED PWM até 16 canais;
  • Sensor Hall.

Peculiaridades

O ESP32 é um chip porém a própria fabricante vende principalmente o modelo ESP32 WROOM que basicamente é um “embarcado” com os componentes mínimos necessários para seu funcionamento.

ESP32 Modules and Boards — ESP-IDF Programming Guide v3.1.7-73-g2060ee9a5  documentation

Entretanto, o modelo de placa mais comum no mercado é o ESP32 Dev Module que basicamente é uma placa com conversor USB para Serial, regulador de tensão e alguns componentes complementares.

Conhecendo o ESP32 – Primeiros contatos (2) – Blog do Gustavo Murta

Uma das maiores vantagens desse microcontrolador é sem duvidas a quantidade de recursos que ele tem integrado em apenas um chip, no qual torna sua aquisição muito vantajosa, veja o bloco esquemático a baixo do chip:

Diagrama de Bloco do ESP32

São tantas características únicas desse sensor que é preciso listar e falar de cada um separadamente em outras postagens, porém o que se destaca mais de todas são o WiFi/Bluetooth, Real Time Clock (RTC) e um dos mais interessantes é dois núcleos de processamento o que possibilita o desenvolvimento de projetos mais complexos que precisam de multiprocessamento.

Leitura ESP32 ADC

O conversor analógico digital (ADC) do ESP32 tem uma resolução de 12bit o que chega a encantar alguns usuários, no entanto o ADC do ESP32 pode ser uma grande dor de cabeça para projetos que necessitem de uma precisão, pois o próprio datasheet informa que a tem uma diferença de variação de +/- 6% na leitura entre os chips.

esp32 adc
esp32 a/d

O ADC do ESP32 é sensível a ruído por isso o gráfico acima mostra a leitura ADC sem o capacitor (pontos branco), com capacitor de 0,1uf (pontos amarelo) e o mais estável é com o uso de capacitor e Multisampling (pontos azul). Tem outras formas de calibração do conversor AD porém isso é um assunto para outra postagem mas quem tiver curiosidade é só clicar aqui para acessar a documentação da Espressif.

Dimensões ESP32 Wroom

Existem inúmeras modelos do ESP32 no mercado, no entanto, seria quase impossível dimensionar todas em um único post. Portanto, a solução é usar o mais comum do mercado é o ESP32 WROOM com antena na própria placa de circuito impresso, tendo um dimensionamento de 18mm x 25,5mm x 3,10mm.

ESP32 Wroom dimensões

Diagrama Esquemático ESP32 Dev Module

De antemão, como o ESP32 Dev Module é o modelo que é usado para desenvolvimento como o próprio sugere, não haverá a necessidade de demonstrar o diagrama do Wroom, no entanto, caso tenha curiosidade é só clicar aqui e colocar na página 19 do datasheet.

As placas que usadas para prototipagem tem um conversor USB para Serial CP2102N, um regulador de tensão AMS1117 3v3 com input menor ou igual 12v e maior ou igual a 4v7 com até 1A e alguns componentes ativos e passivos complementares.

Diagrama esquemático ESP32 Dev Module

ESP32 Pinout

ESP32 DEVKIT V1 DOIT board with 36 pins Pinout

Como instalar o ESP32 na IDE do Arduino?

O ESP32 não é uma placa padrão do Arduino e por esse motivo não vem junto com a IDE, para resolver esse problema é só seguir os passos a seguir:

Instalação do ESP32 na IDE do Arduino.

Selecione o textbox da imagem abaixo marcado com a cor amarela e insira este link: https://dl.espressif.com/dl/package_esp32_index.json depois clique no botão ‘OK’.

Adicionar URL para baixar o ESP32 e fazer a instalação no Arduino IDE

Feito o passo acima é só ir em ferramentas, placa e selecionar opção gerenciador de placas como na imagem abaixo:

Adicionar ESP32 via gerenciador de placas no Arduino IDE

Esse é o ultimo passo para a instalação completa do ESP32 na IDE do Arduino. Após fazer a tarefa anterior, é só clicar no textbox e digitar “ESP32” que irá aparecer “esp32 by Espressif Systems”, clique no botão instalar. Pronto, instalação concluída e deve ficar como na imagem abaixo:

Instalado ESP32 no Arduino IDe

Primeiro Teste Pratico “Hello World”

O ESP32 não é como o Arduino que é só plugar e gravar o código, mas ESP32 precisa de uma atenção maior.

Diagrama ESP32 e LED

Primeiros passos Hello World ESP32 pisca LED.

Código

const int pin = 13;                                                             // 'pin' representa a porta do 

void setup() {
  Serial.begin(115200);                                                         // Define a baudrate de 115200
  pinMode(pin, OUTPUT);                                                         // Habilita G13 como saida 
}

void loop() {
  digitalWrite(pin, HIGH);                                                      // Liga o pino G13
  Serial.println("on");                                                         // Imprime mensagem "on" na serial
  delay(500);                                                                   // Atraso de meio segundo
  digitalWrite(pin, LOW);                                                       // Desliga o pino G13
  Serial.println("off");                                                        // Imprime mensagem "off" na serial
  delay(500);
}

Selecionar Modelo para Compilação ESP32 Dev Module

Clique em ferramentas, depois placa, depois selecione a opção ESP32 Dev Module e mantenha as configurações padrão da segunda imagem abaixo.

Selecionando o ESP32 Dev Module na IDE do Arduino
Configurações para compilação e gravação para o ESP32
,

Exportação do Código

Quando o ESP32 é novo nas primeiras gravações não se torna necessário fazer o seguinte processo, entretanto, conforme o uso acaba sendo obrigatório.

Gravação do ESP32 Dev Module, cuidados e erros durante esse processo. Timed out waiting for packet header

Perceba que na imagem acima fica aparecendo uns pontilhados “…..____…..____…..___” esse comportamento é basicamente um “aguardo do modo boot” e isso fica até um determinado período de tempo, caso não entre no modo boot vai aparecer a seguinte mensagem: Timed out waiting for packet header.

Para resolver o problema acima é só pressionar o botão boot até que os pontilhados e tracejados sejam interrompidos, logo em seguida será exibido um monte de mensagens de upload quando isso ocorrer poderá soltar o botão de boot.

Funcionamento

O funcionamento a seguir é apenas demonstrativo mas há uma ótima aplicação do ESP32 aqui no site que é com o Aplicativo Orion que foi feito para facilitar a construção de uma estação meteorológica, no qual é usado para se comunicar com o servidor.

Considerações

Contudo, o ESP de fato é um ótimo microcontrolador para inúmeras aplicações por ser carregado de funcionalidades que facilitam para o desenvolvedor. Entretanto, sua leitura ADC não é o das melhores e acaba sendo seu principal ponto negativo, embora tenha métodos de solucionar.