Interfaces fisicas para dispositivos moveis
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Interfaces fisicas para dispositivos moveis

on

  • 2,530 views

Curso de interfaces fisicas para dispositivos moveis com arduino.

Curso de interfaces fisicas para dispositivos moveis com arduino.

Statistics

Views

Total Views
2,530
Views on SlideShare
2,530
Embed Views
0

Actions

Likes
2
Downloads
240
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Interfaces fisicas para dispositivos moveis Presentation Transcript

  • 1. interfaces físicas para dispositivos móveis Tiago Barros | tiago@tiagobarros.org
  • 2. ApresentaçãoTiago Barros - @tgfbMestre em Ciência da Computação, UFPE / 2007B.Sc. Ciência da Computação, UFPE / 2003Tec. Eletrônica, ETFPE / 1998Engenheiro de Sistemas Sênior do C.E.S.A.REspecialista em tecnologia, Grupo de InovaçãoProfessor de pós-graduação e especialização em diversos cursos: C.E.S.A.R(Recife), Cin/UFPE/Motorola(Recife), Universidade Positivo (Curitiba), Instituto FaberLudens/FISAM/UnC (Curitiba). 2
  • 3. Conteúdo• computação física• alternativas de interfaces físicas para dispositivos móveis• plataforma Arduino• protocolo de comunicação serial• plataforma Amarino• introdução à eletricidade e eletrônica• sinais analógicos e digitais• sensores e atuadores 3
  • 4. Pré-requisitos• desenvolvimento de aplicativos Android 4
  • 5. computação física
  • 6. 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 6
  • 7. 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 7
  • 8. computação física como vemos os computadores? 8
  • 9. computação física como vemos os computadores?• teclado• mouse• monitor• CPU• caixas de som 9
  • 10. computação física como os computadores nos veem? 10
  • 11. computação física como os computadores nos veem?• dedos [teclado/mouse]• olho [monitor]• duas orelhas [caixas de som] reflexo das entradas e saídas do computador 11
  • 12. computação física “mudar a forma que os computadores nos veem mudará como eles interagem conosco” Tom Igoe – Physical Computing 12
  • 13. Perguntas 13
  • 14. sistemas computacionais reativos
  • 15. 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. 15
  • 16. sistemas computacionais reativos comunicação entre redes de sensores e atuadores para formar um ambiente dinâmico e interativo interação de sensores e atuadores com dispositivos móveis 16
  • 17. interfaces físicas para dispositivos móveis
  • 18. interfaces físicas para dispositivos móveis comunicação micro-controlador sensor sensor atuador 18
  • 19. interfaces físicas para dispositivos móveis android 19
  • 20. interfaces físicas para dispositivos móveis comunicação micro-controlador sensor sensor atuador 20
  • 21. interfaces físicas para dispositivos móveis arduino micro-controlador sensor sensor atuador 21
  • 22. interfaces físicas para dispositivos móveis comunicação micro-controlador sensor sensor atuador 22
  • 23. interfaces físicas para dispositivos móveis comunicação amarino = + 23
  • 24. plataforma arduino
  • 25. 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 25
  • 26. plataforma arduino - hardware lilypad miniboarduino unopaperduino mega pro 26
  • 27. 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 27
  • 28. plataforma arduino – hardware 28
  • 29. plataforma arduino - instalação• driver windows: FTDI Serial USB linux: não precisa instalar nada :-)• software é só descompactar e executar 29
  • 30. plataforma arduino - instalação• Selecionando a placa e a porta serial 30
  • 31. plataforma arduino – ambiente compilar exibir serial(verif. programa) área de código parar execução novo abrir salvarenviar programa para placa área de status 31
  • 32. plataforma arduino – ciclo de vida escrever corrigir erros compilar enviar para placa corrigir erros verificar execução 32
  • 33. atuadores
  • 34. plataforma arduino – estrutura do sketch 34
  • 35. 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 35
  • 36. 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); 36
  • 37. 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 37
  • 38. atividade prática! 38
  • 39. 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 :-) 39
  • 40. plataforma arduino – hello arduino 40
  • 41. Perguntas 41
  • 42. protocolos de comunicação
  • 43. comunicação serial – RS232• chip ATMEGA 328 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 43
  • 44. comunicação serial – RS232• o arduino possui uma biblioteca que implementa comunicação serial• Serial.begin();• Serial.print();• Serial.read(); 44
  • 45. comunicação serial – RS232• Leds • TX: dados enviados para o PC • RX: dados recebidos do PC 45
  • 46. atividade prática! 46
  • 47. comunicação serial - prática“Hello Arduino” via serial 47
  • 48. comunicação serial - prática 48
  • 49. Perguntas 49
  • 50. bibliotecas do arduino
  • 51. bibliotecas do arduino• é possível estender a plataforma Arduino com adição de componentes de código, para controlar sensores e atuadores específicos.• estes componentes são chamados de bibliotecas (libraries) 51
  • 52. bibliotecas do arduino• as bibliotecas são geralmente disponibilizadas como um zip que deve ser descompactado dentro da pasta libraries do Arduino. 52
  • 53. bibliotecas do arduino• após reiniciar a IDE do Arduino, a biblioteca estará disponível no menu Sketch- >Import Library• a maioria das bibliotecas para o Arduino pode ser encontrada em http://arduino.cc/en/Reference/Libraries 53
  • 54. plataforma amarino
  • 55. plataforma amarino• toolkit constituído de uma aplicação android e uma biblioteca arduino que permite envio de mensagens entre os dois dispositivos• utilização de serial sobre bluetooth• MIT Media Lab• http://www.amarino-toolkit.net/ 55
  • 56. plataforma amarino• Instalação • Baixar e descompactar a biblioteca MeetAndroid (http://code.google.com/p/amarino/downloads/detail? name=MeetAndroid_3.zip) • Baixar a biblioteca Amarino para Android (http://code.google.com/p/amarino/downloads/detail?name=AmarinoLibrary_v0_55.jar) 56
  • 57. plataforma amarino• Instalação • Instalar a aplicação amarino e o plugin bundle no dispositivo android, para os primeiros testes Amarino Plugin bundle 57
  • 58. mais prática! 58
  • 59. eletrônica – protoboard• antes disso: • Protoboard 59
  • 60. eletrônica – jumpers• jumpers 60
  • 61. atividade prática! 61
  • 62. prática• Testando a comunicação 62
  • 63. prática – código exemplo 63
  • 64. prática• aplicação Amarino 2.0 64
  • 65. prática• aplicação Amarino 2.0 65
  • 66. prática• aplicação Amarino 2.0 66
  • 67. prática• aplicação Amarino 2.0 67
  • 68. prática• aplicação Amarino 2.0 68
  • 69. Perguntas 69
  • 70. API MeetAndroid MeetAndroid meetAndroid; — cria um objeto do tipo MeetAndroid meetAndroid.registerFunction (f, c); — registra uma função f para o determinado comando c, que pode ser um número de ‘0’ a ‘9’ ou uma letra, de ‘a’ a ‘z’ e de ‘A’ a ‘Z’. meetAndroid.unregisterFunction (c); — desregistra a função previamente registrada para o comando c. 70
  • 71. API MeetAndroid meetAndroid.receive(); — Verifica se existem comandos a serem recebidos e chama a função registrada caso receba algum comando. meetAndroid.bufferLength(); — Retorna o tamanho do buffer de dados recebidos. meetAndroid.getString(char[]); — Copia a string recebida para o array de char passado como parâmetro. 71
  • 72. API MeetAndroid meetAndroid.getInt(); — Retorna o valor do buffer como inteiro. meetAndroid.getLong(); — Retorna o valor do buffer como long int. meetAndroid.getFloat(); — Retorna o valor do buffer como float. 72
  • 73. API MeetAndroid meetAndroid.getIntValues(int[]); — Retorna o valor do buffer como um array de inteiros que foram enviados separados por ‘;’. A quantidade de valores é passada para a função registrada através da variável numOfValues (argumento 2 da função); meetAndroid.getFloatValues(float[]); — Retorna o valor do buffer como um array de floats, da mesma forma que a anterior. meetAndroid.send(value); — Envia um valor (numérico ou string) para o dispositivo android. 73
  • 74. atividade prática! 74
  • 75. práticaModificar o exemplo para enviar “OK” aodispositivo android para cada comando recebidoVerificar o recebimento do “OK” no monitoring daaplicação Amarino 2.0 75
  • 76. Perguntas 76
  • 77. voltando ao arduino... 77
  • 78. conceitos básicos de eletricidade
  • 79. eletricidade universo formado de átomos partículas atômicas: prótons: cargas positivas elétrons: cargas negativas eletricidade - interação entre partículas atômicas 79
  • 80. eletricidade “elétron extra” “buraco” 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) 80
  • 81. eletricidade cargas iguais se repelem cargas opostas se atraem S N cargas em movimento campo magnético em geram campo magnético movimento gera corrente elétrica 81
  • 82. eletricidade – condutores e isolantescondutor – permite o fluxo de elétrons isolante – evita a passagem de elétrons 82
  • 83. eletricidade – diferença de potencial (v) cargas positivasdiferença de potencial Vou tensão. cargas negativas quanto maior a tensão, mais “força” teem os elétrons 83
  • 84. eletricidade – corrente elétrica (i)fluxo de elétrons em um condutor quanto maior a corrente, maior a “quantidade” de elétrons 84
  • 85. eletricidade – tipos de corrente elétricacorrente contínua corrente alternada 85
  • 86. eletricidade – tipos de corrente elétrica mesma polaridade no tempo (sentido continuo) inversão de polaridade no tempo 86
  • 87. 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) 87
  • 88. eletricidade – lei de ohm V=RxI V R = V/I R I I = V/R 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) 88
  • 89. eletricidade – circuito elétrico carga [consumidor] + R gerador V [fonte] – condutor i [caminho] 89
  • 90. Perguntas 90
  • 91. atuadores
  • 92. plataforma arduino – linguagem• comandos básicos • analogWrite() – escreve um valor analógico no pino • analogWrite(num_pino, valor); valor entre 0 e 255 92
  • 93. 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 pulso permanecer em nível alto, maior é a “tensão média” da saída 93
  • 94. atividade prática! 94
  • 95. antes dissomais um poucode eletrônica... 95
  • 96. eletrônica – resistoresoferecem resistência à passagem da corrente elétrica resistência: fixo variáveltipos:carvão [carbono]filmefio transformam energia elétrica em energia térmica [pode ser usado como atuador] 96
  • 97. eletrônica – resistores valores expressos em ohms o corpo dos resistores possui um código de cores para identificar o valor 97
  • 98. agora sim, prática! 98
  • 99. prática• acender o LED com a intensidade de brilho correspondente ao valor enviado pelo evento de teste do android 99
  • 100. prática• circuito Figura retirada de http://arduino.cc/ 100
  • 101. prática• esquemático Figura retirada de http://arduino.cc/ 101
  • 102. prática• protoboard Figura retirada de http://www.multilogica-shop.com/Aprendendo/Exemplos/Fading 102
  • 103. Perguntas 103
  • 104. sensores
  • 105. sensores – chave (switch/button) • interrompe a passagem da corrente elétrica • liga/desliga o circuito • sensor de toque esquemático 105
  • 106. plataforma arduino – linguagem• Comandos • digitalRead() – le um pino de entrada• Exemplo: • int chave = 0; • chave = digitalRead(num_do_pino); 106
  • 107. 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 um pino, a entrada flutua entre 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) 107
  • 108. atividade prática! 108
  • 109. sensores - prática• fazer o circuito e o programa para enviar ao dispositivo android o valor do sensor lido 109
  • 110. sensores - prática• esquemático Figura retirada de http://arduino.cc/ 110
  • 111. sensores - prática• protoboard 111
  • 112. Perguntas 112
  • 113. voltando àeletrônica... 113
  • 114. eletrônica – sinais analógicos e digitais sinal com variação discreta (valores pré-definidos) sinal com variação contínua no tempo 114
  • 115. eletrônica – conversão de sinais valor é lido em intervalos regulares de tempo e transformado em um número digital 115
  • 116. eletrônica – conversão de sinais vários valores, não só HIGH e LOW. quantiade de valores é a resolução. 116
  • 117. eletrônica – conversão de sinais resolução de 8 bits = 256 valores resolução de 16 bits = 65536 valores 117
  • 118. 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 118
  • 119. atividade prática! 119
  • 120. sensores analógicos – prática• ler o valor do resistor variável e ligar um LED se esse valor passar de um determinado limite. Ao acender o LED, informar o dispositivo android. 120
  • 121. sensores analógicos – prática• esquemático Figura retirada de http://arduino.cc/ 121
  • 122. sensores analógicos – prática• circuito Figura retirada de http://arduino.cc/ 122
  • 123. Perguntas 124
  • 124. biblioteca amarino para android
  • 125. Classe Amarino• conexão • Amarino.connect(context, address); • Amarino.disconnect(context, address); • Intents • AmarinoIntent.ACTION_CONNECTED • AmarinoIntent.ACTION_DISCONNECTED • AmarinoIntent.ACTION_CONNECTION_FAILED • AmarinoIntent.ACTION_PAIRING_REQUESTED• Devemos registrar um BroadcastReceiver para receber os intents desejados 126
  • 126. Classe Amarino• comunicação • Amarino. sendDataToArduino(context, address, command, data) • Intents • AmarinoIntent.ACTION_SEND • AmarinoIntent.ACTION_RECEIVED• Devemos registrar um BroadcastReceiver para receber os intents desejados• API completa em: http://www.amarino-toolkit.net/tl_files/doc/index.html 127
  • 127. atividade prática! 128
  • 128. biblioteca amarino - prática• fazer uma aplicação que mostre um gráfico de linha no android, com o valor do sensor lido pelo arduino.• fazer uma aplicação que exiba um gradiente na tela e altere o brilho de um LED de acordo com a área do gradiente tocada 129
  • 129. Perguntas 130
  • 130. eletrônica – resistores LDR• resistor variável sensível à luz 131
  • 131. 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 132
  • 132. atividade prática! 133
  • 133. entrada analógica - práticaler valores do LDR e enviar para o dispositivoandroid 134
  • 134. Perguntas 135
  • 135. atuadores sonoros
  • 136. atuadores sonoros• Buzzer piezoelétrico • formado por cerâmica piezoelétrica e disco metálico • ao receber uma tensão a cerâmica se expande, quando removemos a tensão ele volta 137
  • 137. atuadores sonoros• Buzzer piezoelétrico • 2 polos: um é ligado no GND e outro no pino de saída desejado • aplicando uma tensão variável produz vibração que é traduzida em som 138
  • 138. 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 139
  • 139. atuadores sonoros 1 segundo• para fazer o atuador baixa frequência vibrar, escrevemos no pino uma sequência de valores HIGH e LOW, tantas vezes por segundo período quanto for a frequência da nota alta frequência• o tempo de cada variação HIGH e LOW é período chamada de período e é o inverso da frequência 140
  • 140. atuadores sonoros• programar o arduino para tocar uma nota musicalvoid 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); }} 141
  • 141. atuadores sonoros•como 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 956Não é necessário escrever essas frequências, podemosincluir o arquivo notes.h 142
  • 142. atuadores sonoros•como tocar uma nota musical?notes.h#define NOTE_B0 31#define NOTE_C1 33#define NOTE_CS1 35#define NOTE_D1 37#define NOTE_DS1 39#define NOTE_E1 41#define NOTE_F1 44#define NOTE_FS1 46#define NOTE_G1 49#define NOTE_GS1 52... 143
  • 143. função tone• Arduino já possui uma função para tocar notas tone(pin, frequency); // emite uma determinada nota (representada pela // frequência) no pino ocrrespondente noTone(pin); // para de emitir a frequência definida por tone() // no pino correspondente tone(pin, frequency, duration); // emite uma determinada nota (representada pela // frequência) no pino ocrrespondente durante uma // determinada duração 144
  • 144. atividade prática! 145
  • 145. atuadores sonoros - prática• Tocar uma nota ao receber um evento do android 146
  • 146. perguntas? 147
  • 147. 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 148
  • 148. projeto 149
  • 149. projeto da disciplina• desenvolver um dispositivo interativo que utilize os conceitos aprendidos. 150
  • 150. Obrigado!