Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

C.E.S.A.R Introducao ao Arduino

12,727 views

Published on

Published in: Education

C.E.S.A.R Introducao ao Arduino

  1. 1. introdução ao arduino Tiago Barros|tiago.barros@cesar.org.br Inovação é a gente!
  2. 2. conteúdo <ul><li>computação física </li></ul><ul><li>conceitos básicos de eletricidade </li></ul><ul><li>conceitos básicos de eletrônica </li></ul><ul><li>plataforma arduino </li></ul><ul><li>sinais analógicos e digitais </li></ul><ul><li>sensores e atuadores </li></ul><ul><li>comunicação serial </li></ul>
  3. 3. computação física
  4. 4. computação física <ul><li>uso de computação e eletrônica [sensores e atuadores] na prototipação de objetos físicos para interação com seres humanos </li></ul><ul><li>comportamento implementado por software </li></ul><ul><li>utilização de microcontroladores </li></ul>
  5. 5. computação física <ul><li>o objetivo é interligar o mundo físico com o mundo virtual </li></ul><ul><li>usar a computação e a interação com a tecnologia para o desenvolvimento das suas atividades </li></ul><ul><li>meio para comunicação e interação entre pessoas </li></ul>
  6. 6. computação física <ul><li>como vemos os </li></ul><ul><li>computadores? </li></ul>
  7. 7. computação física <ul><li>teclado </li></ul><ul><li>mouse </li></ul><ul><li>monitor </li></ul><ul><li>CPU </li></ul><ul><li>caixas de som </li></ul>como vemos os computadores?
  8. 8. computação física <ul><li>como os computadores nos veem? </li></ul>
  9. 9. computação física <ul><li>dedos [teclado/mouse] </li></ul><ul><li>olho [monitor] </li></ul><ul><li>duas orelhas [caixas de som] </li></ul>reflexo das entradas e saídas do computador como os computadores nos veem?
  10. 10. computação física <ul><li>“ mudar a forma que os computadores nos veem mudará como eles interagem conosco” </li></ul>Tom Igoe – Physical Computing
  11. 11. conceitos básicos de eletricidade
  12. 12. eletricidade <ul><li>eletricidade - interação entre partículas atômicas </li></ul>universo formado de átomos partículas atômicas: prótons: cargas positivas elétrons: cargas negativas
  13. 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. 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 N S
  15. 15. eletricidade – condutores e isolantes isolante – evita a passagem de elétrons condutor – permite o fluxo de elétrons
  16. 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. 17. eletricidade – corrente elétrica (i) quanto maior a corrente, maior a “quantidade” de elétrons fluxo de elétrons em um condutor
  18. 18. eletricidade – tipos de corrente elétrica corrente contínua corrente alternada
  19. 19. eletricidade – tipos de corrente elétrica inversão de polaridade no tempo mesma polaridade no tempo (sentido continuo)
  20. 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. 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. 22. eletricidade – circuito elétrico + – V i R gerador [fonte] condutor [caminho] carga [consumidor]
  23. 23. <ul><li>e agora, computação... </li></ul>
  24. 24. sistemas computacionais reativos
  25. 25. sistemas computacionais reativos <ul><li>percepção do ambiente, recebendo estímulos atavés de sensores; </li></ul><ul><li>e reação aos estímulos, de acordo com o seu comportamento (software), através de atuadores. </li></ul>
  26. 26. plataforma Arduino
  27. 27. plataforma arduino <ul><li>microcontrolador Atmel </li></ul><ul><li>programação usando Wiring (subconjunto de processing, baseado em C/C++) </li></ul><ul><li>open-source: evolução da plataforma através de contribuições dos usuários </li></ul>
  28. 28. plataforma arduino - hardware <ul><li>Duemilanove </li></ul>mini lilypad boarduino paperduino mega pro
  29. 29. plataforma arduino - hardware <ul><li>portas </li></ul><ul><ul><li>14 entradas/saídas digitais </li></ul></ul><ul><ul><li>6 entradas analógicas </li></ul></ul><ul><li>memória </li></ul><ul><ul><li>RAM: 1K </li></ul></ul><ul><ul><li>Flash (programa): 16k – 2k (bootloader) </li></ul></ul><ul><li>velocidade de processamento: 16MHz </li></ul>
  30. 30. plataforma arduino – hardware
  31. 31. plataforma arduino - instalação <ul><li>driver </li></ul><ul><li>windows: FTDI Serial USB </li></ul><ul><li>linux: não precisa instalar nada :-) </li></ul><ul><li>software </li></ul><ul><li>é só descompactar e executar </li></ul>
  32. 32. plataforma arduino - instalação <ul><li>Selecionando a placa e a porta serial </li></ul>
  33. 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. 34. plataforma arduino – ciclo de vida escrever compilar enviar para placa verificar execução corrigir erros corrigir erros
  35. 35. atuadores
  36. 36. plataforma arduino – estrutura do sketch
  37. 37. plataforma arduino – linguagem <ul><li>linguagem baseada em C (mas bem mais fácil) </li></ul><ul><li>comandos básicos </li></ul><ul><ul><li>pinMode() – define um pino com entrada ou saída </li></ul></ul><ul><ul><li>digitalWrite() – liga ou desliga uma saída digital </li></ul></ul><ul><ul><li>delay() – “espera” um determinado tempo </li></ul></ul>
  38. 38. plataforma arduino – linguagem <ul><li>Exemplos </li></ul><ul><ul><li>pinMode(num_do_pino, OUTPUT); </li></ul></ul><ul><ul><li>digitalWrite(num_do_pino, valor); valor é LOW ou HIGH (0 ou 1, 0V ou 5V) </li></ul></ul><ul><ul><li>delay(milisegundos); </li></ul></ul>
  39. 39. plataforma arduino – linguagem <ul><ul><li>constantes </li></ul></ul><ul><ul><li>LOW | HIGH – indica nível baixo (0V) e alto (5V) nos pinos </li></ul></ul><ul><ul><li>INPUT | OUTPUT – define se um pino vai ser pino de entrada ou de saída </li></ul></ul>
  40. 40. <ul><li>atividade prática! </li></ul>
  41. 41. prática <ul><li>fazer o programa hello arduino, que pisca um led </li></ul><ul><li>use o pino 13 de saída digital, a placa já possui um led ligado a ele :-) </li></ul>
  42. 42. plataforma arduino – hello arduino
  43. 43. Perguntas
  44. 44. plataforma arduino – linguagem <ul><li>comandos básicos </li></ul><ul><ul><li>analogWrite() – escreve um valor analógico no pino </li></ul></ul><ul><ul><li>analogWrite(num_pino, valor); valor entre 0 e 255 </li></ul></ul>
  45. 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. 46. plataforma arduino - linguagem <ul><li>variáveis </li></ul><ul><ul><li>Espaço reservado na memória para armazenamento de valores </li></ul></ul><ul><ul><li>Variáveis são declaradas de acordo com o tipo de dado a ser armazenado (int, long, char, etc…) </li></ul></ul><ul><li>tipo nome = valor; </li></ul><ul><li>Exemplo: </li></ul><ul><li>int x = 10; </li></ul><ul><li>int y = 20; </li></ul><ul><li>int resultado; </li></ul><ul><li>char vogal = ‘a’; </li></ul><ul><li>Resultado = x + y; </li></ul>
  47. 47. plataforma arduino – linguagem <ul><ul><li>for </li></ul></ul><ul><ul><li>for (inicialização; condição; incremento) { </li></ul></ul><ul><ul><li>//comando(s); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>for (int i=0; i <= 255; i++){ </li></ul></ul><ul><ul><li>analogWrite(PWMpin, i); </li></ul></ul><ul><ul><li>delay(10); </li></ul></ul><ul><ul><li>} </li></ul></ul>
  48. 48. <ul><li>mais prática! </li></ul>
  49. 49. eletrônica – protoboard <ul><li>antes disso: </li></ul><ul><ul><li>Protoboard </li></ul></ul>
  50. 50. eletrônica – protoboard <ul><li>jumpers </li></ul>
  51. 51. <ul><li>antes disso mais um pouco de eletrônica... </li></ul>
  52. 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] filme fio resistência: fixo variável
  53. 53. eletrônica – resistores valores expressos em ohms o corpo dos resistores possui um código de cores para identificar o valor
  54. 54. <ul><li>agora sim, prática! </li></ul>
  55. 55. prática <ul><li>modificar o programa hello arduino para acender o led com efeito de “fading” (acender gradativamente) </li></ul><ul><li>dica: use analogWrite() em vez de digitalWrite(), variando os valores escritos, de 0 a 255 </li></ul>
  56. 56. prática <ul><li>circuito </li></ul>Figura retirada de http://arduino.cc/
  57. 57. prática <ul><li>esquemático </li></ul>Figura retirada de http://arduino.cc/
  58. 58. prática <ul><li>protoboard </li></ul>Figura retirada de http://www.multilogica-shop.com/Aprendendo/Exemplos/Fading
  59. 59. prática <ul><li>Mãos à obra! </li></ul><ul><li>modificar o programa hello arduino para acender o led com efeito de “fading” (acender gradativamente) </li></ul><ul><li>dica: use analogWrite() em vez de digitalWrite(), variando os valores escritos, de 0 a 255 </li></ul>
  60. 60. Perguntas
  61. 61. sensores
  62. 62. sensores – chave (switch/button) <ul><ul><li>interrompe a passagem da corrente elétrica </li></ul></ul><ul><ul><li>liga/desliga o circuito </li></ul></ul><ul><ul><li>sensor de toque </li></ul></ul>esquemático
  63. 63. plataforma arduino – linguagem <ul><li>Comandos </li></ul><ul><ul><li>digitalRead() – le um pino de entrada </li></ul></ul><ul><li>Exemplo: </li></ul><ul><ul><li>int chave = 0; </li></ul></ul><ul><ul><li>chave = digitalRead(num_do_pino); </li></ul></ul>
  64. 64. plataforma arduino – linguagem <ul><ul><li>if </li></ul></ul><ul><ul><li>if (variavel == 0) { </li></ul></ul><ul><ul><li>// faça alguma coisa </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>if … else </li></ul></ul><ul><ul><li>if (variavel == 1){ </li></ul></ul><ul><ul><li>// acao A </li></ul></ul><ul><ul><li>} else { </li></ul></ul><ul><ul><li>// acao B </li></ul></ul><ul><ul><li>} </li></ul></ul>
  65. 65. sensores <ul><ul><li>arduino lê tensões de </li></ul></ul><ul><ul><li>entrada (e não valores 0 e 1) </li></ul></ul><ul><ul><li>5 volts == HIGH (1) </li></ul></ul><ul><ul><li>0 volts == LOW (0) </li></ul></ul><ul><ul><li>sem conexão em um </li></ul></ul><ul><ul><li>pino, a entrada flutua </li></ul></ul><ul><ul><li>entre 0 e 5 volts </li></ul></ul><ul><ul><li>(HIGH e LOW) </li></ul></ul>este resistor é necessário para que o pino seja levado para 0 quando não estiver conectado (chave aberta)
  66. 66. <ul><li>atividade prática! </li></ul>
  67. 67. sensores - prática <ul><li>fazer o circuito e o programa para acender o led 13 de acordo com sinal de entrada do pino 2 </li></ul>
  68. 68. sensores - prática <ul><li>esquemático </li></ul>Figura retirada de http://arduino.cc/
  69. 69. sensores - prática <ul><li>protoboard </li></ul>Figura retirada de http://arduino.cc/
  70. 70. sensores - prática
  71. 71. <ul><li>atividade prática! </li></ul>
  72. 72. sensores - prática <ul><li>chave no pino 2 seleciona a saída do LED – “fade” ou “blink” </li></ul>
  73. 73. Perguntas
  74. 74. <ul><li>voltando à eletrônica... </li></ul>
  75. 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. 76. eletrônica – conversão de sinais valor é lido em intervalos regulares de tempo e transformado em um número digital
  77. 77. eletrônica – conversão de sinais vários valores, não só HIGH e LOW. quantiade de valores é a resolução.
  78. 78. eletrônica – conversão de sinais resolução de 8 bits = 256 valores resolução de 16 bits = 65536 valores
  79. 79. eletrônica - resistores <ul><li>Como funciona um resistor variável? </li></ul><ul><li>no arduino, o valor da tensão é transformado em um valor digital entre 0 e 1023 </li></ul>
  80. 80. <ul><li>atividade prática! </li></ul>
  81. 81. sensores analógicos – prática <ul><li>ler o valor do resistor variável e ligar um LED se esse valor passar de um determinado limite. </li></ul>
  82. 82. sensores analógicos – prática <ul><li>esquemático </li></ul>Figura retirada de http://arduino.cc/
  83. 83. sensores analógicos – prática <ul><li>circuito </li></ul>Figura retirada de http://arduino.cc/
  84. 84. entrada analógica – prática
  85. 85. protocolos de comunicação
  86. 86. comunicação serial – RS232 <ul><li>chip ATMEGA 168 só tem interface serial, não tem USB </li></ul><ul><li>nossa placa arduino possui um chip que converte Serial para USB </li></ul><ul><li>usamos o mesmo cabo USB pra enviar dados pro PC via serial </li></ul>
  87. 87. comunicação serial – RS232 <ul><li>o arduino possui uma biblioteca que implementa comunicação serial </li></ul><ul><li>Serial.begin(); </li></ul><ul><li>Serial.print(); </li></ul><ul><li>Serial.read(); </li></ul>
  88. 88. comunicação serial – RS232 <ul><li>Leds </li></ul><ul><ul><li>TX: dados enviados para o PC </li></ul></ul><ul><ul><li>RX: dados recebidos do PC </li></ul></ul>
  89. 89. <ul><li>atividade prática! </li></ul>
  90. 90. comunicação serial - prática “ Hello Arduino” via serial
  91. 91. comunicação serial - prática
  92. 92. eletrônica – resistores LDR <ul><li>resistor variável sensível à luz </li></ul>
  93. 93. eletrônica – resistores LDR <ul><li>resistor variável sensível à luz </li></ul><ul><li>circuito para arduino porque o resistor de 1k? </li></ul><ul><li>- para limitar a corrente </li></ul><ul><li>se o LDR assumir valores </li></ul><ul><li>muito baixos </li></ul>
  94. 94. <ul><li>atividade prática! </li></ul>
  95. 95. comunicação serial - prática ler valores do LDR e enviar via serial
  96. 96. <ul><li>atividade prática! </li></ul>
  97. 97. entrada analógica – prática <ul><li>fazer uma “escala de leds” que acendem de acordo com o aumento do valor lido do LDR na entrada analógica. </li></ul>
  98. 98. Perguntas
  99. 99. sensores sonoros <ul><li>microfones </li></ul><ul><ul><li>transformam ondas sonoras em ondas elétricas </li></ul></ul><ul><ul><li>a variação de tensão é bem pequena em um microfone de eletreto </li></ul></ul><ul><ul><li>precisa de circuito para amplificar o sinal e seu valor poder ser lido pelo arduino </li></ul></ul>
  100. 100. sensores sonoros <ul><li>circuito para amplificar o sinal do microfone para o arduino </li></ul>
  101. 101. sensores sonoros <ul><li>já temos o circuito pronto! </li></ul>
  102. 102. <ul><li>atividade prática! </li></ul>
  103. 103. sensores sonoros - prática <ul><li>detectar comandos sonoros e acender leds correspondentes </li></ul><ul><li>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). </li></ul>
  104. 104. Perguntas
  105. 105. atuadores sonoros <ul><li>Buzzer piezoelétrico </li></ul><ul><ul><li>formado por cerâmica piezoelétrica e disco metálico </li></ul></ul><ul><ul><li>ao receber uma tensão o cristal se expande, quando removemos a tensão ele volta </li></ul></ul>
  106. 106. atuadores sonoros <ul><li>Buzzer piezoelétrico </li></ul><ul><ul><li>2 fios: preto é negativo e vermelho é positivo </li></ul></ul><ul><ul><li>aplicando uma tensão variável produz vibração que é traduzida em som </li></ul></ul>
  107. 107. <ul><li>atividade prática! </li></ul>
  108. 108. atuadores sonoros - prática <ul><li>programar o arduino para emitir som </li></ul><ul><li>como ligar o buzzer: fio preto no GND e vermelho no pino de saída desejado </li></ul><ul><li>podemos ligar um resistor em série para diminuir o volume </li></ul>
  109. 109. atuadores sonoros <ul><li>como programar o arduino para tocar uma nota musical? </li></ul><ul><ul><li>uma nota musical é um som em uma determinada frequência </li></ul></ul><ul><ul><li>a frequência de uma nota significa quantas vezes o atuador sonoro vibra em 1 segundo </li></ul></ul>
  110. 110. atuadores sonoros <ul><li>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 </li></ul><ul><li>o tempo de cada variação HIGH e LOW é chamada de período e é o inverso da frequência </li></ul>baixa frequência alta frequência período período 1 segundo
  111. 111. plataforma arduino - linguagem <ul><li>funções </li></ul><ul><li>tipoRetorno nome(tipo parametro1, tipo parametro2) </li></ul><ul><li>{ </li></ul><ul><li>//corpo da fução </li></ul><ul><li>return variavel_do_mesmo_tipo_de_retorno; </li></ul><ul><li>} </li></ul><ul><li>Exemplo: </li></ul><ul><li>int funcaoSoma(int a, int b) </li></ul><ul><li>{ </li></ul><ul><li>int resultado = a + b; </li></ul><ul><li>return resultado; </li></ul><ul><li>} </li></ul>
  112. 112. plataforma arduino - linguagem <ul><li>arrays </li></ul><ul><ul><li>conjunto (sequencia) de variáveis do mesmo tipo </li></ul></ul><ul><ul><li>seus valores são acessados através do índice </li></ul></ul><ul><li>tipo nome[tamanho] = {lista de valores separados por virgula}; </li></ul><ul><li>Exemplo: </li></ul><ul><li>int valores[4] = {100, 200, 300, 400}; </li></ul><ul><li>char vogais [5] = {‘a’, ‘e’, ‘i’, ‘o’, ‘u’}; </li></ul><ul><li>int num = valores[2]; </li></ul><ul><li>int y = 3; </li></ul><ul><li>int x = valores[y]; </li></ul><ul><li>char vogal = vogais[y]; </li></ul>
  113. 113. atuadores sonoros <ul><li>como programar o arduino para para tocar uma nota musical? </li></ul><ul><li>timeHigh = periodo / 2 = 1 / (2 * frequência) </li></ul><ul><li>* nota frequência periodo tempo em nivel alto </li></ul><ul><li>* c (dó) 261 Hz 3830 1915 </li></ul><ul><li>* d (ré) 294 Hz 3400 1700 </li></ul><ul><li>* e (mi) 329 Hz 3038 1519 </li></ul><ul><li>* f (fá) 349 Hz 2864 1432 </li></ul><ul><li>* g (sol) 392 Hz 2550 1275 </li></ul><ul><li>* a (lá) 440 Hz 2272 1136 </li></ul><ul><li>* b (si) 493 Hz 2028 1014 </li></ul><ul><li>* C (dó) 523 Hz 1912 956 </li></ul><ul><li>char notes[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; </li></ul><ul><li>int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; </li></ul>
  114. 114. <ul><li>atividade prática! </li></ul>
  115. 115. atuadores sonoros - prática <ul><li>programar o arduino para tocar uma nota musical </li></ul><ul><li>void playTone(int period, int duration) </li></ul><ul><li>{ </li></ul><ul><li>for (long i = 0; i < duration * 1000L; i += period * 2) </li></ul><ul><li>{ </li></ul><ul><li>digitalWrite(speakerPin, HIGH); </li></ul><ul><li>delayMicroseconds(period); </li></ul><ul><li>digitalWrite(speakerPin, LOW); </li></ul><ul><li>delayMicroseconds(period); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  116. 116. <ul><li>atividade prática! </li></ul>
  117. 117. atuadores sonoros - prática <ul><li>tocar uma melodia, baseado na escala de notas abaixo: </li></ul><ul><li>cdef ff cdcd dd cgfe ee cdef ff </li></ul>
  118. 118. Perguntas
  119. 119. displays
  120. 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. 121. <ul><li>atividade prática! </li></ul>
  122. 122. displays de LEDs - prática temporizador digital
  123. 123. displays de LEDs - prática temporizador digital - protoboard
  124. 124. Perguntas
  125. 125. prática final de hoje – luzes e sons <ul><li>montar um “dispositivo” interativo que utilize luz e som como entradas e/ou saídas. </li></ul>
  126. 126. arduino - referencias <ul><ul><li>Lista dos comandos da linguagem em: </li></ul></ul><ul><ul><li>http://arduino.cc/en/Reference/HomePage </li></ul></ul><ul><ul><li>Lista dos tutoriais em: </li></ul></ul><ul><ul><li>http://www.arduino.cc/en/Tutorial/HomePage </li></ul></ul>

×