c.e.s.a.r introducao ao arduino

126
Instituto de Inovação com TIC [ Dezembro/2010 ] introdução ao arduino Tiago Barros| [email protected] Inovação é a gente!

Upload: tiago-barros

Post on 18-May-2015

11.466 views

Category:

Education


1 download

TRANSCRIPT

Page 1: C.E.S.A.R Introducao ao Arduino

Instituto de Inovação com TIC

[ Dezembro/2010 ]

introdução ao arduino

Tiago Barros|[email protected]

Inovação é a gente!

Page 2: C.E.S.A.R Introducao ao Arduino

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

Page 3: C.E.S.A.R Introducao ao Arduino

Instituto de Inovação com TIC

[ Dezembro/2010 ]

computação física

Page 4: C.E.S.A.R Introducao ao Arduino

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

Page 5: C.E.S.A.R Introducao ao Arduino

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

Page 6: C.E.S.A.R Introducao ao Arduino

6

computação física

como vemos oscomputadores?

Page 7: C.E.S.A.R Introducao ao Arduino

7

computação física

• teclado

• mouse

• monitor

• CPU

• caixas de som

como vemos os computadores?

Page 8: C.E.S.A.R Introducao ao Arduino

8

computação física

como os computadores nos veem?

Page 9: C.E.S.A.R Introducao ao Arduino

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?

Page 10: C.E.S.A.R Introducao ao Arduino

10

computação física

“mudar a forma que os computadores nos

veem mudará como eles interagem

conosco”Tom Igoe – Physical Computing

Page 11: C.E.S.A.R Introducao ao Arduino

Instituto de Inovação com TIC

[ Dezembro/2010 ]

conceitos básicos de eletricidade

Page 12: C.E.S.A.R Introducao ao Arduino

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

Page 13: C.E.S.A.R Introducao ao Arduino

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”

Page 14: C.E.S.A.R Introducao ao Arduino

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

Page 15: C.E.S.A.R Introducao ao Arduino

15

eletricidade – condutores e isolantes

isolante – evita a passagem de elétrons

condutor – permite o fluxo de elétrons

Page 16: C.E.S.A.R Introducao ao Arduino

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

Page 17: C.E.S.A.R Introducao ao Arduino

17

eletricidade – corrente elétrica (i)

quanto maior a corrente, maior a “quantidade” de

elétrons

fluxo de elétrons em um condutor

Page 18: C.E.S.A.R Introducao ao Arduino

18

eletricidade – tipos de corrente elétrica

corrente contínua

corrente alternada

Page 19: C.E.S.A.R Introducao ao Arduino

19

eletricidade – tipos de corrente elétrica

inversão de polaridade no tempo

mesma polaridade no tempo (sentido continuo)

Page 20: C.E.S.A.R Introducao ao Arduino

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)

Page 21: C.E.S.A.R Introducao ao Arduino

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

Page 22: C.E.S.A.R Introducao ao Arduino

22

eletricidade – circuito elétrico

+

V

i

Rgerador[fonte]

condutor[caminho]

carga[consumidor]

Page 23: C.E.S.A.R Introducao ao Arduino

23

e agora, computação..

.

Page 24: C.E.S.A.R Introducao ao Arduino

Instituto de Inovação com TIC

[ Dezembro/2010 ]

sistemas computacionais reativos

Page 25: C.E.S.A.R Introducao ao Arduino

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.

Page 26: C.E.S.A.R Introducao ao Arduino

Instituto de Inovação com TIC

[ Dezembro/2010 ]

plataforma Arduino

Page 27: C.E.S.A.R Introducao ao 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

Page 28: C.E.S.A.R Introducao ao Arduino

28

plataforma arduino - hardware

Duemilanovemini

lilypad

boarduino

paperduino megapro

Page 29: C.E.S.A.R Introducao ao Arduino

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

Page 30: C.E.S.A.R Introducao ao Arduino

30

plataforma arduino – hardware

Page 31: C.E.S.A.R Introducao ao Arduino

31

plataforma arduino - instalação

• driver windows: FTDI Serial USB linux: não precisa instalar nada :-)

• software é só descompactar e executar

Page 32: C.E.S.A.R Introducao ao Arduino

32

plataforma arduino - instalação

• Selecionando a placa e a porta serial

Page 33: C.E.S.A.R Introducao ao Arduino

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

Page 34: C.E.S.A.R Introducao ao Arduino

34

plataforma arduino – ciclo de vida

escrever

compilar

enviar para placa

verificar execução

corrigir erros

corrigir erros

Page 35: C.E.S.A.R Introducao ao Arduino

Instituto de Inovação com TIC

[ Dezembro/2010 ]

atuadores

Page 36: C.E.S.A.R Introducao ao Arduino

36

plataforma arduino – estrutura do sketch

