Manual

do

Maker

.

com

Primeiros passos com ESP32 e algumas IDEs

Primeiros passos com ESP32 e algumas IDEs

Hora de dar os primeiros passos com ESP32

É tanta emoção que até pra escolher um título para o artigo foi difícil, mas acabou ficando claro que tinha que ser "Primeiros passos com ESP32". Eu não sabia por onde começar, de tantas coisas que me vem à cabeça. Sem exageros, esse ESP32 é insuperável! Como se não bastasse o ESP8266 não ter concorrentes a altura, surge o ESP32 com tanto poder que faz um simples maker como eu pirar. E aposto que você também está ensandecido para utilizar seus recursos. Damos conta? Sim, mas um passo por vez. Pensando desse modo,  vou gradativamente escrevendo artigos com o ESP32 disponível na AutoCore Robótica.

Vale a pena adquirir um ESP32?

Esse artigo é de junho de 2017, quando despontava a nova MCU da Espressif. Atualmente, recomendo PlatformIO com VS Code. Procure por "vs code" na Busca rápida.

Só posso te dar uma resposta para tal questionamento (se é que você o fez): Óbvio que vale. É muito poder de processamento e essa board rompe de vez as fronteiras entre o Arduino e, olhe lá se não substitui francamente boards com sistema Linux embarcado em diversos projetos!

Slave ou standalone?

Você pode utilizá-lo das duas maneiras, mas por favor, se for utilizá-lo como slave, não me conte para que eu não sofra. Um hardware desses não deveria jamais ser subutilizado desse modo. Deixe-me tentar explicar o porquê.

Características

Dessa vez temos não 1, mas 2 núcleos nesse processador da arquitetura Tensilica LX6. Com o ESP8266 temos apenas 1 núcleo que pode funcionar a 80MHz ou a 160MHz, mas sente-se para ler isso; o ESP32 roda a 240MHz! Precisa de memória para processar seu programa? Sem problemas, pois o ESP32 tem 512KB de SRAM!

Além do tradicional WiFi que funciona em modo AP e/ou Station, agora ele inclui um híbrido Bluetooth LE! E chega de falar que seu programa não cabe no ESP, pois dessa vez você conta com 16MB de flash.

O ADC está lá ainda operando na mesma tensão limite. Ele possui um sensor de efeito hall, 10 interfaces capacitivas de toque e um oscilador de 32kHz.

Precisa de GPIO? Ok, divirta-se com seus 32 GPIO! Ele inclui 3 UARTs, 3 SPI, 12 canais ADC (não mais 1, como o ESP8266), 2 DAC e 2 I²C. Ainda não está satisfeito? Ok. Ele tem PWM, timer, IN/OUT em cada um dos pinos de GPIO; entendeu isso? Em todos os pinos de GPIO!

Sabe aquela vontade de ter mais segurança no parque de hardwares da IoT? Então, sua vontade agora vai passar, por ele tem criptografia por hardware para AES e SHA2, com uma chave RSA de 4096 bits!

Ele tem mais alguns recursos que sequer conheço, então me ative ao que achei mais interessante, mas vale a pena dar uma olhada no overview do ESP32 no site da ESPressif.

Por onde começar?

Bem, como sempre cito, só utilizo Linux, então minhas dicas são voltadas a esse sistema, mas é muito parecido com o Windows. Para começar "leve", vamos adicionar o suporte à IDE do Arduino, certo?

Preparando o ambiente de desenvolvimento no Windows

Vou deixar apenas o link porque não tenho como testar isso, mas o procedimento parece bastante simples, basta seguir os passos descritos nesse link.

Adicionando suporte ao ESP32 na IDE do Arduino (Linux)

Você precisará adicionar seu usuário ao grupo dialout para não precisar abrir a IDE como root. Normalmente isso já está feito e você nem tem que se preocupar. Outra coisa necessária é a instalação do pip para instalar o pyserial ou ainda, instalação via apt. Seguindo mais ou menos a documentação da ESPressif, você pode fazer como eu fiz:

sudo usermod -a -G dialout $USER
sudo apt-get install git python-pip
sudo pip install pyserial
mkdir -p ~/Arduino/hardware/espressif
cd ~/Arduino/hardware/espressif 
git clone https://github.com/espressif/arduino-esp32.git esp32 
cd esp32/tools/ 
python get.py

Após, reinicie a IDE do Arduino e pronto.

Programar ESP32 com PlatformIO

Mais simples do que utilizar a IDE do Arduino e ainda contar com recursos extras, instalar o PlatformIO pode ser a solução perfeita para programar para o ESP32. Faça o download no site do PlatformIO, depois crie um novo projeto e selecione ESP32 na vasta lista de boards disponíveis.

