O Arduino é, basicamente, uma plataforma de aprendizado. A IDE oficial é bem simples e não oferece muitos recursos para usuários mais avançados. Para quem quer manter as dependências/bibliotecas organizadas, a IDE do Arduino não ajuda em nada. Felizmente existe o PlatformIO. E nesse post eu vou mostrar como eu atualizei o Placarduino para utilizar a estrutura de um projeto dessa plataforma.
Com as ideias de melhorias para o Placarduino, em breve ele deve se transformar em um pequeno monstro :). Várias bibliotecas externas utilizadas, em versões específicas, algumas que poderiam ser instaladas pelo gerenciador de bibliotecas do Arduino, outras que precisariam ser baixadas, descompactadas e copiadas para um diretório específico, além das bibliotecas internas para separar as funções do programa e vários arquivos no projeto principal. É, a organização do código será fundamental para continuar desenvolvendo esse projeto.
O PlatformIO se descreve como um ecossistema de código-aberto para desenvolvimento de Internet das Coisas. O core dele consiste em uma arquitetura de compilação multiplataforma, um gerenciador de bibliotecas com gerenciamento de dependências dos projetos (similar ao NPM e ao Composer), um localizador de dependências utilizadas (que verifica os #include
‘s para saber quais bibliotecas devem ser compiladas) e outras ferramentas.
Além do core, o PlatformIO também pode ser integrado a várias IDEs. As IDEs mais recomendadas são o Atom e o VSCode. É essa integração do PlatformIO com a IDE que eu vou utilizar e mostrar neste post. Para continuar, eu escolhi o VSCode como IDE por ser mais rápido e responsivo que o Atom (pelo menos uma vez na vida a Microsoft fez um software decente…).
Abrindo a IDE com o plugin instalado, existe uma opção para importar um sketch existente do Arduino. Essa opção, basicamente, cria um novo projeto baseado no template padrão e copia todos os arquivos do sketch do Arduino para uma pasta src dentro do novo projeto. Mas não funcionou muito bem com o Placarduino. Como o sketch atual é um repositório Git, ao fazer essa importação, o repositório ficou dentro do src e não no projeto inteiro. Então eu decidi fazer a migração manualmente.
Um projeto do PlatformIO é identificado por um arquivo platformio.ini
na raiz do diretório. Nesse arquivo são configurados a placa e o framework utilizados (o PlatformIO suporta vários, mas eu só estou desenvolvendo o Placarduino com a placa Arduino UNO e o framework Arduino). Esse mesmo arquivo também é utilizado para listar as dependências de bibliotecas, que serão instaladas automaticamente. Eu me baseei no arquivo gerado para um novo projeto e na documentação do formato desse arquivo, e acabei com essa configuração:
; PlatformIO Project Configuration File ; ; Build options: build flags, source filter ; Upload options: custom upload port, speed and extra flags ; Library options: dependencies, extra library storages ; Advanced options: extra scripting ; ; Please visit documentation for the other options and examples ; http://docs.platformio.org/page/projectconf.html [env:uno] platform = atmelavr board = uno framework = arduino lib_deps = Wire@1.0 LiquidCrystal@1.3.4 ToneLibrary@1.7.1
Nesse arquivo, as opções platform
, board
e framework
em conjunto configuram a placa que está sendo utilizada e como deve ser feita a compilação e “deploy” para ela. Você pode ver nessa página todas as opções e combinações possíveis.
A opção lib_deps
é uma lista das dependências do projeto. Para pesquisar as bibliotecas disponíveis, você pode utilizar o PIO Home (ícone de casa na barra interior do VSCode), pesquisar a biblioteca, copiar o nome e versão da aba “Install” e colocar nesse arquivo. Após salvar esse arquivo, o PlatformIO já vai baixar as dependências automaticamente e salvar na pasta .piolibdeps
.
Depois de criar o platformio.ini
, eu movi alguns arquivos para melhorar a organização:
$ mkdir docs src $ git mv Placarduino.fzz docs/ $ git mv Placarduino.ino src/
O resto dos arquivos necessários o próprio PlatformIO gera automaticamente quando o projeto é aberto na IDE.
Agora programar para Arduino já está mais parecido com programação de softwares no século 21 😉
2 comentários em “Substituindo a IDE do Arduino pelo PlatformIO”