terça-feira, junho 28, 2011

Arduino - Afinal, o que é isto?

Você certamente já ouviu falar algo sobre Arduino. Eu já tinha ouvido falar bastante e acabei mergulhando de cabeça ao assumir a responsabilidade pela "Noite do Arduino" do Garoa Hackerclube. Existe muito material a respeito, a começar pelo site oficial. Aqui no blog vou tentar falar de assuntos menos comentados e mais profundos. O que parece conflitar com o título deste post - "o que é Arduino" é algo básico, certo?

O Todo e Suas Partes

Nas palavras do site oficial, Arduino é uma plataforma. E como tal, tem várias partes, algumas de software e outras de hardware. O que cria uma primeira complicação, quando falta o contexto para saber se estamos falando de uma parte ou do todo. Existe, digamos, uma configuração básica de software e hardware, mas ela tem evoluído com o tempo. Além disso, destemidos, visionários e picaretas (não necessariamente nesta ordem) tem expandido o termo "Arduino" para englobar coisas bastante diferentes desta configuração básica.

A Configuração Básica e Algumas Variações

Nos dias de hoje eu chamaria de configuração básica da plataforma Arduino:
  • O ambiente integrado de desenvolvimento (IDE), através do qual se escreve a aplicação, se gera o código objeto correspondente e o carrega no hardware. A aplicação é escrita em C/C++ (embora isto não seja evidente, pois passa por um pré-processamento e usa algumas bibliotecas bem específicas); a carga do software no hardware é feita através de uma comunicação serial, utilizando um protocolo padrão.
  • Uma placa contendo um microcontrolador AVR da Atmel, como o ATmega 328. Este processador deve ter gravado um software (bootloader) capaz de receber a aplicação por uma interface serial (usando o protocolo padrão) e gravá-la na memória do microcontrolador.
  • A interface serial do microcontrolador é convertida para conexão USB ao microcomputador onde o desenvolvimento é feito.
  • A placa possui conectores que obedecem a um padrão elétrico e mecânico para permitir a conexão de placas diversas (chamadas de shields).
Como dito, esta configuração básica está longe de estar "escrita em pedra". Alguns exemplos de variação:
  • É possível usar uma placa padrão Arduino com outros ambientes de desenvolvimento, por exemplo programando direto em C.
  • Existem vários modelos de microcontroladores AVR, com diferentes recursos e capacidades de memória.
  • A conversão da serial do microcontrolador para USB pode ser feita fora da placa, substituída por uma conversão para RS232 ou a programação pode ser feita conectando um programador externo.
  • Os conectores padrão podem ser retirados para reduzir o tamanho e criar placas com formatos mais especializados, como para uso em breadboards ou até para ser costurado em roupas.
Veja na página de Hardware do site oficial alguns exemplos.

Em uma mudança mais radical, foram desenvolvidas versões da IDE e placas que possuem compatibilidade a nível da linguagem e conexão de shields, porém utilizam microcontroladores totalmente diferentes (como o chipKIT que sua PIC de 32 bits).

A Rose By Any Other Name...

Um ponto importante na plataforma Arduino é que ela é livre: existe documentação abundante para quem quiser reproduzir ou alterar tanto software como hardware.

Entretanto, o nome "Arduino" é marca registrada dos seus desenvolvedores originais e eles solicitam que só seja usado com produtos (neste caso hardware) oficiais. Um produto oficial é aquele que é desenvolvido e fabricado com aprovação dos desenvolvedores originais e cujos fabricantes pagam uma taxa de licenciamento do nome para ajudar a custear os novos desenvolvimentos. Esta solicitação é descaradamente ignorada e você encontra muitos "Arduinos genéricos".

Não usando o nome "Arduino" não é necessário pagar o licenciamento, o que explica os *ino que a gente encontra por aí (apesar do alerta que os italianos acham horrível o uso do sufixo "duino").

Fico por aqui neste primeiro post. No próximo veremos a clássica pergunta "qual modelo eu compro?".

6 comentários:

Anônimo disse...

poderia, posteriormente, explicar os tipos variados de inos que existem? uma pequena pesquisa na internet achei um tal de netduino... mas nao sei no que ele difere

Daniel Quadros disse...

Na medida do possível vou tentar comentar os "inos" mais interessantes. O Netduino é uma divergência bastante extrema das ideias do Arduino. As únicas coisas em comum são as conexões para shields e a documentação aberta do hardware. Entretanto, ele não usa a IDE nem a linguagem do Arduino. Ao invés disso, é usado o Visual C# Express (gratuito mas não livre). No lugar do AVR a 16MHz, um microcontrolador baseado no ARM7 rodando a 48MHz.

wmoecke disse...

Por ser programador .Net, o netduino me pareceu mais atraente por oferecer a possibilidade de se usar a plataforma .Net para desenvolvimento, achei muito bom o demo deles - vc tem um código mais "limpo" e claro devido às classes e enumerações que já vêm definidas no SDK. Fica mais simplificada a programação, o que para mim pareceu uma grande inovação - eu tenho a intenção de comprar a versão Plus para ver o que se pode fazer usando C#.

wmoecke disse...

O Netduino não é o único, ao que parece: Veja o FEZ Panda II (http://www.ghielectronics.com/catalog/category/37/) - Ainda mais rápido e com vários I/O inclusos na placa-base, e oferece diversos shields bem interessantes (como o Music Shield).

Opções à vontade, a gosto do freguês... ;-D

Anônimo disse...

Qual é a vantagem de se usar a plataforma do Arduino em relação a um microcontrolador e um gravador? pois o arduino é em torno de 50R$ e para alguns projetos isso é o suficiente para se montar uma placa.

Daniel Quadros disse...

O objetivo do Arduino é facilitar a prototipagem. Você compra pronto, conecta o PC e sai desenvolvendo. Isto é interessante para quem não tem o conhecimento ou interesse em montar a própria placa. Em alguns casos acaba-se deixando o próprio Arduino no projeto final. A propósito, o Lab de Garagem tem o Garagino que é justamente uma placa só com o microcontrolador, por certa de R$30.