ESP8266 PlatformIO

O PlatformIO

O ambiente de desenvolvimento recomendado pelo fabricante Expressif é o PlatformIO que facilita a criar e manter os projetos provendo scripts para automatizar as tarefas de desenvolvimento e também provê recursos para agilizar a codificação.

O link para o PlatformIO é https://github.com/platformio/platform-espressif8266/tree/master

Este tutorial está baseado no tutorial de https://docs.platformio.org/en/latest/ide/vscode.html#quick-start

Link para SDKs e Demos da Espressif https://www.espressif.com/en/products/hardware/esp8266ex/resources

Instalação do VSCode

O PlatformIO atualmente é implementado em cima do VSCode como extensão.

Para configurar PlatformIO no Windows, temos que instalar o editor de textos VSCode que pode ser baixado no site https://code.visualstudio.com/.

Na página principal, temos o botão "Download" para baixar a versão compatível com o seu sistema operacional (o site detecta o seu sistema operacional automaticamente). Basta baixar e instalar como qualquer outro aplicativo simples. Pronto!!! Seu VSCode está instalado.

Instalação alternativa

Apesar da página principal, temos a página de download para prover diferentes instaladores do Windows. Verificamos que há versão do VSCode em arquivos *.zip que é um aplicativo que pode ser instalado apenas descompactando o arquivo instalador em um diretório específico. Este é o meu modo preferido pois eu gosto muito de poder ter um ambiente de desenvolvimento completo guardado em um diretório, dentro da própria pasta de cada projeto. Assim, se no futuro eu tiver que voltar a dar manutenção neste projeto, já tenho o ambiente correto disponível em poucos minutos. Além de poder guardar a versão exata do ambiente em que o projeto é desenvolvido, o VSCode não interferirá no funcionamento normal do Sistema Operacional enquanto não estiver sendo utilizado e não provocará problemas irreversíveis.

Para baixar a versão compactada ao invés do instalador, basta seguir o link "Other platforms", que no caso atual está apontando para os arquivos da versão estável.

Baixe o .zip para 32 bits ou para 64 bits. Crie um diretório para conter o VSCode, no meu caso ficou dentro de C:\PortableApps\OtherApps\VSCode\VSCode-1.30.2-64

Salve e descompacte o arquivo baixado dentro da pasta e execute o arquivo Code.exe

O seu VSCode está instalado!!!

Instalação do PlatformIO no VSCode

As instruções no site do PlatformIO, as instruções são simples (orientem-se pela figura abaixo):

  1. Na barra lateral, clique no ícone Extensions (Crtl+Shift+X);
  2. Na barra de pesquisa, entre com a palavra "platformio-ide";
  3. No conteúdo apresentado após a pesquisa, clique no botão "Install", referente ao PlatformIO IDE;
  4. Após um tempo, vai perceber que no sino, embaixo a direita, há uma notificação solicitando para reiniciar o VSCode (Restart the window);
  5. Ao reiniciar, será adicionado o ícone do PlatformIO embaixo do ícone do Extensions.

Pronto!!! PlatformIO instalado.

Agora, recomenda-se consultar o guia de início rápido (inglês) para ter um ótima referência.

No meu caso, eu já tinha uma versão do PlatformIO instalado quando usei na IDE Atom e ao abrir o VSCode pela primeira vez, o PlatformIO já se instalou sozinho automaticamente.

Primeiro, ele instalou a extensão C/C++. Segue o log abaixo:

