30 novembro 2017

Como programar o módulo ESP32 com IDE Arduino

Praticamente todo mundo já ouviu falar do ESP8266, um chip voltado para aplicações envolvendo  rede wifi. Os módulos que usam o ESP8266 se popularizaram rapidamente e hoje temos vários modelos como o NodeMCU, ESP-01, ESP-07 e por aí vai. Hoje vamos ver como programar o sucessor do ESP8266, o módulo ESP32 (abaixo).


Veremos abaixo que o ESP32 é um módulo poderoso, possuindo wifi e bluetooth embutidos. Como o ESP8266, deve ganhar muitas variações, e já existem no mercado módulos ESP32 com display oled embutido, por exemplo. Pela sua capacidade, podemos esperar muitas novidades em breve.

O módulo ESP32


O ESP32 é um componente de baixo custo e alta performance, que se caracteriza por ser um SOC (System on a Chip) contendo microcontrolador, wifi e bluetooth BLE integrados. O ESP32 foi desenvolvido pela Espressif Systems e tem configurações bem interessantes:

  • CPU: Microprocessador Xtensa dual-core (or single-core) 32-bit LX6 microprocessor, operating at 160 or 240 MHz and performing at up to 600 DMIPS
  • Ultra low power (ULP) co-processor
  • Memory: 520 KiB SRAM
  • Wi-Fi: 802.11 b/g/n/e/i
  • Bluetooth: v4.2 BR/EDR and BLE
  • 12-bit SAR ADC up to 18 channels
  • 2 × 8-bit DACs
  • 4 × SPI
  • 2 × I2S interfaces
  • 2 × I2C interfaces
  • 3 × UART
  • Wake up from GPIO interrupt, timer, ADC measurements, capacitive touch sensor interrupt

E esses são só alguns dados. Uma lista completa das características do ESP32 você encontra no datasheet do componente.

Falando especificamente do módulo ESP32, este que vamos usar é semelhante (fisicamente) ao já conhecido ESP8266 NodeMCU ESP-12, um módulo muito popular da linha ESP8266.

Como o NodeMCU, o módulo ESP32 tem um conector micro USB para alimentação e programação, botões RST e BOOT, além de um regulador de tensão. A memória é de 4MB e no módulo que estou testando o conversor serial USB-TTL é o CP2102.

Programando o ESP32 com IDE Arduino


Vamos testar o ESP32 executando o famoso "blink led" (piscar o led, em bom português). O programa em si é o que menos importa, já que configurar a IDE  do Arduino para programar o ESP32 requer uma certa dose de atenção para não fazermos coisa errada.

Vamos então aos passos, lembrando que estou usando o Windows 10 nesse tutorial.

1 - Instale a IDE do Arduino (se você já não tem, pode encontrá-la no site oficial do Arduino)

2 - Faça o download do Git neste link e em seguida instale o programa (não alterei nenhuma opção durante a instalação, deixei tudo no padrão sugerido pelo instalador). Ao final, selecione a opção Launch Git Bash e clique em Finish:

GIT Setup

3 - Será então exibida a seguinte janela. Nela, digite o comando "git gui" e pressione ENTER:

GIT bash

4 - Na janela Git GUI, selecione Clone Existing Repository:

GIT Gui

5 - Na janela seguinte, preencha os campos Source Location e Target Directory:

Source Location: https://github.com/espressif/arduino-esp32.git

O campo Target Directory pode variar, dependendo de como foi configurada a sua IDE, mas geralmente a pasta é C:\users\[usuario]\Documents\Arduino. Você pode encontrar essa informação dentro da IDE do Arduino, no menu Arquivo => Preferências:

IDE Arduino - Preferencias

O campo Target Directory é formado pelo caminho mostrado em "Local do Sketchbook" mais \hardware\espressif\esp32. No meu caso então, o campo ficou assim:

Target Directory: C:\Users\Adilson\Documents\Arduino\hardware\espressif\esp32

Git Clone Repository

Após preencher os campos, clique em Clone e aguarde o download e instalação dos arquivos.

6 - Vá até a pasta [Local do Sketchbook]\hardware\espressif\esp32\tools e execute o arquivo get.exe:

Pasta ESP32 Tools
Aguarde o download e descompactação dos arquivos:

Get.exe final

7 - Ao término do processo, você deve ter os arquivos abaixo na pasta:

Pasta atualizada

8 - Hora de conectar o módulo ESP32 na porta USB e aguardar a instalação dos drivers. No meu computador, pelo gerenciador de dispositivos vejo que foi adicionado um dispositivo chamado Silicon Labs CP210x USB to UART Bridge na porta COM6:

Device Manager ESP32 at COM6

Se precisar dos drivers para o CP2102, recomendo este link.

9 - Inicie a IDE do Arduino e no menu Ferramentas => Placa selecione ESP32 Dev Module:

IDE Arduino - ESP32 Dev Module

10 - Ainda no menu Ferramentas, selecione a porta COM do módulo. No meu caso, a porta COM6.

11 - Carregue o programa exemplo "blink" na IDE do Arduino, alterando a porta de LED_BUILTIN para a porta 5. O blink está no menu Arquivo => Exemplos => Basics. Seu programa vai ficar assim:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
void setup()
{
  pinMode(5, OUTPUT);
}

void loop()
{
  digitalWrite(5, HIGH);
  delay(1000);
  digitalWrite(5, LOW);
  delay(1000);
}

12 - Conecte um led na porta 5 do módulo ESP32 (coloque a perna mais comprida do led na porta 5 e a perna mais curta na porta GND)

Circuito módulo ESP32 e led

13 - Transfira o programa para o ESP32. Alguns tutoriais dizem para pressionar o botão BOOT durante o carregamento do programa, mas no módulo que estou usando não foi necessário. Em alguns instantes, o led conectado ao ESP32 será acionado em intervalos de 1 segundo.

Aguarde pois em breve teremos outros posts sobre o ESP32.

8 comentários:

  1. Alguém sabe informar se o ESP 32 consegue trabalhar ao mesmo tempo com Bluetooth e Wi-Fi ativos ?

    ResponderExcluir
    Respostas
    1. Oi Luís,

      Muito interessante a sua pergunta. Aparentemente funciona sim. Dê uma olhada neste link, por favor:

      https://www.esp32.com/viewtopic.php?t=847

      Abraço!

      Adilson

      Excluir
  2. Respostas
    1. Esse especificamente não tem, mas em breve a Filipefop terá módulos ESP32 com LORA, aguarde. :)

      Abraço!

      Adilson

      Excluir
  3. Boa tarde!!!
    sua explicação foi muito bem detalhadas gostei muito; mas não consegui estala pois quando vou na pasta esp32 esta vazia ou quando parece que vai estalar da erro de ramificação.

    ResponderExcluir
    Respostas
    1. Boa noite,

      Obrigado pela visita. Ele apresenta algum erro de download dos pacotes?

      Abraço!

      Adilson

      Excluir
  4. Conseguimos fazer com que este equipamento torna-se um botão de pânico?
    Ex: uma pessoa está precisando de ajuda, aí ela aciona este botão, aí chegaria uma mensagem de alerta para uma tal "prestadora de serviço".
    Se existir, teremos que ter algum equipamento (roteador portátil) para fazer com que esse equipamento possa se comunicar com a central?

    ResponderExcluir
    Respostas
    1. Boa tarde,

      É possível sim. Você vai precisar de uma conexão com o roteador, se for usar no modo wifi.

      Abraço!

      Adilson

      Excluir