Upload
tiago-barros
View
11.471
Download
1
Embed Size (px)
Citation preview
Instituto de Inovação com TIC
[ Dezembro/2010 ]
introdução ao arduino
Tiago Barros|[email protected]
Inovação é a gente!
2
conteúdo
• computação física• conceitos básicos de eletricidade• conceitos básicos de eletrônica• plataforma arduino• sinais analógicos e digitais• sensores e atuadores• comunicação serial
Instituto de Inovação com TIC
[ Dezembro/2010 ]
computação física
4
computação física
• uso de computação e eletrônica [sensores e atuadores] na prototipação de objetos físicos para interação com seres humanos
• comportamento implementado por software
• utilização de microcontroladores
5
computação física
• o objetivo é interligar o mundo físico com o mundo virtual
• usar a computação e a interação com a tecnologia para o desenvolvimento das suas atividades
• meio para comunicação e interação entre pessoas
6
computação física
como vemos oscomputadores?
7
computação física
• teclado
• mouse
• monitor
• CPU
• caixas de som
como vemos os computadores?
8
computação física
como os computadores nos veem?
9
computação física
• dedos [teclado/mouse]
• olho [monitor]
• duas orelhas [caixas de som]
reflexo das entradas e saídas do computador
como os computadores nos veem?
10
computação física
“mudar a forma que os computadores nos
veem mudará como eles interagem
conosco”Tom Igoe – Physical Computing
Instituto de Inovação com TIC
[ Dezembro/2010 ]
conceitos básicos de eletricidade
12
eletricidade
eletricidade - interação entre partículas atômicas
universo formado de átomos
partículas atômicas:
prótons: cargas positivas
elétrons: cargas negativas
13
eletricidade
Atomos com mais elétrons que prótons estão carregados negativamente (íon negativo)
Atomos com menos elétrons que prótons estão carregados positivamente (íon positivo)
“buraco”
“elétron extra”
14
eletricidade
cargas iguais se repelem
cargas opostas se atraem
cargas em movimento geram campo magnético
campo magnético em movimento gera corrente elétrica
NS
15
eletricidade – condutores e isolantes
isolante – evita a passagem de elétrons
condutor – permite o fluxo de elétrons
16
eletricidade – diferença de potencial (v)
cargas negativas
quanto maior a tensão, mais “força” teem os elétrons
diferença de potencial ou tensão.
cargas positivas
V
17
eletricidade – corrente elétrica (i)
quanto maior a corrente, maior a “quantidade” de
elétrons
fluxo de elétrons em um condutor
18
eletricidade – tipos de corrente elétrica
corrente contínua
corrente alternada
19
eletricidade – tipos de corrente elétrica
inversão de polaridade no tempo
mesma polaridade no tempo (sentido continuo)
20
eletricidade – resistência elétrica (r)
propriedade do material condutor em reduzir
a passagem dos elétrons
elétrons “se acumulam e batem” no condutor, “dissipando” sua
energia(gerando calor)
21
eletricidade – lei de ohm
V = R x I
a diferença de potencial (V) entre dois pontos de um
condutor é proporcional à corrente elétrica (I) que o
percorre e à sua resistência (R)
V
R I R = V/I
I = V/R
22
eletricidade – circuito elétrico
+
–
V
i
Rgerador[fonte]
condutor[caminho]
carga[consumidor]
23
e agora, computação..
.
Instituto de Inovação com TIC
[ Dezembro/2010 ]
sistemas computacionais reativos
25
sistemas computacionais reativos
percepção do ambiente, recebendo estímulos atavés de sensores;
e reação aos estímulos, de acordo com o seu comportamento (software), através de atuadores.
Instituto de Inovação com TIC
[ Dezembro/2010 ]
plataforma Arduino
27
plataforma arduino
• microcontrolador Atmel
• programação usando Wiring (subconjunto de processing, baseado em C/C++)
• open-source: evolução da plataforma através de contribuições dos usuários
28
plataforma arduino - hardware
Duemilanovemini
lilypad
boarduino
paperduino megapro
29
plataforma arduino - hardware
• portas• 14 entradas/saídas digitais • 6 entradas analógicas
• memória• RAM: 1K• Flash (programa): 16k – 2k (bootloader)
• velocidade de processamento: 16MHz
30
plataforma arduino – hardware
31
plataforma arduino - instalação
• driver windows: FTDI Serial USB linux: não precisa instalar nada :-)
• software é só descompactar e executar
32
plataforma arduino - instalação
• Selecionando a placa e a porta serial
33
plataforma arduino – ambiente
área de código
área de status e saída serial
compilar (verif. programa)
parar execução
novo
abrir
salvar
enviar programa para placa
exibir serial
34
plataforma arduino – ciclo de vida
escrever
compilar
enviar para placa
verificar execução
corrigir erros
corrigir erros
Instituto de Inovação com TIC
[ Dezembro/2010 ]
atuadores
36
plataforma arduino – estrutura do sketch
37
plataforma arduino – linguagem
• linguagem baseada em C (mas bem mais fácil)
• comandos básicos
• pinMode() – define um pino com entrada ou saída
• digitalWrite() – liga ou desliga uma saída digital
• delay() – “espera” um determinado tempo
38
plataforma arduino – linguagem
• Exemplos
• pinMode(num_do_pino, OUTPUT);
• digitalWrite(num_do_pino, valor); valor é LOW ou HIGH (0 ou 1, 0V ou 5V)
• delay(milisegundos);
39
plataforma arduino – linguagem
• constantes
LOW | HIGH – indica nível baixo (0V) e alto (5V) nos pinos INPUT | OUTPUT – define se um pino vai ser pino de entrada ou
de saída
40
atividade prática!
41
prática
• fazer o programa hello arduino, que pisca um led
• use o pino 13 de saída digital, a placa já possui um led ligado a ele :-)
42
plataforma arduino – hello arduino
43
Perguntas
44
plataforma arduino – linguagem
• comandos básicos
• analogWrite() – escreve um valor analógico no pino
• analogWrite(num_pino, valor); valor entre 0 e 255
45
eletrônica – modulação PWM
a função analogWrite() escreve “pulsos” muito rápidos no pino digital (só funciona nos pinos marcados com PWM).
o valor a ser escrito representa o tempo que o pulso fica em nível alto e varia de 0 a 255.
quanto mais tempo o pulto permanecer em nível alto, maior é a “tensão média” da saída
46
plataforma arduino - linguagem
• variáveis• Espaço reservado na memória para
armazenamento de valores • Variáveis são declaradas de acordo com o tipo
de dado a ser armazenado (int, long, char, etc…)
tipo nome = valor;
Exemplo:int x = 10;int y = 20;int resultado;char vogal = ‘a’;
Resultado = x + y;
47
plataforma arduino – linguagem
• for
for (inicialização; condição; incremento) { //comando(s); }
for (int i=0; i <= 255; i++){ analogWrite(PWMpin, i); delay(10); }
48
mais prática!
49
eletrônica – protoboard
• antes disso: • Protoboard
50
eletrônica – protoboard
• jumpers
51
antes dissomais um pouco de eletrônica...
52
eletrônica – resistores
oferecem resistência à passagem da corrente elétrica
transformam energia elétrica em energia térmica[pode ser usado como atuador]
tipos:
carvão [carbono]
filmefio
resistência:
fixovariável
53
eletrônica – resistores
valores expressos em ohms
o corpo dos resistores possui um código de cores para identificar o valor
54
agora sim, prática!
55
prática
• modificar o programa hello arduino para acender o led com efeito de “fading” (acender gradativamente)
• dica: use analogWrite() em vez de digitalWrite(), variando os valores escritos, de 0 a 255
56
prática
• circuito
Figura retirada de http://arduino.cc/
57
prática
• esquemático
Figura retirada de http://arduino.cc/
58
prática
• protoboard
Figura retirada de http://www.multilogica-shop.com/Aprendendo/Exemplos/Fading
59
prática
• Mãos à obra!
• modificar o programa hello arduino para acender o led com efeito de “fading” (acender gradativamente)
• dica: use analogWrite() em vez de digitalWrite(), variando os valores escritos, de 0 a 255
60
Perguntas
Instituto de Inovação com TIC
[ Dezembro/2010 ]
sensores
62
sensores – chave (switch/button)
• interrompe a passagem da corrente elétrica• liga/desliga o circuito• sensor de toque
esquemático
63
plataforma arduino – linguagem
• Comandos• digitalRead() – le um pino de entrada
• Exemplo:• int chave = 0;• chave = digitalRead(num_do_pino);
64
plataforma arduino – linguagem
• ifif (variavel == 0) { // faça alguma coisa }
• if … elseif (variavel == 1){ // acao A } else { // acao B
}
65
sensores
arduino lê tensões de
entrada (e não valores 0 e 1)
5 volts == HIGH (1)0 volts == LOW (0)
sem conexão em umpino, a entrada flutuaentre 0 e 5 volts (HIGH e LOW) este resistor é necessário
para que o pino seja levado para 0 quando não estiver conectado (chave aberta)
66
atividade prática!
67
sensores - prática
• fazer o circuito e o programa para acender o led 13 de acordo com sinal de entrada do pino 2
68
sensores - prática
• esquemático
Figura retirada de http://arduino.cc/
69
sensores - prática
• protoboard
Figura retirada de http://arduino.cc/
70
sensores - prática
71
atividade prática!
72
sensores - prática
• chave no pino 2 seleciona a saída do LED – “fade” ou “blink”
73
Perguntas
74
voltando à eletrônica...
75
eletrônica – sinais analógicos e digitais
sinal com variação contínua no tempo
sinal com variação discreta (valores pré-definidos)
76
eletrônica – conversão de sinais
valor é lido em intervalos regulares de tempo e transformado em um número digital
77
eletrônica – conversão de sinais
vários valores, não só HIGH e LOW. quantiade de valores é a resolução.
78
eletrônica – conversão de sinais
resolução de 8 bits = 256 valoresresolução de 16 bits = 65536 valores
79
eletrônica - resistores
• Como funciona um resistor variável?
• no arduino, o valor da tensão é transformado em um valor digital entre 0 e 1023
80
atividade prática!
81
sensores analógicos – prática
• ler o valor do resistor variável e ligar um LED se esse valor passar de um determinado limite.
82
sensores analógicos – prática
• esquemático
Figura retirada de http://arduino.cc/
83
sensores analógicos – prática
• circuito
Figura retirada de http://arduino.cc/
84
entrada analógica – prática
Instituto de Inovação com TIC
[ Dezembro/2010 ]
protocolos de comunicação
86
comunicação serial – RS232
• chip ATMEGA 168 só tem interface serial, não tem USB
• nossa placa arduino possui um chip que converte Serial para USB
• usamos o mesmo cabo USB pra enviar dados pro PC via serial
87
comunicação serial – RS232
• o arduino possui uma biblioteca que implementa comunicação serial
• Serial.begin();
• Serial.print();
• Serial.read();
88
comunicação serial – RS232
• Leds• TX: dados
enviados para o PC
• RX: dados recebidos do PC
89
•atividade prática!
90
comunicação serial - prática
“Hello Arduino” via serial
91
comunicação serial - prática
92
eletrônica – resistores LDR
• resistor variável sensível à luz
93
eletrônica – resistores LDR
• resistor variável sensível à luz
circuito para arduino
porque o resistor de 1k? - para limitar a corrente se o LDR assumir valores muito baixos
94
•atividade prática!
95
comunicação serial - prática
ler valores do LDR e enviar via serial
96
atividade prática!
97
entrada analógica – prática
• fazer uma “escala de leds” que acendem de acordo com o aumento do valor lido do LDR na entrada analógica.
98
Perguntas
99
sensores sonoros
• microfones• transformam ondas sonoras em ondas elétricas
• a variação de tensão é bem pequena em um microfone de eletreto
• precisa de circuito para amplificar o sinal e seu valor poder ser lido pelo arduino
100
sensores sonoros
• circuito para amplificar o sinal do microfone para o arduino
101
sensores sonoros
• já temos o circuito pronto!
102
•atividade prática!
103
sensores sonoros - prática
• detectar comandos sonoros e acender leds correspondentes
• dica: medir a tensão de saída do circuito para calibrar o microfone (lembrando que a saída “segura” o valor por 0,5 segundo).
104
Perguntas
105
atuadores sonoros
• Buzzer piezoelétrico• formado por
cerâmica piezoelétrica e disco metálico
• ao receber uma tensão o cristal se expande, quando removemos a tensão ele volta
106
atuadores sonoros
• Buzzer piezoelétrico• 2 fios: preto é
negativo e vermelho é positivo
• aplicando uma tensão variável produz vibração que é traduzida em som
107
•atividade prática!
108
atuadores sonoros - prática
• programar o arduino para emitir som
• como ligar o buzzer: fio preto no GND e vermelho no pino de saída desejado
• podemos ligar um resistor em série para diminuir o volume
109
atuadores sonoros
• como programar o arduino para tocar uma nota musical?
• uma nota musical é um som em uma determinada frequência
• a frequência de uma nota significa quantas vezes o atuador sonoro vibra em 1 segundo
110
atuadores sonoros
• para fazer o atuador vibrar, escrevemos no pino uma sequência de valores HIGH e LOW, tantas vezes por segundo quanto for a frequência da nota
• o tempo de cada variação HIGH e LOW é chamada de período e é o inverso da frequência
baixa frequência
alta frequência
período
período
1 segundo
111
plataforma arduino - linguagem
• funções
tipoRetorno nome(tipo parametro1, tipo parametro2) { //corpo da fução
return variavel_do_mesmo_tipo_de_retorno; }
Exemplo:
int funcaoSoma(int a, int b) { int resultado = a + b;
return resultado; }
112
plataforma arduino - linguagem
• arrays• conjunto (sequencia) de variáveis do mesmo
tipo• seus valores são acessados através do índice
tipo nome[tamanho] = {lista de valores separados por virgula};
Exemplo:int valores[4] = {100, 200, 300, 400};char vogais [5] = {‘a’, ‘e’, ‘i’, ‘o’, ‘u’};
int num = valores[2];int y = 3;int x = valores[y];char vogal = vogais[y];
113
atuadores sonoros
• como programar o arduino para para tocar uma nota musical?
timeHigh = periodo / 2 = 1 / (2 * frequência)
* nota frequência periodo tempo em nivel alto* c (dó) 261 Hz 3830 1915 * d (ré) 294 Hz 3400 1700 * e (mi) 329 Hz 3038 1519 * f (fá) 349 Hz 2864 1432 * g (sol) 392 Hz 2550 1275 * a (lá) 440 Hz 2272 1136 * b (si) 493 Hz 2028 1014 * C (dó) 523 Hz 1912 956
char notes[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
114
•atividade prática!
115
atuadores sonoros - prática
• programar o arduino para tocar uma nota musical
void playTone(int period, int duration) { for (long i = 0; i < duration * 1000L; i += period * 2) { digitalWrite(speakerPin, HIGH); delayMicroseconds(period); digitalWrite(speakerPin, LOW); delayMicroseconds(period); }}
116
•atividade prática!
117
atuadores sonoros - prática
• tocar uma melodia, baseado na escala de notas abaixo:
• cdef ff cdcd dd cgfe ee cdef ff
118
Perguntas
Instituto de Inovação com TIC
[ Dezembro/2010 ]
displays
120
eletrônica – displays de LEDs (7 seg)
conjunto de leds organizados de forma a representar numeros e caracteres
ligando os leds corretos, representamos numeros
catodo comum ou anodo comum
121
•atividade prática!
122
displays de LEDs - prática
temporizador digital
123
displays de LEDs - prática
temporizador digital - protoboard
124
Perguntas
125
prática final de hoje – luzes e sons
• montar um “dispositivo” interativo que utilize luz e som como entradas e/ou saídas.
126
arduino - referencias
• Lista dos comandos da linguagem em:
http://arduino.cc/en/Reference/HomePage
• Lista dos tutoriais em:
http://www.arduino.cc/en/Tutorial/HomePage