June 2018 Update
Thank you for installing the C/C++ extension. In the June update, we focused on workspace configuration improvements.
We dramatically improved the performance of recursive includes (e.g. using ${workspaceFolder}/** in your includePath), we will prompt you to use compile_commands.json if it is found in your workspace, and we made the browse.path setting optional in the case that it is identical to your includePath.

Depois na aba Outputs, apareceu o seguinte log:

Installing PlatformIO Core...
Please do not close this window and do not open other folders until this process is completed.
PlatformIO IDE installed successfully.

Instalação do MSYS2

  1. Consultar a página da Espressif https://docs.espressif.com/projects/esp-idf/en/latest/get-started/windows-setup.html e baixar o instalador do MSYS2 no link desta página: https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20181001.zip.
  2. Descompactar e salvar em C:\.
  3. Rodar o mingw32.exe para entrar no ambiente do ming.
  4. Criar o diretório esp: mkdir -p ~/esp e ir para dentro dela: cd esp.
  5. Verifique qual é o último release do esp-dif em https://github.com/espressif/esp-idf/releases
  6. Baixar o esp-idf com o comando: git clone -b v3.1.3 --recursive https://github.com/espressif/esp-idf.git.
  7. Encerrar o ambiente com o comando: exit.
  8. Criar em C:/msys32/etc/profile.d/ o arquivo export_idf_path.sh. Escrever: export IDF_PATH="C:\msys32\home\<usuario>\esp\esp-idf" e salvar.
  9. Rodar o mingw32.exe e testar usando o comando: printenv IDF_PATH.
  10. Verificar a versão do phyton: python --version.
  11. Execute o comando para atualizar: python -m pip install --upgrade pip
  12. ==> pacman -R catgets
  13. ==> pacman -R libcatgets
  14. ==> $IDF_PATH/tools/windows/windows_install_prerequisites.sh
  15. ?==> pacman -Syu
  16. ?==> pacman -Su
  17. Executar o comando: python2.7 -m pip install --user -r $IDF_PATH/requirements.txt. Pode haver problemas com a versão do pip, então,
  18. Copie o projeto exemplo hello_world de C:\msys32\home\<usuario>\esp\esp-idf\examples\get-started para C:\msys32\home\<usuario>\esp
  19. Dentro da pasta do projeto: cd ~/esp/hello_world, execute o comando: make menuconfig Config Serial. Ao sair do aplicativo do menu, espere a execução do script de instalação de pendências.
  20. Execute o comando: make flash

Primeiro projeto Arduino usando PlatformIO

Criando o primeiro projeto Arduino no VSCode

Criando o primeiro projeto RTOS no VSCode

Abrindo o VSCode

Vá até o diretório onde foi descompactado o VSCode e execute o arquivo Code.exe.

Criando o projeto

Clique no ícone do PlatformIO no menú vertical esquerdo e clique no botão "+ New Project"

Entre com o nome do seu projeto, escolha o seu módulo e qual o tipo de código base (Arduino). Clique o botão Finish.

Será criada a estrutura de um projeto da plataforma Arduíno.

Edite o arquivo main.cpp do mesmo jeito que faria ao editar um sketch na IDE do Arduino.

Verifique as seguintes figuras:

Esta é a barra de ferramentas do PlatformIO que é exibida ao editar o código do seu ESP8266. Ela contém (da esquerda para a direita):

  • Mostra a quandidade de erros
  • Mostra a quantidade de alertas
  • Abre a página Home do PlatformIO
  • Compila o código
  • Compila e envia o código ao ESP8266
  • Envia o código a um dispositivo remoto
  • Limpa o ambiente eliminando arquivos desnecessários
  • Testa o projeto
  • Roda scripts que executam comandos mais específicos
  • Abre o Monitor Serial
  • Abre um terminal
#include <Arduino.h>
void setup() {
  // put your setup code here, to run once:
  pinMode(BUILTIN_LED, OUTPUT);
}
void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(BUILTIN_LED, !digitalRead(BUILTIN_LED));
  delay(1000);
}

Compile ou envie o código para o seu ESP8266 usando os ícones na barra de ferramentas embaixo

Pronto! Seu ESP8266 deverá estar com o seu LED interno piscando!!!

Primeiro projeto Non-OS usando PlatformIO

Para que o VSCode funcione corretamente com os Kits da Expressif, será necessário criar o ambiente compatível GNU.

Será necessário is á página da Expressif "Standard Setup of Toolchain for Windows" e baixar o arquivo contendo "Windows all-in-one toolchain & MSYS2", descompactar e salvar em um local apropriado. Pode ser uma pasta C:\projetos\projeto001\msys2

Crie uma pasta chamada esp dentro deste diretório: C:\projetos\projeto001\msys2\esp

Note que é criada uma pasta com o nome do usuário (que chamaremos de yourusername) corrente do Windows dentro de C:\projetos\projeto001\msys2\home que no meu caso é Administrador. Dentro desta pasta, há um arquivo chamado .bash_profile.

Edite o arquivo .bash_profile arrastando-o em cima do VSCode. Adicione as linhas no final do arquivo:

export PATH="$PATH:$HOME/esp/xtensa-esp32-elf/bin"
export IDF_PATH="$HOME/esp/esp-idf"

Execute o mysys2 clicando em cima do arquivo mingw32.exe.

Entre com o comando printenv IDH_PATH para conferir que o arquivo foi editado corretamente.

Entre com o comando cd esp para mover para o diretório esp.

Execute o comando abaixo para obter o ESP-IDF

Este comando está explicado na página Get ESP-IDF

======== tentativa

Ambiente pré construído para windows: https://docs.espressif.com/projects/esp-idf/en/latest/get-started/windows-setup.html

export_idf_path.sh

https://docs.espressif.com/projects/esp-idf/en/latest/get-started/windows-setup-scratch.html

Rode o script ../esp/esp-idf/tools/windows/windows_install_prerequisites.sh

========

Copie a pasta hello_world que está dentro da pasta C:\ito\apps\tool\msys32\home\Administrator\esp\esp-idf\examples\get-started para a pasta C:\ito\apps\tool\msys32\home\Administrator\esp

Pelo mysys2, vá até a pasta hello_world e execute o comando make menuconfig

Vá para a opção Serial Flasher Config --->

Selecione a porta default para editar, apague a entrada /dev/ttyUSB0 e entre com a COM em que seu ESP8266 está conectada

Altere o baud rate caso necessário. Recomendo 921600 baud

Retorne 1 nível selecionando <Exit>

Entre no ítem Component Config --->

Entre no ítem ESP32-specific --->

Entre no ítem CPU Frequency (160 MHz) --->

Altere para 240 MHz e vá saindo prestando atenção para Salvar as alterações quando for questionado.

No prompt do msys2, dê os comandos:

  • make flash (compila e envia o código para o dispositivo) gerou uma mensagem solicitando instalar os pacotes future >=0.15.2 e cryptography>=2.1.4
  • pacman -Syu (atualiza pacotes do phyton) Execute diversas vezes até que não haja mais atualizações
  • pacman -Su - para confirmar todos os pacotes
  • pacman -S git - para confirmar se o git está atualizado
  • pacman -Ss future - para confirmar que o pacote está disponível
  • pacman -S mingw-w64-i686-python2-future - Instala o pacote faltante
  • pacman -Ss cryptography - para confirmar que o pacote está disponível
  • pacman -S mingw-w64-i686-python2-cryptography - Instala o pacote faltante
  • make flash (compila e envia o código para o dispositivo) ainda pediu o pacote cryptography
  • Rode os scripts: C:/ito/apps/tool/msys32/mingw32/bin/python.exe -m pip install --user -r C:/ito/apps/tool/msys32/home/Administrator/esp/esp-idf/requirements.txt
  • verifique .bash_profile:

export PATH="$PATH:$HOME/esp/xtensa-esp32-elf/bin:$HOME/.local/bin"

export IDF_PATH="$HOME/esp/esp-idf"

export SDK_PATH="$HOME/esp/ESP8266_RTOS_SDK-3.1"

Configuração do VSCode

Vá até o GitHub da VirgiliaBeatrice na URL abaixo:

https://github.com/VirgiliaBeatrice/esp32-devenv-vscode/blob/master/tutorial.md


Criando o primeiro projeto RTOS no VSCode

Abrindo o VSCode

Vá até o diretório onde foi descompactado o VSCode e execute o arquivo Code.exe.

Criando o projeto

Clique no ícone do PlatformIO no menú vertical esquerdo e clique no botão "+ New Project"

Entre com o nome do seu projeto, escolha o seu módulo e qual o tipo de código base (ESP8266 Non-OS SDK). Clique o botão Finish.

Verifique as seguintes figuras:

O novo arquivo dentro da pasta src deve se chamar user_main.c

Entre com o código abaixo para realizar o primeiro teste.

/*
This example code is in the Public Domain (or CC0 licensed, at your option.)
Unless required by applicable law or agreed to in writing, this
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "esp_system.h"
/**************************************************************************
* FunctionName : app_main
* Description : entry of user application, init user function here
* Parameters : none
* Returns : none
**************************************************************************/
void app_main(void)
{
printf("SDK version:%s\n", esp_get_idf_version());
}

Ambiente compatível GNU MSYS2

https://docs.espressif.com/projects/esp-idf/en/stable/get-started/windows-setup.html

Download arquivo esp32_win32_msys2_environment_and_toolchain-20180110.zip

do link https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20180110.zip

Primeiro projeto RTOS usando PlatformIO

Criando o primeiro projeto RTOS no VSCode

Abrindo o VSCode

Vá até o diretório onde foi descompactado o VSCode e execute o arquivo Code.exe.

Criando o projeto

Clique no ícone do PlatformIO no menú vertical esquerdo e clique no botão "+ New Project"

Entre com o nome do seu projeto, escolha o seu módulo e qual o tipo de código base (ESP8266 RTOS SDK). Clique o botão Finish.

Verifique as seguintes figuras: