Você está na página 1de 126

Instituto de Inovao com TIC

[ Dezembro/2010 ]

introduo ao arduino
Tiago Barros|tiago.barros@cesar.org.br

Inovao a gente!

contedo

computao fsica conceitos bsicos de eletricidade conceitos bsicos de eletrnica plataforma arduino sinais analgicos e digitais sensores e atuadores comunicao serial

Instituto de Inovao com TIC


[ Dezembro/2010 ]

computao fsica

computao fsica

uso de computao e eletrnica [sensores e atuadores] na prototipao de objetos fsicos para interao com seres humanos
comportamento implementado por software utilizao de microcontroladores

computao fsica

o objetivo interligar o mundo fsico com o mundo virtual


usar a computao e a interao com a tecnologia para o desenvolvimento das suas atividades meio para comunicao e interao entre pessoas
5

computao fsica

como vemos os computadores?


6

computao fsica
como vemos os computadores?

teclado mouse monitor CPU caixas de som

computao fsica

como os computadores nos veem?


8

computao fsica
como os computadores nos veem?

dedos [teclado/mouse]

olho [monitor]
duas orelhas [caixas de som]

reflexo das entradas e sadas do computador


9

computao fsica

mudar a forma que os computadores nos veem mudar como eles interagem conosco
Tom Igoe Physical Computing
10

Instituto de Inovao com TIC


[ Dezembro/2010 ]

conceitos bsicos de eletricidade

eletricidade

universo formado de tomos partculas atmicas:

prtons: cargas positivas

eltrons: cargas negativas eletricidade - interao entre partculas atmicas


12

eletricidade

eltron extra

buraco Atomos com mais eltrons que prtons esto carregados negativamente (on negativo) Atomos com menos eltrons que prtons esto carregados positivamente (on positivo)

13

eletricidade

cargas iguais se repelem

cargas opostas se atraem

cargas em movimento geram campo magntico


14

campo magntico em movimento gera corrente eltrica

eletricidade condutores e isolantes

condutor permite o fluxo de eltrons

isolante evita a passagem de eltrons

15

eletricidade diferena de potencial (v)

cargas positivas

diferena de potencial ou tenso.

cargas negativas

quanto maior a tenso, mais fora teem os eltrons


16

eletricidade corrente eltrica (i)

fluxo de eltrons em um condutor

quanto maior a corrente, maior a quantidade de eltrons


17

eletricidade tipos de corrente eltrica

corrente contnua

corrente alternada

18

eletricidade tipos de corrente eltrica

mesma polaridade no tempo (sentido continuo)

inverso de polaridade no tempo


19

eletricidade resistncia eltrica (r)

propriedade do material condutor em reduzir a passagem dos eltrons

eltrons se acumulam e batem no condutor, dissipando sua energia (gerando calor)


20

eletricidade lei de ohm

V=RxI

V
R I
R = V/I I = V/R

a diferena de potencial (V) entre dois pontos de um condutor proporcional corrente eltrica (I) que o percorre e sua resistncia (R)
21

eletricidade circuito eltrico

carga [consumidor] + gerador [fonte]

condutor [caminho]

22

e agora, computao...
23

Instituto de Inovao com TIC


[ Dezembro/2010 ]

sistemas computacionais reativos

sistemas computacionais reativos

percepo do ambiente, recebendo estmulos atavs de sensores; e reao aos estmulos, de acordo com o seu comportamento (software), atravs de atuadores.

25

Instituto de Inovao com TIC


[ Dezembro/2010 ]

plataforma Arduino

plataforma arduino

microcontrolador Atmel
programao usando Wiring (subconjunto de processing, baseado em C/C++) open-source: evoluo da plataforma atravs de contribuies dos usurios

27

plataforma arduino - hardware

lilypad

boarduino

mini

Duemilanove

paperduino

pro
28

mega

plataforma arduino - hardware

portas
14 entradas/sadas digitais 6 entradas analgicas

memria
RAM: 1K Flash (programa): 16k 2k (bootloader)

velocidade de processamento: 16MHz


29

plataforma arduino hardware

30

plataforma arduino - instalao

driver windows: FTDI Serial USB linux: no precisa instalar nada :-) software s descompactar e executar

31

plataforma arduino - instalao

Selecionando a placa e a porta serial

32

plataforma arduino ambiente

compilar (verif. programa)

exibir serial

rea de cdigo parar execuo novo abrir

