Upload
toninho-porpino
View
217
Download
0
Embed Size (px)
Citation preview
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
1/126
Instituto de Inovao com TIC
[ Dezembro/2010 ]
introduo ao arduinoTiago Barros|[email protected]
Inovao a gente!
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
2/126
2
contedo
computao fsica conceitos bsicos de eletricidade conceitos bsicos de eletrnica plataforma arduino sinais analgicos e digitais sensores e atuadores
comunicao serial
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
3/126
Instituto de Inovao com TIC
[ Dezembro/2010 ]
computao fsica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
4/126
4
computao fsica
uso de computao e eletrnica [sensores eatuadores] na prototipao de objetos fsicos
para interao com seres humanos
comportamento implementado por software
utilizao de microcontroladores
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
5/126
5
computao fsica
o objetivo interligar o mundo fsico com omundo virtual
usar a computao e a interao com atecnologia para o desenvolvimento das suasatividades
meio para comunicao e interao entrepessoas
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
6/126
6
computao fsica
como vemos oscomputadores?
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
7/126
7
computao fsica
teclado
mouse
monitor
CPU
caixas de som
como vemos os computadores?
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
8/126
8
computao fsica
como oscomputadores
nos veem?
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
9/126
9
computao fsica
dedos[teclado/mouse]
olho[monitor]
duas orelhas[caixas de som]
reflexo das entradas e sadas do computador
como os computadores nos veem?
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
10/126
10
computao fsica
mudar a forma que os
computadores nos veemmudar como eles
interagem conosco Tom Igoe Physical Computing
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
11/126
Instituto de Inovao com TIC
[ Dezembro/2010 ]
conceitos bsicos deeletricidade
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
12/126
12
eletricidade
eletricidade - interao entre partculas atmicas
universo formado de tomos
partculas atmicas:
prtons: cargas positivas
eltrons: cargas negativas
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
13/126
13
eletricidade
Atomos com mais eltrons queprtons esto carregadosnegativamente (on negativo)
Atomos com menos eltrons que prtons esto carregadospositivamente (on positivo)
buraco
eltron extra
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
14/126
14
eletricidade
cargas iguais se repelem cargas opostas se atraem
cargas em movimentogeram campo magntico
campo magntico em movimentogera corrente eltrica
NS
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
15/126
15
eletricidade condutores e isolantes
isolante evita a passagem de eltrons
condutor permite o fluxo de eltrons
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
16/126
16
eletricidade diferena de potencial (v)
cargas negativas
quanto maior a tenso, mais fora teem os eltrons
diferena de potencialou tenso.
cargas positivas
V
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
17/126
17
eletricidade corrente eltrica (i)
quanto maior a corrente,maior a quantidade de eltrons
fluxo de eltrons em um condutor
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
18/126
18
eletricidade tipos de corrente eltrica
corrente contnua
corrente alternada
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
19/126
19
eletricidade tipos de corrente eltrica
inverso de polaridade no tempo
mesma polaridade no tempo (sentido continuo)
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
20/126
20
eletricidade resistncia eltrica (r)
propriedade do material condutor em reduzira passagem dos eltrons
eltrons se acumulam e batemno condutor, dissipando sua energia (gerando calor)
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
21/126
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
22/126
22
eletricidade circuito eltrico
+
V
i
R
gerador[fonte]
condutor[caminho]
carga[consumidor]
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
23/126
23
e agora,computao...
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
24/126
Instituto de Inovao com TIC
[ Dezembro/2010 ]
sistemas computacionaisreativos
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
25/126
25
sistemas computacionais reativos
percepo do ambiente, recebendo estmulosatavs de sensores;
e reao aos estmulos, de acordo com o seucomportamento (software), atravs deatuadores.
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
26/126
Instituto de Inovao com TIC
[ Dezembro/2010 ]
plataforma Arduino
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
27/126
27
plataforma arduino
microcontrolador Atmel
programao usando Wiring (subconjunto deprocessing, baseado em C/C++)
open-source: evoluo da plataforma atravs
de contribuies dos usurios
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
28/126
28
plataforma arduino - hardware
Duemilanovemini
lilypad
boarduino
paperduino megapro
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
29/126
29
plataforma arduino - hardware
portas 14 entradas/sadas digitais 6 entradas analgicas
memria RAM: 1K Flash (programa): 16k 2k (bootloader)
velocidade de processamento: 16MHz
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
30/126
30
plataforma arduino hardware
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
31/126
31
plataforma arduino - instalao
driverwindows: FTDI Serial USBlinux: no precisa instalar nada :-)
software s descompactar e executar
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
32/126
32
plataforma arduino - instalao
Selecionando a placa e a porta serial
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
33/126
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
34/126
34
plataforma arduino ciclo de vida
escrever
compilar
enviar para placa
verificar execuo
corrigir erros
corrigir erros
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
35/126
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
36/126
36
plataforma arduino estrutura do sketch
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
37/126
37
plataforma arduino linguagem
linguagem baseada em C (mas bem mais fcil)
comandos bsicos
pinMode() define um pino com entrada ou sada
digitalWrite() liga ou desliga uma sada digital
delay() espera um determinado tempo
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
38/126
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);
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
39/126
39
plataforma arduino linguagem
constantes
LOW | HIGH indica nvel baixo (0V) e alto (5V) nos pinos
INPUT | OUTPUT define se um pino vai ser pino de entrada oude sada
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
40/126
40
atividadeprtica!
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
41/126
41
prtica
fazer o programa hello arduino, que pisca umled
use o pino 13 de sada digital, a placa j possuium led ligado a ele :-)
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
42/126
42
plataforma arduino hello arduino
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
43/126
43
Perguntas
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
44/126
44
plataforma arduino linguagem
comandos bsicos
analogWrite() escreve um valor analgico no pino
analogWrite(num_pino, valor); valor entre 0 e 255
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
45/126
45
eletrnica modulao PWM
a funo analogWrite() escrevepulsos muito rpidos no pinodigital (s funciona nos pinosmarcados com PWM).
o valor a ser escrito representao tempo que o pulso fica emnvel alto e varia de 0 a 255.
quanto mais tempo o pultopermanecer em nvel alto,maior a tenso mdia dasada
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
46/126
46
plataforma arduino - linguagem
variveis Espao reservado na memria para armazenamento
de valores Variveis so 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;
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
47/126
47
plataforma arduino linguagem
for
for (inicializao; condio; incremento) {
//comando(s);}
for (int i=0; i
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
48/126
48
mais prtica!
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
49/126
49
eletrnica protoboard
antes disso: Protoboard
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
50/126
50
eletrnica protoboard
jumpers
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
51/126
51
antes dissomais um poucode eletrnica...
l
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
52/126
52
eletrnica resistores
oferecem resistncia passagem da corrente eltrica
transformam energia eltrica em energia trmica[pode ser usado como atuador]
tipos:
carvo [carbono]filmefio
resistncia:
fixovarivel
l i i
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
53/126
53
eletrnica resistores
valores expressos em ohms
o corpo dos resistores possui um cdigo de cores para identificar ovalor
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
54/126
54
agora sim,prtica!
i
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
55/126
55
prtica
modificar o programa hello arduino paraacender o led com efeito de fading (acendergradativamente)
dica: use analogWrite() em vez dedigitalWrite(), variando os valores escritos, de 0a 255
i
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
56/126
56
prtica
circuito
Figura retirada de http://arduino.cc/
ti
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
57/126
57
prtica
esquemtico
Figura retirada de http://arduino.cc/
ti
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
58/126
58
prtica
protoboard
Figura retirada dehttp://www.multilogica-shop.com/Aprendendo/Exemplos/Fading
ti
http://www.multilogica-shop.com/Aprendendo/Exemplos/Fadinghttp://www.multilogica-shop.com/Aprendendo/Exemplos/Fadinghttp://www.multilogica-shop.com/Aprendendo/Exemplos/Fadinghttp://www.multilogica-shop.com/Aprendendo/Exemplos/Fading8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
59/126
59
prtica
Mos obra!
modificar o programa hello arduino para
acender o led com efeito de fading (acendergradativamente)
dica: use analogWrite() em vez dedigitalWrite(), variando os valores escritos, de 0a 255
P g t
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
60/126
60
Perguntas
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
61/126
sensores chave (switch/button)
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
62/126
62
sensores chave (switch/button)
interrompe a passagem da corrente eltrica liga/desliga o circuito sensor de toque
esquemtico
plataforma arduino linguagem
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
63/126
63
plataforma arduino linguagem
Comandos digitalRead() le um pino de entrada
Exemplo: int chave = 0; chave = digitalRead(num_do_pino);
plataforma arduino linguagem
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
64/126
64
plataforma arduino linguagem
ifif (variavel == 0) {
// faa alguma coisa}
if else if (variavel == 1){
// acao A} else {
// acao B}
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
65/126
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
66/126
66
atividadeprtica!
sensores prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
67/126
67
sensores - prtica
fazer o circuito e o programa para acender oled 13 de acordo com sinal de entrada do pino 2
sensores prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
68/126
68
sensores - prtica
esquemtico
Figura retirada de http://arduino.cc/
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
69/126
sensores prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
70/126
70
sensores - prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
71/126
71
atividadeprtica!
sensores - prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
72/126
72
sensores - prtica
chave no pino 2 seleciona a sada do LED fade ou blink
Perguntas
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
73/126
73
Perguntas
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
74/126
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
75/126
eletrnica converso de sinais
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
76/126
76
eletrnica converso de sinais
valor lido em intervalos regulares de tempo etransformado em um nmero digital
eletrnica converso de sinais
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
77/126
77
eletrnica converso de sinais
vrios valores, no s HIGH e LOW. quantiade devalores a resoluo.
eletrnica converso de sinais
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
78/126
78
eletrnica converso de sinais
resoluo de 8 bits = 256 valoresresoluo de 16 bits = 65536 valores
eletrnica - resistores
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
79/126
79
eletrnica resistores
Como funciona um resistor varivel?
no arduino, o valor da tenso transformadoem um valor digital entre 0 e 1023
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
80/126
80
atividadeprtica!
sensores analgicos prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
81/126
81
sensores analgicos prtica
ler o valor do resistor varivel e ligar um LED seesse valor passar de um determinado limite.
sensores analgicos prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
82/126
82
sensores analgicos prtica
esquemtico
Figura retirada de http://arduino.cc/
sensores analgicos prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
83/126
83
se so es a a g cos p t ca
circuito
Figura retirada de http://arduino.cc/
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
84/126
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
85/126
Instituto de Inovao com TIC
[ Dezembro/2010 ]
protocolos decomunicao
comunicao serial RS232
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
86/126
86
chip ATMEGA 168 s tem interface serial, notem USB
nossa placa arduino possui um chip queconverte Serial para USB
usamos o mesmo cabo USB pra enviar dados proPC via serial
comunicao serial RS232
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
87/126
87
o arduino possui uma biblioteca queimplementa comunicao serial
Serial.begin();
Serial.print();
Serial.read();
comunicao serial RS232
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
88/126
88
Leds TX: dados enviados
para o PC
RX: dadosrecebidos do PC
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
89/126
89
atividadeprtica!
comunicao serial - prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
90/126
90
p
Hello Arduino via serial
comunicao serial - prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
91/126
91
p
eletrnica resistores LDR
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
92/126
92
resistor varivel sensvel luz
eletrnica resistores LDR
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
93/126
93
resistor varivel sensvel luz
circuito para arduino
porque o resistor de 1k?- para limitar a correntese o LDR assumir valoresmuito baixos
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
94/126
94
atividadeprtica!
comunicao serial - prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
95/126
95
ler valores do LDR e enviar via serial
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
96/126
96
atividadeprtica!
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
97/126
Perguntas
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
98/126
98
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
99/126
sensores sonoros
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
100/126
100
circuito para amplificar o sinal do microfonepara o arduino
sensores sonoros
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
101/126
101
j temos o circuito pronto!
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
102/126
102
atividadeprtica!
sensores sonoros - prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
103/126
103
detectar comandos sonoros e acender ledscorrespondentes
dica: medir a tenso de sada do circuito paracalibrar o microfone (lembrando que a sadasegura o valor por 0,5 segundo).
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
104/126
atuadores sonoros
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
105/126
105
Buzzer piezoeltrico formado por cermica
piezoeltrica e discometlico
ao receber uma tensoo cristal se expande,quando removemos atenso ele volta
atuadores sonoros
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
106/126
106
Buzzer piezoeltrico 2 fios: preto
negativo e vermelho positivo
aplicando uma tensovarivel produzvibrao que traduzida em som
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
107/126
107
atividadeprtica!
atuadores sonoros - prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
108/126
108
programar o arduinopara emitir som
como ligar o buzzer: fiopreto no GND evermelho no pino desada desejado
podemos ligar umresistor em srie paradiminuir o volume
atuadores sonoros
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
109/126
109
como programar o arduino para tocar uma notamusical?
uma nota musical um som em uma determinadafrequncia
a frequncia de uma nota significa quantas vezes oatuador sonoro vibra em 1 segundo
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
110/126
plataforma arduino - linguagem
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
111/126
111
funestipoRetorno nome(tipo parametro1, tipo parametro2){
//corpo da fuo
return variavel_do_mesmo_tipo_de_retorno;}
Exemplo:
int funcaoSoma(int a, int b)
{int resultado = a + b;
return resultado;}
plataforma arduino - linguagem
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
112/126
112
arrays conjunto (sequencia) de variveis do mesmo tipo seus valores so acessados atravs 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];
atuadores sonoros
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
113/126
113
como programar o arduino para para tocar umanota musical?
timeHigh = periodo / 2 = 1 / (2 * frequncia)
* nota frequncia 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 };
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
114/126
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
115/126
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
116/126
116
atividadeprtica!
atuadores sonoros - prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
117/126
117
tocar uma melodia, baseado na escala de notasabaixo:
cdef ff cdcd dd cgfe ee cdef ff
Perguntas
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
118/126
118
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
119/126
eletrnica displays de LEDs (7 seg)
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
120/126
120
conjunto de leds organizados de forma a representar numeros ecaracteres
ligando os leds corretos, representamos numeros
catodo comum ouanodo comum
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
121/126
121
atividadeprtica!
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
122/126
displays de LEDs - prtica
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
123/126
123
temporizador digital - protoboard
Perguntas
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
124/126
124
prtica final de hoje luzes e sons
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
125/126
125
montar um dispositivo interativo que utilizeluz e som como entradas e/ou sadas.
arduino - referencias
8/13/2019 cesarintroducaoarduino-101207113912-phpapp01
126/126
Lista dos comandos da linguagem em:
http://arduino.cc/en/Reference/HomePage
Lista dos tutoriais em:
http://www.arduino.cc/en/Tutorial/HomePage
http://arduino.cc/en/Reference/HomePagehttp://www.arduino.cc/en/Tutorial/HomePagehttp://www.arduino.cc/en/Tutorial/HomePagehttp://arduino.cc/en/Reference/HomePage