Page 37: C.E.S.A.R Introducao ao Arduino

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

Page 38: C.E.S.A.R Introducao ao Arduino

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

Page 39: C.E.S.A.R Introducao ao Arduino

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

Page 40: C.E.S.A.R Introducao ao Arduino

40

atividade prática!

Page 41: C.E.S.A.R Introducao ao Arduino

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

Page 42: C.E.S.A.R Introducao ao Arduino

42

plataforma arduino – hello arduino

Page 43: C.E.S.A.R Introducao ao Arduino

43

Perguntas

Page 44: C.E.S.A.R Introducao ao Arduino

44

plataforma arduino – linguagem

• comandos básicos

• analogWrite() – escreve um valor analógico no pino

• analogWrite(num_pino, valor); valor entre 0 e 255

Page 45: C.E.S.A.R Introducao ao Arduino

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

Page 46: C.E.S.A.R Introducao ao Arduino

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;

Page 47: C.E.S.A.R Introducao ao Arduino

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

Page 48: C.E.S.A.R Introducao ao Arduino

48

mais prática!

Page 49: C.E.S.A.R Introducao ao Arduino

49

eletrônica – protoboard

• antes disso: • Protoboard

Page 50: C.E.S.A.R Introducao ao Arduino

50

eletrônica – protoboard

• jumpers

Page 51: C.E.S.A.R Introducao ao Arduino

51

antes dissomais um pouco de eletrônica...

Page 52: C.E.S.A.R Introducao ao Arduino

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

Page 53: C.E.S.A.R Introducao ao Arduino

53

eletrônica – resistores

valores expressos em ohms

o corpo dos resistores possui um código de cores para identificar o valor

Page 54: C.E.S.A.R Introducao ao Arduino

54

agora sim, prática!

Page 55: C.E.S.A.R Introducao ao Arduino

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

Page 56: C.E.S.A.R Introducao ao Arduino

56

prática

• circuito

Figura retirada de http://arduino.cc/

Page 57: C.E.S.A.R Introducao ao Arduino

57

prática

• esquemático

Figura retirada de http://arduino.cc/

Page 58: C.E.S.A.R Introducao ao Arduino

58

prática

• protoboard

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

Page 59: C.E.S.A.R Introducao ao Arduino

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

Page 60: C.E.S.A.R Introducao ao Arduino

60

Perguntas

Page 61: C.E.S.A.R Introducao ao Arduino

Instituto de Inovação com TIC

[ Dezembro/2010 ]

sensores

Page 62: C.E.S.A.R Introducao ao Arduino

62

sensores – chave (switch/button)

• interrompe a passagem da corrente elétrica• liga/desliga o circuito• sensor de toque

esquemático

Page 63: C.E.S.A.R Introducao ao Arduino

63

plataforma arduino – linguagem

• Comandos• digitalRead() – le um pino de entrada

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

Page 64: C.E.S.A.R Introducao ao Arduino

64

plataforma arduino – linguagem

• ifif (variavel == 0) { // faça alguma coisa }

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

}

Page 65: C.E.S.A.R Introducao ao Arduino

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)

Page 66: C.E.S.A.R Introducao ao Arduino

66

atividade prática!

Page 67: C.E.S.A.R Introducao ao Arduino

67

sensores - prática

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

Page 68: C.E.S.A.R Introducao ao Arduino

68

sensores - prática

• esquemático

Figura retirada de http://arduino.cc/

Page 69: C.E.S.A.R Introducao ao Arduino

69

sensores - prática

• protoboard

Figura retirada de http://arduino.cc/

Page 70: C.E.S.A.R Introducao ao Arduino

70

sensores - prática

Page 71: C.E.S.A.R Introducao ao Arduino

71

atividade prática!

Page 72: C.E.S.A.R Introducao ao Arduino

72

sensores - prática

• chave no pino 2 seleciona a saída do LED – “fade” ou “blink”

Page 73: C.E.S.A.R Introducao ao Arduino

73

Perguntas

Page 74: C.E.S.A.R Introducao ao Arduino

74

voltando à eletrônica...

Page 75: C.E.S.A.R Introducao ao Arduino

75

eletrônica – sinais analógicos e digitais

sinal com variação contínua no tempo

sinal com variação discreta (valores pré-definidos)

Page 76: C.E.S.A.R Introducao ao Arduino

76

eletrônica – conversão de sinais

valor é lido em intervalos regulares de tempo e transformado em um número digital

Page 77: C.E.S.A.R Introducao ao Arduino

77

eletrônica – conversão de sinais

vários valores, não só HIGH e LOW. quantiade de valores é a resolução.

Page 78: C.E.S.A.R Introducao ao Arduino

78

eletrônica – conversão de sinais

resolução de 8 bits = 256 valoresresolução de 16 bits = 65536 valores

Page 79: C.E.S.A.R Introducao ao Arduino

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