Os passos para instalação são básicos:

1 - Faça o download do core.

2 - Baixe o conjunto de exemplos.

3 - Extraia os arquivos

4 - Rode essa sequência de comandos (ref: github):

# Entrar no diretorio de exemplo
> cd platform-espressif32/examples/espidf-hello-world

# construir o projeto
> platformio run

# Upload firmware
> platformio run --target upload

# construir ambiente
> platformio run -e esp32dev

# Upload firmware para o ambiente anteriormente criado
> platformio run -e esp32dev --target upload

# limpeza
> platformio run --target clean

Mas utilizando-o no Atom, você dispensa a utilização de linhas de comando. Então sugiro a IDE pronta para uso.

Utilizando a IDE CodeBlocks

Essa IDE também é multiplataforma. Tendo instalado o PlatformIO Core, você pode criar um projeto para manipular nessa IDE de maneira bem simples. Se você já instalou o PlatformIO IDE, não precisará instalar o PlatformIO Core. Apenas abra um terminal e digite:

platformio init --ide codeblocks --board ESP32

Depois, abra o CodeBlocks e adicione arquivos através do Menu Files->New->File... e compile o projeto através de Build->Build. Para fazer o upload do firware, use Build->Run. Modificações nas bibliotecas (adição, etc) não refletem na IDE. Para que estas surtam efeito, reinicie o PlatformIO no diretório atual:

platformio init

Isso gerará essa verbosidade:

The current working directory *** will be used for the new project.
You can specify another project directory via
`platformio init -d %PATH_TO_THE_PROJECT_DIR%` command.

The next files/directories will be created in ***
platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
src - Put your source files here
lib - Put here project specific (private) libraries
Project has been successfully initialized!
Useful commands:
`platformio run` - process/build project from the current directory
`platformio run --target upload` or `platformio run -t upload` - upload firmware to embedded board
`platformio run --target clean` - clean project (remove compiled files)

Para iniciar um novo projeto em um diretório específico:

platformio init -d diretorioEspecifico

E inicialize o projeto para a board:

platformio init --board esp32

Utilizando a IDE NetBeans

Eu gosto de utilizar a IDE NetBeans para programar o ESP8266 com o framework Sming.  Inclusive escrevi alguns artigos para utilizá-lo conectado a um docker. Para adicionar suporte ao ESP32 nessa IDE (agora sem container), você precisa ter o PlatformIO Core previamente instalado. Depois crie um diretório para o seu projeto e entre nele:

mkdir meuProjeto
cd meuProjeto
platformio init --ide netbeans --board esp32

Agora basta importar o projeto na IDE, abrindo-o em File->Project. Adicione arquivos para o diretório src clicnado com o botão direito na pasta src do painel Projects.

Para construir o firmware, use o menu Run->Build Project e para fazer o upload do firmware use Run->Run Project.

Sempre atente-se em fazer o init novamente toda a vez que atualizar alguma coisa relacionada às bibliotecas para que isso reflita no projeto atual.

Primeiro programa - PlatformIO

Para fazer o primeiro teste, utilizei o PlatformIO IDE, criando um novo projeto e selecionando a board NodeMCU-32S. Criei um diretório em meu home camado "esp32" e aguardei que a IDE fizesse download dos componentes necessários. Isso leval uns minutinhos.

O primeiríssimo teste foi criar um arquivo "teste.ino" dentro do diretório src e colocar somente a estrutura setup() e loop(), então compilei para ver se algo de estranho acontecia. Sem problemas. A partir daí, fiz o blink do LED onboard.

void setup(){
    pinMode(LED_BUILTIN,OUTPUT);
}

void loop(){
  delay(300);
  digitalWrite(LED_BUILTIN, LOW);
  delay(300);
  digitalWrite(LED_BUILTIN,HIGH);

}

Porque utilizei o PlatformIO invés da IDE do Arduino

Bem, uma coisa que me incomoda muito na IDE do Arduino é a falta de auto-complete. No PlatformIO ele não faz auto-complete dos comandos chave, exceto já tenha sido utilizado ao menos uma vez. Mas isso já ajuda bastante, por isso gosto de utilizá-lo. Aliás, prefiro qualquer IDE que não seja a do Arduino. Mas tenho certeza que muita gente prefere manter-se na rotina. Basta seguir o procedimento supracitado para implementar o suporte na IDE do Arduino e, do mesmo modo, selecione a board NodeMCU-32S no menu de boards e pronto.

Próximos artigos

Nos próximos artigos vou mostrar a utilização dos recursos do ESP32, manipulação dos rádios WiFi e BLE e em algum deles pretendo fazer testes comparativos de desempenho. Já vá adquirindo seu novo brinquedo para que possamos fazer juntos!

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.