Interfaces fisicas para dispositivos moveis

3,173 views
3,075 views

Published on

Curso de interfaces fisicas para dispositivos moveis com arduino.

Published in: Education
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,173
On SlideShare
0
From Embeds
0
Number of Embeds
55
Actions
Shares
0
Downloads
281
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Interfaces fisicas para dispositivos moveis

  1. 1. interfaces físicas para dispositivos móveis Tiago Barros | tiago@tiagobarros.org
  2. 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. 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. 4. Pré-requisitos• desenvolvimento de aplicativos Android 4
  5. 5. computação física
  6. 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. 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. 8. computação física como vemos os computadores? 8
  9. 9. computação física como vemos os computadores?• teclado• mouse• monitor• CPU• caixas de som 9
  10. 10. computação física como os computadores nos veem? 10
  11. 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. 12. computação física “mudar a forma que os computadores nos veem mudará como eles interagem conosco” Tom Igoe – Physical Computing 12
  13. 13. Perguntas 13
  14. 14. sistemas computacionais reativos
  15. 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. 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. 17. interfaces físicas para dispositivos móveis
  18. 18. interfaces físicas para dispositivos móveis comunicação micro-controlador sensor sensor atuador 18
  19. 19. interfaces físicas para dispositivos móveis android 19
  20. 20. interfaces físicas para dispositivos móveis comunicação micro-controlador sensor sensor atuador 20
  21. 21. interfaces físicas para dispositivos móveis arduino micro-controlador sensor sensor atuador 21
  22. 22. interfaces físicas para dispositivos móveis comunicação micro-controlador sensor sensor atuador 22
  23. 23. interfaces físicas para dispositivos móveis comunicação amarino = + 23
  24. 24. plataforma arduino
  25. 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. 26. plataforma arduino - hardware lilypad miniboarduino unopaperduino mega pro 26
  27. 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. 28. plataforma arduino – hardware 28
  29. 29. plataforma arduino - instalação• driver windows: FTDI Serial USB linux: não precisa instalar nada :-)• software é só descompactar e executar 29
  30. 30. plataforma arduino - instalação• Selecionando a placa e a porta serial 30
  31. 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. 32. plataforma arduino – ciclo de vida escrever corrigir erros compilar enviar para placa corrigir erros verificar execução 32
  33. 33. atuadores
  34. 34. plataforma arduino – estrutura do sketch 34
  35. 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. 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. 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. 38. atividade prática! 38
  39. 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. 40. plataforma arduino – hello arduino 40
  41. 41. Perguntas 41
  42. 42. protocolos de comunicação
  43. 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. 44. comunicação serial – RS232• o arduino possui uma biblioteca que implementa comunicação serial• Serial.begin();• Serial.print();• Serial.read(); 44
  45. 45. comunicação serial – RS232• Leds • TX: dados enviados para o PC • RX: dados recebidos do PC 45
  46. 46. atividade prática! 46
  47. 47. comunicação serial - prática“Hello Arduino” via serial 47
  48. 48. comunicação serial - prática 48
  49. 49. Perguntas 49
  50. 50. bibliotecas do arduino
  51. 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. 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. 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. 54. plataforma amarino
  55. 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. 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. 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. 58. mais prática! 58
  59. 59. eletrônica – protoboard• antes disso: • Protoboard 59
  60. 60. eletrônica – jumpers• jumpers 60
  61. 61. atividade prática! 61
  62. 62. prática• Testando a comunicação 62
  63. 63. prática – código exemplo 63
  64. 64. prática• aplicação Amarino 2.0 64
  65. 65. prática• aplicação Amarino 2.0 65
  66. 66. prática• aplicação Amarino 2.0 66
  67. 67. prática• aplicação Amarino 2.0 67
  68. 68. prática• aplicação Amarino 2.0 68
  69. 69. Perguntas 69
  70. 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. 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. 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. 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. 74. atividade prática! 74
  75. 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. 76. Perguntas 76
  77. 77. voltando ao arduino... 77
  78. 78. conceitos básicos de eletricidade
  79. 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. 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. 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. 82. eletricidade – condutores e isolantescondutor – permite o fluxo de elétrons isolante – evita a passagem de elétrons 82
  83. 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. 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. 85. eletricidade – tipos de corrente elétricacorrente contínua corrente alternada 85
  86. 86. eletricidade – tipos de corrente elétrica mesma polaridade no tempo (sentido continuo) inversão de polaridade no tempo 86
  87. 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. 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. 89. eletricidade – circuito elétrico carga [consumidor] + R gerador V [fonte] – condutor i [caminho] 89
  90. 90. Perguntas 90
  91. 91. atuadores
  92. 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. 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. 94. atividade prática! 94
  95. 95. antes dissomais um poucode eletrônica... 95
  96. 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. 97. eletrônica – resistores valores expressos em ohms o corpo dos resistores possui um código de cores para identificar o valor 97
  98. 98. agora sim, prática! 98
  99. 99. prática• acender o LED com a intensidade de brilho correspondente ao valor enviado pelo evento de teste do android 99
  100. 100. prática• circuito Figura retirada de http://arduino.cc/ 100
  101. 101. prática• esquemático Figura retirada de http://arduino.cc/ 101
  102. 102. prática• protoboard Figura retirada de http://www.multilogica-shop.com/Aprendendo/Exemplos/Fading 102
  103. 103. Perguntas 103
  104. 104. sensores
  105. 105. sensores – chave (switch/button) • interrompe a passagem da corrente elétrica • liga/desliga o circuito • sensor de toque esquemático 105
  106. 106. plataforma arduino – linguagem• Comandos • digitalRead() – le um pino de entrada• Exemplo: • int chave = 0; • chave = digitalRead(num_do_pino); 106
  107. 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. 108. atividade prática! 108
  109. 109. sensores - prática• fazer o circuito e o programa para enviar ao dispositivo android o valor do sensor lido 109
  110. 110. sensores - prática• esquemático Figura retirada de http://arduino.cc/ 110
  111. 111. sensores - prática• protoboard 111
  112. 112. Perguntas 112
  113. 113. voltando àeletrônica... 113
  114. 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. 115. eletrônica – conversão de sinais valor é lido em intervalos regulares de tempo e transformado em um número digital 115
  116. 116. eletrônica – conversão de sinais vários valores, não só HIGH e LOW. quantiade de valores é a resolução. 116
  117. 117. eletrônica – conversão de sinais resolução de 8 bits = 256 valores resolução de 16 bits = 65536 valores 117
  118. 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. 119. atividade prática! 119
  120. 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. 121. sensores analógicos – prática• esquemático Figura retirada de http://arduino.cc/ 121
  122. 122. sensores analógicos – prática• circuito Figura retirada de http://arduino.cc/ 122
  123. 123. Perguntas 124
  124. 124. biblioteca amarino para android
  125. 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. 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. 127. atividade prática! 128
  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. 129. Perguntas 130
  130. 130. eletrônica – resistores LDR• resistor variável sensível à luz 131
  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. 132. atividade prática! 133
  133. 133. entrada analógica - práticaler valores do LDR e enviar para o dispositivoandroid 134
  134. 134. Perguntas 135
  135. 135. atuadores sonoros
  136. 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. 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. 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. 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. 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. 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. 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. 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. 144. atividade prática! 145
  145. 145. atuadores sonoros - prática• Tocar uma nota ao receber um evento do android 146
  146. 146. perguntas? 147
  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. 148. projeto 149
  149. 149. projeto da disciplina• desenvolver um dispositivo interativo que utilize os conceitos aprendidos. 150
  150. 150. Obrigado!

×