salvar
enviar programa para placa
33

rea de status e sada serial

plataforma arduino ciclo de vida

escrever
corrigir erros

compilar enviar para placa verificar execuo

corrigir erros

34

Instituto de Inovao com TIC


[ Dezembro/2010 ]

atuadores

plataforma arduino estrutura do sketch

36

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

37

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);

38

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 ou de sada

39

atividade prtica!
40

prtica

fazer o programa hello arduino, que pisca um led


use o pino 13 de sada digital, a placa j possui um led ligado a ele :-)

41

plataforma arduino hello arduino

42

Perguntas

43

plataforma arduino linguagem

comandos bsicos
analogWrite() escreve um valor analgico no pino analogWrite(num_pino, valor); valor entre 0 e 255

44

eletrnica modulao PWM

a funo analogWrite() escreve pulsos muito rpidos no pino digital (s funciona nos pinos marcados com PWM). o valor a ser escrito representa o tempo que o pulso fica em nvel alto e varia de 0 a 255. quanto mais tempo o pulto permanecer em nvel alto, maior a tenso mdia da sada

45

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;
46

plataforma arduino linguagem

for
for (inicializao; condio; incremento) { //comando(s); }

for (int i=0; i <= 255; i++){ analogWrite(PWMpin, i); delay(10); }

47

mais prtica!

48

eletrnica protoboard

antes disso:
Protoboard

49

eletrnica protoboard

jumpers

50

antes disso mais um pouco de eletrnica...


51

eletrnica resistores

oferecem resistncia passagem da corrente eltrica


resistncia: fixo varivel

tipos: carvo [carbono] filme fio

transformam energia eltrica em energia trmica [pode ser usado como atuador]
52

eletrnica resistores
valores expressos em ohms o corpo dos resistores possui um cdigo de cores para identificar o valor

53

agora sim, prtica!


54

prtica

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

55

prtica

circuito

Figura retirada de http://arduino.cc/

56

prtica

esquemtico

Figura retirada de http://arduino.cc/

57

prtica

protoboard

Figura retirada de http://www.multilogica-shop.com/Aprendendo/Exemplos/Fading 58

prtica

Mos 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
59

Perguntas

60

Instituto de Inovao com TIC


[ Dezembro/2010 ]

sensores

sensores chave (switch/button)

interrompe a passagem da corrente eltrica liga/desliga o circuito sensor de toque

esquemtico

62

plataforma arduino linguagem

Comandos digitalRead() le um pino de entrada

Exemplo: int chave = 0; chave = digitalRead(num_do_pino);

63

plataforma arduino linguagem

if
if (variavel == 0) { // faa alguma coisa }

if else
if (variavel == 1){ // acao A } else { // acao B

64

sensores

arduino l tenses de entrada (e no valores 0 e 1)

5 volts == HIGH (1) 0 volts == LOW (0)


sem conexo em um pino, a entrada flutua entre 0 e 5 volts (HIGH e LOW)

este resistor necessrio para que o pino seja levado para 0 quando no estiver conectado (chave aberta)
65

atividade prtica!
66

sensores - prtica

fazer o circuito e o programa para acender o led 13 de acordo com sinal de entrada do pino 2

67

sensores - prtica

esquemtico

Figura retirada de http://arduino.cc/

68

sensores - prtica

protoboard

Figura retirada de http://arduino.cc/

69

sensores - prtica

70

atividade prtica!
71

sensores - prtica

chave no pino 2 seleciona a sada do LED fade ou blink

72

Perguntas

73

voltando eletrnica...
74

eletrnica sinais analgicos e digitais

sinal com variao discreta (valores pr-definidos)

sinal com variao contnua no tempo

75

eletrnica converso de sinais

valor lido em intervalos regulares de tempo e transformado em um nmero digital

76

eletrnica converso de sinais

vrios valores, no s HIGH e LOW. quantiade de valores a resoluo.

77

eletrnica converso de sinais

resoluo de 8 bits = 256 valores resoluo de 16 bits = 65536 valores

78

eletrnica - resistores

Como funciona um resistor varivel?

no arduino, o valor da tenso transformado em um valor digital entre 0 e 1023


79

atividade prtica!
80

sensores analgicos prtica

ler o valor do resistor varivel e ligar um LED se esse valor passar de um determinado limite.

81

sensores analgicos prtica

esquemtico

Figura retirada de http://arduino.cc/

82

sensores analgicos prtica

circuito

Figura retirada de http://arduino.cc/

83

entrada analgica prtica

84

Instituto de Inovao com TIC


[ Dezembro/2010 ]

protocolos de comunicao

comunicao serial RS232

chip ATMEGA 168 s tem interface serial, no 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

86

comunicao serial RS232

o arduino possui uma biblioteca que implementa comunicao serial


Serial.begin(); Serial.print();

Serial.read();

87

comunicao serial RS232

Leds
TX: dados enviados para o PC RX: dados recebidos do PC

88

atividade prtica!
89

comunicao serial - prtica

Hello Arduino via serial

90

comunicao serial - prtica

91

eletrnica resistores LDR

resistor varivel sensvel luz

92

eletrnica resistores LDR

resistor varivel sensvel luz


circuito para arduino porque o resistor de 1k? - para limitar a corrente se o LDR assumir valores muito baixos

93

atividade prtica!
94

comunicao serial - prtica

ler valores do LDR e enviar via serial

95

atividade prtica!
96

entrada analgica prtica

fazer uma escala de leds que acendem de acordo com o aumento do valor lido do LDR na entrada analgica.

97

Perguntas

98

sensores sonoros
microfones
transformam ondas sonoras em ondas eltricas

a variao de tenso bem pequena em um microfone de eletreto precisa de circuito para amplificar o sinal e seu valor poder ser lido pelo arduino
99

sensores sonoros
circuito para amplificar o sinal do microfone para o arduino

100

sensores sonoros
j temos o circuito pronto!

101

atividade prtica!
102

sensores sonoros - prtica


detectar comandos sonoros e acender leds correspondentes dica: medir a tenso de sada do circuito para calibrar o microfone (lembrando que a sada segura o valor por 0,5 segundo).

103

Perguntas

104

atuadores sonoros

Buzzer piezoeltrico
formado por cermica piezoeltrica e disco metlico ao receber uma tenso o cristal se expande, quando removemos a tenso ele volta
105

atuadores sonoros

Buzzer piezoeltrico
2 fios: preto negativo e vermelho positivo aplicando uma tenso varivel produz vibrao que traduzida em som
106

atividade prtica!
107

atuadores sonoros - prtica

programar o arduino para emitir som como ligar o buzzer: fio preto no GND e vermelho no pino de sada desejado podemos ligar um resistor em srie para diminuir o volume
108

atuadores sonoros

como programar o arduino para tocar uma nota musical?


uma nota musical um som em uma determinada frequncia a frequncia de uma nota significa quantas vezes o atuador sonoro vibra em 1 segundo

109

atuadores sonoros
1 segundo

para fazer o atuador vibrar, escrevemos no pino uma sequncia de valores HIGH e LOW, tantas vezes por segundo quanto for a frequncia da nota o tempo de cada variao HIGH e LOW chamada de perodo e o inverso da frequncia

baixa frequncia

perodo

alta frequncia

perodo

110

plataforma arduino - linguagem

funes
tipoRetorno 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; }
111

plataforma arduino - linguagem

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];

112

atuadores sonoros

como programar o arduino para para tocar uma nota musical?


timeHigh = periodo / 2 = 1 / (2 * frequncia) * * * * * * * * * nota c (d) d (r) e (mi) f (f) g (sol) a (l) b (si) C (d) frequncia 261 Hz 294 Hz 329 Hz 349 Hz 392 Hz 440 Hz 493 Hz 523 Hz periodo 3830 3400 3038 2864 2550 2272 2028 1912 tempo em nivel alto 1915 1700 1519 1432 1275 1136 1014 956

char notes[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; 113

atividade prtica!
114

atuadores sonoros - prtica

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); } }

115

atividade prtica!
116

atuadores sonoros - prtica

tocar uma melodia, baseado na escala de notas abaixo: cdef ff cdcd dd cgfe ee cdef ff

117

Perguntas

118

Instituto de Inovao com TIC


[ Dezembro/2010 ]

displays

eletrnica displays de LEDs (7 seg)


conjunto de leds organizados de forma a representar numeros e caracteres

catodo comum ou anodo comum

ligando os leds corretos, representamos numeros


120

atividade prtica!
121

displays de LEDs - prtica

temporizador digital

122

displays de LEDs - prtica


temporizador digital - protoboard

123

Perguntas

124

prtica final de hoje luzes e sons

montar um dispositivo interativo que utilize luz e som como entradas e/ou sadas.

125

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

126