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.

Arduino IDEPara 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:

arduino_cmake.tar.gz

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:

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.

Postado em dezembro 23, 2010 às 10:26 por Thiago · Link permanente
Em: desenvolvimento, en, linux, nerd · Com as tags: , , , , , ,

6 Respostas

Acompanhar os comentários via RSS

  1. Escrito por milton
    em janeiro 12, 2011 às 17:29
    Responder · Link permanente

    Vou passar um link por aqui pra circunvencionar a falta de gmail aqui no trampo :-P

    http://news.geek.com.br/posts/14589-geek-usa-arduino-para-fazer-joystick-no-iphone

  2. Escrito por QueezyTheGreat
    em maio 2, 2011 às 06:55
    Responder · 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 .

  3. Escrito por Layla Chaves
    em outubro 3, 2011 às 15:23
    Responder · 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

  4. Escrito por Sathishkumar D
    em novembro 30, 2011 às 11:36
    Responder · Link permanente

    Hi Thiago Marcos P. Santos,

    Thanks for CMake template. Works very fine.

  5. Escrito por Sathishkumar D
    em dezembro 5, 2011 às 09:30
    Responder · 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

  6. Escrito por milton
    em janeiro 6, 2012 às 18:54
    Responder · 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.

Acompanhar os comentários via RSS

Deixe uma Resposta