PlatformIO – Uma alternativa ao Arduino IDE

Durante o inicio do aprendizado de programação com o Arduino, é comum a utilização da IDE padrão, fornecida pelos desenvolvedores da plataforma. Conforme a experiencia vai aumentando, algumas limitações da ferramenta ficam mais visíveis, fazendo-se necessário optar por outras ferramentas mais avançadas e com mais recursos.

Hoje vamos mostrar uma ferramenta que dispõe de inúmeros recursos interessantes, a PlatformIO.
O platformio é um sistema de build, cross-platform e com integrações com as seguintes plataformas:

  • Atmel AVR
  • Atmel SAM
  • Espressif (ESP8266)
  • Freescale Kinetis
  • Nordic nRF51
  • NXP LPC
  • Silicon Labs EFM32
  • ST STM32
  • Teensy
  • TI MSP430
  • TI TIVA

O suporte às placas de desenvolvimento é incrivel, totalizando mais de 200 placas diferentes.

Instalação

Para instalar a plataforma, que tem suporte para Mac, Windows e Linux, vamos primeiro instalar o CLI-Tool (Command Line Tool).

Requerimentos:

Python 2.6 ou 2.7 (recomendado)

Instalando o platformIO

Para instalar o CLI, basta instalar com o seguinte comando (Mac/Linux/Windows):

pip install -U platformio

Alternativa

Existe um script de instalação que permite automatiza o processo. Para instalar pelo script, execute no terminal a seguinte linha de comando (Mac/Linux)

python -c “$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/master/scripts/get-platformio.py)”

Para Windows, salve este arquivo em um diretório qualquer e execute no prompt de comando a seguinte linha:

C:\Python27\python.exe get-platformio.py

Todas as referencias de instalação podem ser encontradas aqui.

Utilizando o CLI

Uma das formas de se trabalhar com a platformIO é por meio de linha de comando ou CLI.

Para a utilização do CLI, basta alguns comandos para criar e compilar um projeto. Abaixo uma lista dos comandos mais utilizados:

$ platformio boards

Lista todas as placas suportadas pela plataforma. A lista é bastante extensa, por isso podemos listar as placas apenas de um fabricante, como a Espressif:

$ platformio boards espressif

Para criar um projeto novo, devemos executar a seguinte linha de comando:

$ platformio init –board <modelo-placa>

Onde o modelo-placa deve ser substituído pelo modelo exato do qual sendo utilizado, por exemplo o ESP07:

$ platformio init –board esp07

Neste processo, algumas pastas e arquivos serão criados. Na pasta lib, serão colocadas as bibliotecas utilizadas no projeto, e na pasta src todo o código do projeto.
Caso o SDK da Espressif não for encontrado, o processo de criação do projeto irá fazer o download de todos os arquivos necessários, apenas na primeira vez em que um projeto com o ESP8266 for criado.

Para compilar o projeto, os seguintes comandos podem ser executados:

$ platformio run

Faz a build do projeto.

$ platformio run –target upload

Faz a build do projeto e faz o flash na placa.

$ platformio run –target clean

Faz a remoção dos arquivos compilados.

Instalando bibliotecas

Para instalar bibliotecas no platformIO pelo CLI é muito fácil. Com os seguintes comandos, é possível procurar e instalar uma série de bibliotecas no framework:

$ platformio lib list

Lista todas as bibliotecas instaladas.

$ platformio lib search “espressif”

