domingo, julho 26, 2009

Arduino Board

A plaquinha Italiana

(Este post estava esquecido em rascunho fazia muito tempo, arrumei ele um pouco e está aqui)

Certa vez, "boiando" pela internet, cai num site de uma plaquinha italiana chamada Arduino...

Bom, pra que não sabe, "O Arduino é uma plataforma de prototipagem eletrônica open-source que se baseia em hardware e software flexíveis e fáceis de usar" (retirado do site oficial).

Com ele dá pra fazer um monte de coisa, o que "der na telha"... Tem entradas/saídas digitais; entradas analógicas com 1024 níveis; saídas PWM com 256 níveis; 8k, 16k ou mais de memória (7k e 14k com o bootloader). Só usar a criatividade.

Na verdade é um microcontrolador que pode ser programado facilmente por um ambiente em java, usando uma linguagem que parece com o C e que o programa é gravado no microprocessador por uma conexão USB ou serial (pluga a placa no pc e grava o programa).

Me interessei mais ainda... já que desisti depois de várias tentativas frustradas de tentar gravar um PIC (com certeza o problema era eu e não o PIC).

Pronto. Decidi que tinha que testar uma dessas.

Bom, você pode comprar uma placa pronta (original U$30,00 + frete) ou fazer como eu, comprar os componentes e ficar louco montando montar uma Single-Sided Serial Board ou Severino.


Fazendo uma

Primeiro baixei o Manual do Arduino Severino

Depois fui procurar por componentes... (isso foi quase à 2 anos... em outubro/2009)
O microprocessador que eu comprei foi o Atmega168 (mas pode ser o Atmega8 também) desse site http://shop.moderndevice.com/products/atmega168
Comprei 3 pra garantir certo grau de "desastrabilidade" de minha parte, eles já vem com o bootloader do Arduino (bootloader Diecimila) gravado (19,40 dólares com o frete e chegou em 12 dias). Dá pra comprar sem o bootloader mas dai tem que gravar ele com um gravador de AVR ou com uma gambia que vai conectada na porta paralela (não sei onde vi, mas nao encontrei mais pra colocar aqui)
O resto das peças encontrei em uma eletrônica aqui da minha cidade e em placas velhas.

Na página 10 do manual do Severino tem o circuito pronto pra ser impresso, com as dimensões corretas. Pensei em serigrafar e depois corroer, mas lembrei de uma técnica que me falaram uma vez... "Googlei" um pouco e fiz. Consiste em imprimir o circuito com uma impressora a laser, virar o lado impresso para a placa e passar o ferro-de-passar encima do papel até que o toner grude na parte cobreada. Depois de algumas tentativas consegui que a ficasse poucas trilhas pra arrumar com uma caneta de escrever em CD.
Cortei "porcamente" a placa com a micro-retífica (Dremel) e coloquei pra corroer no percloreto que estava guardado fazia uns 5 anos... o que era pra demorar uns 20 minutos no máximo, levou umas 3 horas, mas deu certo.
Depois de corroído cortei a placa bem retinha e usei a técnica do ferro na parte de cima, com o segundo desenho da página 10 do manual...
Furei com uma broca da micro-retífica e pronto.

Soldei tudo no lugar e liguei. Com o bootloader Diecimila gravado, o Led13 da placa pisca uma vez a cada 2 segundos... belezaaaaaa piscava assim =D

Placa pronta


O Software pra gravar

Coloquei um jumper no JP4 (Auto Reset) e outro no JP0 na posição 2-3 (Serial Enable) e pluguei na porta serial...

Uso Kubuntu (usava, agora uso Ubuntu mesmo) no meu computador, então baixei o Arduino 0017 Linux(32bit) daqui http://arduino.cc/en/Main/Software(agora tem o 0022)

Li no Tutorial de Instalação do Arduino no Linux que era pra instalar o gcc-avr e o avr-libc
(Lá pede o Java, mas eu já tinha)

executei:
sudo apt-get install gcc-avr avr-libc

Descompactei o Arduino 0017 e executei pelo terminal ./arduino

Interface do ambiente de desenvolvimento

Abri um exemplo de sketch (chamam assim os programas) em File > Sketchbook > Examples > Digital > Blink, que faz o Led13 da ficar em loop ligado 1 segundo e desligado 1 segundo.
Selecionei em Tools > Serial Port, a porta certa e em Tools > Board > Arduino Diecimila...

Cliquei em (já empolgado) Upload to I/O Board e...

E apareceram esses erros:

avrdude: stk500_getsync(): not in sync: resp=0x30
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Depois de muito procurar o que era (na internet não tem nada de concreto) peguei o multímetro e comecei a testar o cabo serial, as trilhas e tudo. Baseado na ideia que o TX não estava funcionando achei um maldido pedacinho da trilha do RX que corroeu e deixou uma fresta que nem dava pra ver direito, coloquei um pouco de solda encima e liguei denovo. Funcionou, "upou" o sketch e o Led13 comecou a piscar de acordo com o programa.


O Arduino de verdade mesmo
...

Finalmente resolvi comprar um Arduino original, comprei do mesmo site onde comprei os microprocessadores http://www.moderndevice.com

Placa Arduino Duemilanove, tem até o mapa da Itália no verso.


Ultimamente comprei muita coisa relacionada ao Arduino e afins no sparkfun.com