Page 80: C.E.S.A.R Introducao ao Arduino

80

atividade prática!

Page 81: C.E.S.A.R Introducao ao Arduino

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.

Page 82: C.E.S.A.R Introducao ao Arduino

82

sensores analógicos – prática

• esquemático

Figura retirada de http://arduino.cc/

Page 83: C.E.S.A.R Introducao ao Arduino

83

sensores analógicos – prática

• circuito

Figura retirada de http://arduino.cc/

Page 84: C.E.S.A.R Introducao ao Arduino

84

entrada analógica – prática

Page 85: C.E.S.A.R Introducao ao Arduino

Instituto de Inovação com TIC

[ Dezembro/2010 ]

protocolos de comunicação

Page 86: C.E.S.A.R Introducao ao Arduino

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

Page 87: C.E.S.A.R Introducao ao Arduino

87

comunicação serial – RS232

• o arduino possui uma biblioteca que implementa comunicação serial

• Serial.begin();

• Serial.print();

• Serial.read();

Page 88: C.E.S.A.R Introducao ao Arduino

88

comunicação serial – RS232

• Leds• TX: dados

enviados para o PC

• RX: dados recebidos do PC

Page 89: C.E.S.A.R Introducao ao Arduino

89

•atividade prática!

Page 90: C.E.S.A.R Introducao ao Arduino

90

comunicação serial - prática

“Hello Arduino” via serial

Page 91: C.E.S.A.R Introducao ao Arduino

91

comunicação serial - prática

Page 92: C.E.S.A.R Introducao ao Arduino

92

eletrônica – resistores LDR

• resistor variável sensível à luz

Page 93: C.E.S.A.R Introducao ao Arduino

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

Page 94: C.E.S.A.R Introducao ao Arduino

94

•atividade prática!

Page 95: C.E.S.A.R Introducao ao Arduino

95

comunicação serial - prática

ler valores do LDR e enviar via serial

Page 96: C.E.S.A.R Introducao ao Arduino

96

atividade prática!

Page 97: C.E.S.A.R Introducao ao Arduino

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.

Page 98: C.E.S.A.R Introducao ao Arduino

98

Perguntas

Page 99: C.E.S.A.R Introducao ao Arduino

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

Page 100: C.E.S.A.R Introducao ao Arduino

100

sensores sonoros

• circuito para amplificar o sinal do microfone para o arduino

Page 101: C.E.S.A.R Introducao ao Arduino

101

sensores sonoros

• já temos o circuito pronto!

Page 102: C.E.S.A.R Introducao ao Arduino

102

•atividade prática!

Page 103: C.E.S.A.R Introducao ao Arduino

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

Page 104: C.E.S.A.R Introducao ao Arduino

104

Perguntas

Page 105: C.E.S.A.R Introducao ao Arduino

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

Page 106: C.E.S.A.R Introducao ao Arduino

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

Page 107: C.E.S.A.R Introducao ao Arduino

107

•atividade prática!

Page 108: C.E.S.A.R Introducao ao Arduino

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

Page 109: C.E.S.A.R Introducao ao Arduino

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

Page 110: C.E.S.A.R Introducao ao Arduino

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

Page 111: C.E.S.A.R Introducao ao Arduino

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

Page 112: C.E.S.A.R Introducao ao Arduino

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

Page 113: C.E.S.A.R Introducao ao Arduino

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

Page 114: C.E.S.A.R Introducao ao Arduino

114

•atividade prática!

Page 115: C.E.S.A.R Introducao ao Arduino

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

Page 116: C.E.S.A.R Introducao ao Arduino

116

•atividade prática!

Page 117: C.E.S.A.R Introducao ao Arduino

117

atuadores sonoros - prática

• tocar uma melodia, baseado na escala de notas abaixo:

• cdef ff cdcd dd cgfe ee cdef ff

Page 118: C.E.S.A.R Introducao ao Arduino

118

Perguntas

Page 119: C.E.S.A.R Introducao ao Arduino

Instituto de Inovação com TIC

[ Dezembro/2010 ]

displays

Page 120: C.E.S.A.R Introducao ao Arduino

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

Page 121: C.E.S.A.R Introducao ao Arduino

121

•atividade prática!

Page 122: C.E.S.A.R Introducao ao Arduino

122

displays de LEDs - prática

temporizador digital

Page 123: C.E.S.A.R Introducao ao Arduino

123

displays de LEDs - prática

temporizador digital - protoboard

Page 124: C.E.S.A.R Introducao ao Arduino

124

Perguntas

Page 125: C.E.S.A.R Introducao ao Arduino

125

prática final de hoje – luzes e sons

• montar um “dispositivo” interativo que utilize luz e som como entradas e/ou saídas.

Page 126: C.E.S.A.R Introducao ao Arduino

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