1. Luciano Ramalho
luciano@ramalho.org
@ramalhoorg
Arduino: hardware hacking para todos
@ramalhoorg
2. 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
3. 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
6. Arduino UNO
• Um pequeno
circuito com
microcontrolador
ATmega328 e
circuitos auxiliares 7cm
• interface USB
• regulador de
voltagem 7-12V
@ramalhoorg
10. 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
11. 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
12. Garoa Hacker Clube
• Laboratório comunitário,
aberto a todos
(sócios ou não)
• Operado e mantido
pelos próprios sócios
@ramalhoorg
13. 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...
@ramalhoorg
16. 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
18. 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
19. 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
20. 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
21. 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
22. 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
23. 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