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

Post on 18-May-2015

11.466 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Instituto de Inovação com TIC

[ Dezembro/2010 ]

introdução ao arduino

Tiago Barros|tiago.barros@cesar.org.br

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

top related