21/07/2009
Arduino: Uma plataforma Open Source
Texto publicado originalmente no
Blog do Spock.
Quando participei do último
OpenTDC promovido pela Globalcode ouvi falar de um hardware
open source chamado Arduino. Até aquele momento nunca tinha ouvido falar da
ideia de open source no mundo do hardware e sim somente no mundo do software. Minha santa ignorância! Mas, durante a minha
visita aos Estados Unidos para participar do JavaOne 2009 tive a
oportunidade ímpar de participar de uma feira que aconteceu nos dias 30 e 31 de maio deste ano em San Mateo na Califórnia.
A feira chamada de Maker Faire (um dos assuntos do próximo
Casual Class da Globalcode) foi um evento dedicado a
mostrar os trabalhos de diversos pequenos inventores, fazedores, geeks, nerds e artesãos de todas as áreas. Nesta feira
vi a presença maciça do Arduino através de diversos projetos, kits de eletrônica, robôs e outros equipamentos feitos
pelos expositores que participaram do evento. Nesta feira fiquei mais curioso ainda pelo Arduino e sobre essa ideia
de hardware open source. Por consequência, acabei trazendo para casa um kit para fazer pequenos projetos e experiências
com o Arduino comprado na feira. E assim começou as minhas peripécias com este hardware simples e pequeno que tem
fascinado tanto o mundo dos "makers".
Então, o que é Arduino?
O Arduino é uma plataforma de
hardware open source
baseado em um microcontrolador com suporte a conexão via serial ou USB com o computador para receber
programas. A palavra "plataforma" significa um hardware genérico o suficiente para permitir a
criatividade dos desenvolvedores elaborar aplicações com interatividade com o mundo real (também chamado
de "physical computing")
através de alguns componentes eletrônicos como complemento.
A maior curiosidade sobre o Arduino
não está na sua simplicidade, mas sim numa grande comunidade que se formou em torno desta ideia. Por s
er um hardware aberto, aonde podemos baixar a lista de componentes, o diagrama esquemático e o desenho
da placa de circuito e muita documentação para aqueles que desejam montar o seu próprio Arduino, esta
tecnologia proporciona a democratrização do conhecimento para qualquer um usar ou contribuir. Com isso,
podemos encontrar diversos projetos na rede contruídos com base no Arduino. Também podemos encontrar
livros e revistas especializadas tratando do assunto, além de vários sites sobre o assunto.
Alguns exemplos:
Na verdade o Arduino é bem simples.
Na sua última versão, possui vários componentes simples como resistores, capacitores, diodos e um regulador
de tensão. Mas a parte vital está num microcontrolador da
ATmel que disponibiliza algumas portas digitais para entrada ou saída de bits e algumas portas analógicas
para entrada de um sinal analógico e a respectiva conversão para um valor binário (int) no programa.
O hardware do Arduino é tão simples que pode ser construído em casa após adquitir todos os componentes
ou ser adquirido já pronto.
A comunicação com o computador para receber os programas é realizado por porta
serial ou USB do computador (depende da versão usada do Arduino). Através destas portas é possível conectar
LEDs, potenciômetros, motores, sensores de luminosidade, relés ou qualquer outro dispositivo eletrônico que permita
receber um bit para ativar algum equipamento externo ou simplesmente receber um sinal de um dispositivo e mandar
para o programa. Com o Arduino não é difícil construir um hardware que controla alguns motores de um pequeno
robô e receba os sinais de alguns sensores como um sensor ultrassônico. O sensor pode indicar a distância do
robô de algum obstáculo para que o código em execução possa provocar uma reversão dos motores para evitar
que o robô atinja ao alvo.
No site oficial do
Arduino podemos encontrar toda
documentação, como programar,
exemplos de código, como usar
através de Windows, Linux
ou Mac, além da descrição completa das várias versões do
hardware. Neste site podemos fazer
o download da ferramenta de
desenvolvimento (IDE) para criar programas baseado na linguage "C" para instalar e rodar dentro
do Arduino. Esta IDE chama-se "Processing" e está implementada em Java. Mas, como o programa,
escrito em "C" e depois compilado, roda dentro do microcontrolador do Arduino, esta IDE apenas
usa um compilador externo preparado para gerar códigos binários para os microcontroladores da ATmel.
Também permite fazer o upload do programa compilado no computador para a memória do Arduino através
da porta serial ou USB. Após o upload, o Arduino começa executar imediatamente.
A imagem a seguir ilustra um programa de exemplo que acompanha a IDE de desenvolvimento para o Arduino.
Este programa configura a porta de número 13 do Arduino como saída digital através da função "setup()".
Depois, num loop infinito, o Arduino executa as instruções que estão dentro da função "loop()".
Estas instruções mudam o estado da porta 13 para HIGH (bit ligado que corresponde a 5 volts nesta porta) e
após uma pausa mudam o estado para LOW (bit desligado que corresponde a 0 volt nesta porta). Assim, se ligarmos
um dispositivo a esta porta, ele será ligado e desligado. Por exemplo, um LED pode ser usado para visualizarmos
o estado desta porta. Ou até poderíamos ter um pequeno motor ligado a esta porta com um circuito
apropriado de potência.