Arduino Uno + Ubuntu + CMake
Já faz uma semana que estou brincando meu Arduino Uno novo em folha. Infelizmente a versão Maverick (10.10) do Ubuntu vem com um SDK do Arduino que é incompatível; parece que congelaram a versão estável do pacote pouco antes do lançamento do Uno. A primeira coisa que fiz foi atualizar meu SDK para os pacotes instáveis do Natty (11.04). Basta baixar e instalar manualmente do site do Ubuntu (lembre-se de atualizar tanto o pacote arduino quanto o arduino-core).
A IDE é bem amigável para os programadores casuais e permite escrever programas simples sem muito esforço. Ao primeiro olhar, pode parecer que uma versão não padrão de C/C++ é usada, mas isto se deve ao fato da IDE adicionar headers e a função main() para você automaticamente no momento em que você clica em Upload. Me parece que você pode ter apenas um arquivo de código fonte por projeto, o que é razoável para coisas não muito complexas.
Para aqueles que desejam desenvolver de maneira tradicional usando linha de comando, eu criei este template baseado em CMake para o Arduino Uno. Ele foi feito de tal forma que possibilita adicionar suporte a outros modelos de Arduino apenas criando um novo arquivo com as configurações do hardware. Não há restrição de uso deste template em outras distribuições Linux (nem mesmo em outros sistemas operacionais, uma vez que o CMake roda em Mac e Windows também), mas claro que modificações podem ser necessárias. Patches são sempre bem-vindos.
Usando o template CMake para Arduino
Você vai precisar, claro, dos pacotes do cmake instalados e uma versão compatível do SDK do Arduino (veja acima como resolver esta questão Ubuntu Maverick x Uno). Apenas o pacote arduino-core é necessário para rodar este template.
Faça download da última versão aqui:
Esta é uma versão modificada do exemplo clássico chamado Blink, convertido em C/C++ padrão (é estranho o fato das bibliotecas do Arduino serem escritas em uma mistura de C e C++ e não apenas C). Este exemplo é bacana porque lhe dá uma resposta visual sem ser necessário espetar algum componente extra na placa. Parece que quase todas as vesões do Arduino possuem um LED embutido ligado ao pino 13. Como o cmake não é tão conhecido (o que é uma pena por ser uma ferramente excelente), segue as instruções de como compilar o exemplo:
$ mkdir build $ cd build $ cmake .. $ make
Você pode exportar a variaǘel de ambiente ARDUINO_PORT ou editar o arquivo CMakeLists.txt para alterar a porta no qual seu dispositivo está conectado. Provavelmente você não vai precisar mexer nisso se estiver usando o combo Ubuntu Maverick e Arduino Uno.
Dois targets extras foram adicionados ao Makefile para tornar as coisas mais fáceis:
- make flash – Vai “flashar” (gravar o software) na hardware conectado em ARDUINO_PORT.
- make reset – Reinicia o hardware (mais ou menos o mesmo que apertar o botão de reset na placa).
Dicas
Minha forma predileta de depuração de software é usando printf(). A versão modificada do Blink que está sendo usada no template contém algumas mensagens de debug nesta forma. Use o minicom para ver estas mensagens pelo terminal:
$ minicom -b 115200 -D /dev/ttyACM0
Você precisa sair do minicom antes de “flashar” o hardware novamente. Faça isso usando CTRL+A e depois X.
Aviso
Ao seguir este tutorial e usar o template do buildsystem, você pode potencialmente destruir seu Arduino e transformá-lo em um peso de papel (não muito bom, uma vez que ele é bem leve). Você está assumindo este risco, eu não me responsabilizo por nada.
Em: desenvolvimento, en, linux, nerd · Com as tags: arduino, buildsystem, cmake, hack, hardware, howto, ubuntu

em janeiro 12, 2011 às 17:29
· Link permanente
Vou passar um link por aqui pra circunvencionar a falta de gmail aqui no trampo
http://news.geek.com.br/posts/14589-geek-usa-arduino-para-fazer-joystick-no-iphone
em maio 2, 2011 às 06:55
· Link permanente
Hi,
Great article, if you are interested I’ve also started an CMake alternative to the Arduino SDK.
My system integrates with an existing SDK and lets you build using CMake on Windows, Linux and Mac. Also it supports all boards that the SDK supports.
You can find my project on GitHub at https://github.com/queezythegreat/arduino-cmake .
em outubro 3, 2011 às 15:23
· Link permanente
Olá Thiago!
Meu nome é Layla Chaves! Trabalho em uma empresa de desenvolvimento de software livre e atualmente estamos como uma oportunidade em aberto para desenvolvedor C++.
Vi que você tem conhecimento nesta área.
Caso tenha interesse, ou tenha amigos que possam se interessar, favor fazer contato através do email: layla@syst.com.br.
att
em novembro 30, 2011 às 11:36
· Link permanente
Hi Thiago Marcos P. Santos,
Thanks for CMake template. Works very fine.
em dezembro 5, 2011 às 09:30
· Link permanente
Hi Thiago,
Based on this and based on http://arduino.cc/playground/Code/Kdevelop, I have developed a template for arduino. I will be very useful to all I hope. You may notice, I have fixed the “firmware” as the default name to the project name. But it works only for the kdevelop.
You can details at, http://flowersopenlab.weebly.com/4/post/2011/12/using-kdevelop-and-arduino.html
em janeiro 6, 2012 às 18:54
· Link permanente
Great work! Tried in a Duomillenove board with very few changes required. Now we can get rid of that clumsy IDE application and come back to Vim
However, the reset command did not work. Will send some patches as suggestions to start the discussion.