Procura bibliotecas com a palavra “espressif”. Pode ser que uma biblioteca possua suporte para o ESP8266 mas não lista pelo nome “espressif“, por isso a busca pode ser feita pela Web, através deste link (http://platformio.org/lib), selecionando a plataforma ou pela linha de comando:

platformio lib search –framework=”espressif”

Para instalar a biblioteca, devemos utilizar o número de ID da biblioteca a ser instalada.

$ platformio lib install <id>

Por exemplo, para instalar o Blynk, devemos utilizar o seguinte comando:

$ platformio lib install 415

Para atualizar as bibliotecas, utilize a seguinte linha:

$ platformio lib update

 

Atom IDE

Um dos editores/IDE mais interessante do momento é o Atom, dos desenvolvedores do GitHub. É uma IDE completa e cheia de recursos e pacotes adicionais.

Para trabalhar com o platformIO e Atom, basta fazer o download do Atom por este link. Existem versões para Windows, Mac e Linux.

Screenshot from 2016-05-01 16:34:40A instalação é bem simples, bastando escolher a versão do seu sistema operacional e fazer o download correto.

O vídeo abaixo demonstra a utilização:

Eclipse CDT

Quem prefere trabalhar com o Eclipse, existe a opção de criar um projeto com o arguimento –ide e definir com qual IDE o projeto será integrado. Para utilizar com o Eclipse, na criação do projeto, use a seguinte linha de comando:

platformio init –ide eclipse –board <modelo-placa>

Feito isso, no Eclipse, use a opção de importar um projeto existente.

Além do Eclipse, exitem outras opções de IDE, tais como:

  • CLion
  • CodeBlocks
  • Emacs
  • NetBeans
  • Qt Creator
  • Sublime Text
  • VIM
  • Visual Studio

Para a lista atualizada acesse: http://docs.platformio.org/en/latest/ide.html

Conclusão

Esta receita, além de ter uma performance de tempo de compilação superior ao Arduino IDE, permite a utilização em outras IDEs mais poderosas e com recursos superiores ao padrão Arduino.
Do tempo em que eu estou utilizando o conjunto platformIO e Atom, já pude notar a superioridade dos recursos do Atom.

Vale a pena tentar migrar!

 

Happy Hacking!

17 Comments

  1. Marcelo

    muito bom

    Reply
  2. Fabiano Fernandes

    Muito bom seu artigo Pedro, comecei a usar o PlatformIO+Atom e já larguei a IDE Arduino.

    Reply
  3. Paulo F.

    primeiramente gostaria de parabenizar pelo nível de qualidade excelente do blog!
    Migrei para o plataformIO + Atom e realmente temos diversas vantagens.
    Mas na migração dos sketchs de mesu projetos da ide arduino me deparei com um problema de complicação que não consegui resolver.
    Especificamente na biblioteca Adafruit gfx, https://github.com/adafruit/Adafruit-GFX-Library/archive/master.zip
    Tentei de todas as formas mas meu conhecimento se esgotou. sempre da um erro da ft2build.h. Na ide do arduino compila normal.
    Será que consegue me ajudar?
    minha máquina é um MAC.

    Obrigado.

    Reply
    1. Pedro Minatel (Post author)

      Paulo, teria maiores informações do erro gerado na compilação?

      Obrigado

      Reply
      1. Paulo Furiati

        Segue abaixo, ja tentei de tudo pra inserir a lib.
        e so tive problemas com esta lib ate agora.

        src/teste/.pioenvs/nanoatmega328/Adafruit_GFX_Library/fontconvert/fontconvert.c:22:22: fatal e
        rror: ft2build.h: No such file or directory
        #include
        ^
        compilation terminated.

        o estranho é compilar na ide arduino sem problema.

        Obrigado pela atenção.

        Reply
        1. Pedro Minatel (Post author)

          Paulo, você adicionou a lib pelo platformIO?

          http://platformio.org/lib/show/13/Adafruit-GFX

          Por linha de comando é: platformio lib install 13

          Reply
          1. Paulo

            Instalei, o erro persiste!

          2. Paulo Furiati

            Pedro, consegui aqui.
            Ja tinha instalado a lib via prompt de comando (fora do atom).
            Ai checando pela interface do atom a lib não aparecia. Instalei pelo cli do atom e funcionou.

            tem alguma maneira fácil de migrar lib do IDE pro plataformIO?
            Pelo que vi nem todas as libs de um tem no outro.

            Obrigado pela atenção.

          3. Pedro Minatel (Post author)

            Paulo, eu ainda não fiz o port de nenhum lib Arduino para o projeto. Posso procurar como se faz e publicar aqui.

  4. Daniel Lima

    Opa, primeiramente parabéns pela inciativa e a qualidade do projeto! Estou com problemas na hora de criar um arquivo, tendo em vista que no meu platformio não tem aquela barra de pastas e arquivos que aparece na esquerda do vídeo…já tentei configurar algumas coisas mas mesmo assim não consigo deixar na extensão “.ino”, como proceder?
    Desde já, muito obrigado!

    Reply
    1. Paulo Furiati

      vc cria o projeto, (ou importa um ja em desenvolvimento) na tela inicial escolhe a pasta e a placa, cria o projeto. Depois vc deve ir na pasta src botão direto, criar novo e coloca o nome que vc desejar.
      Caso a arvore de pastas do lado direito não apareça vá na barra de ferramentas / VIEW / TOGGLE TREE VIEW

      Espero ter ajudado.!

      Reply
      1. Pedro Minatel (Post author)

        Tente o comando ctrl-\

        Reply
      2. Daniel Lima

        Deu certo, muito obrigado!

        Reply
    2. Paulo Furiati

      opa errei…a árvore de pastas é do lado esquerdo!

      Reply
  5. Wagner Caetano

    Bom dia!
    Pedro como tem conhecimento das plataformas para programar o esp8266, poderia fazer um artigo de comparação entre elas? Vantagens e desvantagens,etc.
    NodeMcu
    Eclipse SDK
    Arduino
    PlatformIO
    etc

    Grato!
    Wagner

    Reply
  6. Bruno

    Cara, que show!!!! Estou adorando usar PlatformIO… Facilitou muito a minha vida, estava quase parando de usar ESP…kkkk Tenho uma duvida… Por exemplo quando uso o nodemcuv2 ou o ESP12 eu sei a disposição dos pinos pela inscrição na própria placa, mas estou tentando usar um modelo genérico 01, estou tentando mudar o estado do GPIO02 porem não sei qual o valor desse pino na hora de colocar na programação (“pinMode(???,OUTPUT);”)…. Saberias me dizer? Alguém? Como faço para saber a relação entre os pinos do esp e o valor que tenho que usar na programação para referenciar?

    Reply
    1. Pedro Minatel (Post author)

      Bruno, isso depende da placa que foi selecionada no projeto, se for a esp07, por exemplo, a GPIO4 fica como pinMode(4, OUTPUT);

      Reply

Deixe seu comentário