@ramalhoorg
Hardware hacking
• Hacking: exploração ativa da tecnologia, motivada pela curiosidade
• Hardware hacking: hacking de equipamentos
• desmontar o despertador
• lockpicking
• reciclar motores de impressoras para fazer uma máquina de corte CNC
@ramalhoorg
Família Arduino
• Pinos genéricos: entradas e saídas digitais, analógicas
• Conexão USB
• Uma interface universal para computação física
• Uma plataforma para sistemas autônomos:
• robôs, automação residencial, arte interativa...
• Open Hardware: pode ser copiado livremente
@ramalhoorg
Família Arduino
LilypadNano
Uno Mega
etc...
@ramalhoorg
Clone de Arduino em protoboard
@ramalhoorg
Arduino UNO
• Um pequeno circuito com microcontrolador ATmega328 e circuitos auxiliares
• interface USB
• regulador de voltagem 7-12V
7cm
@ramalhoorg
ATmega328
• clock: 16 MHz
• SRAM: 2 KB
• EEPROM: 1 KB
• Flash: 32 KB
• bootloader Arduino: 0,5 KB
7cm
@ramalhoorg
Entradas e saídasno ATmega328
• 28 pinos
• 23 pinos multi-funcionais
@ramalhoorg
Entradas e saídassimplificadas
• 14 pinos de entrada e saída digital
• 6 com PWM
• 6 pinos de entrada analógica
@ramalhoorg
Eco-sistema Arduino
• Vários livros publicados (no Brasil inclusive)
• Incontáveis blogs e vídeos no YouTube com projetos
• Mercado de shields (placas de expansão)
@ramalhoorg
Arduino na educação
• Uma solução para o dilema da 1ª linguagem
• Linguagem C, num contexto de uso simples porém estimulante
• foco em algoritmos
• sem a complexidade incidental de I/O via sistema operacional, strings etc.
@ramalhoorg
Garoa Hacker Clube• Laboratório comunitário,
aberto a todos (sócios ou não)
• Operado e mantido pelos próprios sócios
@ramalhoorg
Garoa Hacker Clube• Missão: facilitar a troca
de conhecimento e experiência entre entusiastas de tecnologia
• Inspirado pelos hackerspaces de Berlin, New York, San Francisco, Praga...
apresenta
CoDIng dOjo coM arduINO
coding dojo
* Treino coletivo de programação* Divertido e eficaz para:* Treinar boas práticas (Ex. TDD)* Aprender novas linguagens ou APIs* Integrar novos membros ao time
o arduino do dojo
randorI: treIno lIvRe* Duplas se sucedem resolvendo o problema usando TDD e baby steps* Uma dupla: piloto e co-piloto* Piloto opera o teclado* Co-piloto ajuda na solução
* Após 5 minutos, piloto volta para a platéia; co-piloto vira piloto; voluntário da platéia é o novo co-piloto
tdd = test-driven design* Escrever testes *antes* de implementar qualquer nova funcionalidade* Enquanto o teste não passa, a platéia não pode se manifestar (exceto a pedido dos pilotos)* Quando o teste passa, pessoas da platéia podem sugerir o próximo passo
tdd com hardware?
* É complicado automatizar testes com hardware* No DOJO COM ARDUINO fazemos testes manuais e observamos os resultados* Mas cada teste tem que ser documentado *antes* de implementar o próximo passo
babY steps
* Para avançar com segurança e constância, cada passo deve ser bem simples* Resista à tentação de resolver o problema todo de uma vez só, ou partir direto para abstração e generalização
* Não tenha medo de sugerir passos bem pequenos e triviais
exemplO:Primeiro teste
* Piscar o led do pino 13* Para verificar a conexão USB e funcionamento básico do Arduino e do circuito sob teste
O probleMa de hoje
* Fazer uma animação simples acendendo e apagando sequencialmente os leds do perímetro do display de 7 segmentos, com a velocidade controlada pelo potenciômetro
display de 7 segmentos
potenciômetroArduino
Mão na massA!
* Voluntários?* Se não houver voluntários, o RANDORI pode ser terminado prematuramente!
venhaM nos vIsITAR eM São Paulo, todos são bem-vindos!
http://garoa.net.br