V2 - Microcontroladores: a revolucao do arduino

6,216 views
6,085 views

Published on

Palestra dada na Semana da Computacao da Universidade Plinio Leite. detalhes em :

http://blog.arduinrio.cc/2010/10/03/palestra-hardware-livre-na-semana-de-computacao-da-universidade-plinio-leite-niteroi/

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,216
On SlideShare
0
From Embeds
0
Number of Embeds
124
Actions
Shares
0
Downloads
256
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

V2 - Microcontroladores: a revolucao do arduino

  1. 1. Microcontroladores : A Revolução do Arduino
  2. 2. O que é um Microcontrolador? <ul><li>Computador ? </li></ul><ul><li>CI ? </li></ul><ul><ul><li>Computador num CI! </li></ul></ul><ul><li>Computador </li></ul><ul><ul><li>Entradas => INTELIGÊNCIA => Saidas </li></ul></ul><ul><li>Microcontrolador </li></ul><ul><ul><li>Entradas => INTELIGÊNCIA => Saidas </li></ul></ul><ul><ul><li>Sensores => INTELIGÊNCIA => Atuadores </li></ul></ul><ul><ul><ul><li>No caso da robótica </li></ul></ul></ul>
  3. 3. Arduino = Microcontrolador + Gravador + Interfaces <ul><li>A alma do negócio é o Microcontrolador ATMega 328 ou 168 </li></ul><ul><ul><li>Porém ele não funciona sozinho </li></ul></ul>
  4. 4. Circuitos auxiliares <ul><li>Como toda CPU, precisa de um Clock </li></ul><ul><ul><li>Para isto temos o cristal </li></ul></ul><ul><li>Interface serial/USB </li></ul><ul><li>Regulador de tensão – {7,21} V -> 5 V </li></ul>
  5. 5. Especificacoes do Arduino Duemilanove (2009) <ul><ul><ul><ul><ul><li>ATMega 328 </li></ul></ul></ul></ul></ul><ul><li>Clock – 16 MHz </li></ul><ul><li>Memorias </li></ul><ul><ul><li>32 KB – Flash – seu programa – 1 KB (bootloader) + O que voce quiser </li></ul></ul><ul><ul><li>2 KB - RAM – Variaveis do seu programa! </li></ul></ul><ul><ul><li>1 KB – EEPROM </li></ul></ul><ul><ul><li>Entradas/Saidas – 14 digitais (6 PWM), 6 Analogicas (ADC 10 bits) </li></ul></ul>
  6. 6. PWM (Modulação por Largura de Pulso) AnalogWrite ([0-255]) – Porta Digital `
  7. 7. Conversor Analógico<->Digital (ADC) <ul><li>Amostragem </li></ul><ul><ul><li>Taxa de amostragem </li></ul></ul><ul><ul><ul><ul><li>Teorema utilizado nas telecomunicacoes – no minimo 2X </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Na pratica, 8 a 10 X </li></ul></ul></ul></ul><ul><ul><li>Limite - Taxa maxima de amostragem no arduino? </li></ul></ul><ul><ul><ul><li>Pensem nisto </li></ul></ul></ul>
  8. 8. Quantizacao - AnalogRead() <ul><li>Etapa na qual a amostra e quantizada de acordo com a resolucao do ADC. </li></ul><ul><li>Arduino – 0 a 5V – 10 bits – 2^10 = 1024 </li></ul><ul><ul><li>0 a 1023 </li></ul></ul><ul><ul><li>5V / 1024 =~ 5 mV </li></ul></ul>
  9. 9. Hardware - status - 2004 <ul><li>Referência – PIC – Microchip </li></ul><ul><ul><li>R$ 32,00 o microcontrolador </li></ul></ul><ul><ul><li>R$ 300,00 o ambiente de desenvolvimento </li></ul></ul><ul><li>Melhores estágios – R$ 300,00 por mes </li></ul><ul><ul><li>Possível? </li></ul></ul><ul><ul><ul><li>Não para todos </li></ul></ul></ul>
  10. 10. Software – status - 2004 <ul><li>Catequese para se programar em assembly </li></ul><ul><ul><li>Conhecida como a linguagem mais baixo-nível que humanos conseguem ler. </li></ul></ul><ul><ul><li>Menos papo e mais código, como se faz um LED piscar : </li></ul></ul>
  11. 11. list p=16F630 ; list directive to define processor #include <p16F630.inc> ; processor specific variable definitions __CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OF F & _PWRTE_ON & _INTRC_OSC_NOCLKOUT VARIABLES UDATA_SHR delayA RES 1 delayB RES 1 ;********************************************************************** RESET_VECTOR CODE 0x000 ; processor reset vector goto main ; go to beginning of program PROGRAM CODE main call 0x3FF ; retrieve factory calibration value bsf STATUS,RP0 ; set file register bank to 1 movwf OSCCAL ; update register with factory cal value movlw 0x00 movwf TRISC bcf STATUS,RP0 ; set file register bank to 0 loop clrf PORTC call delay movlw 0xFF movwf PORTC call delay goto loop ;------------------------------------------------------------------- ;Delay Routine delay movlw 0xFF movwf delayA loopA movlw 0xFF movwf delayB loopB decfsz delayB, f goto loopB decfsz delayA, f goto loopA return ;------------------------------------------------------------------- END ; directive 'end of program'
  12. 12. A possibilidade da linguagem C <ul><li>Era possível programar em C </li></ul><ul><ul><li>Mas pra que? C é muito facil! É pros fracos! </li></ul></ul><ul><ul><li>Aliás, C gasta tanta memória que é melhor fazer em assembly </li></ul></ul><ul><ul><li>(vai debugar agora em assembly!) </li></ul></ul>
  13. 13. Arduino – a quebra de paradigmas <ul><li>Software Livre – Faça e extenda (em casa) </li></ul><ul><li>Hardware Livre – Faça e extenda (em casa!) </li></ul><ul><ul><li>Cultura de simplificação </li></ul></ul><ul><ul><li>Linguagem Wiring – o “C simplificado” </li></ul></ul><ul><ul><li>Você também pode programar o Arduino em C puro. </li></ul></ul><ul><ul><li>Piscando um LED no Arduino : </li></ul></ul>
  14. 14. int ledPin = 13; // LED connected to digital pin 13 void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output } void loop() { digitalWrite(ledPin, HIGH); // sets the LED on delay(1000); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(1000); // waits for a second }
  15. 15. IDE <ul><li>Escrita em Java, roda em </li></ul><ul><ul><li>Linux </li></ul></ul><ul><ul><li>OSX </li></ul></ul><ul><ul><li>Windows </li></ul></ul><ul><li>Basta compilar </li></ul><ul><li>Escolher o microcontrolador </li></ul><ul><li>Upload do codigo via USB </li></ul><ul><li>Pronto! </li></ul>
  16. 16. Mao na massa!
  17. 17. Ferramenta didatica – Fritzing! <ul><li>Represente circuitos para uma crianca de 5 anos </li></ul><ul><li>O Diagrama tambem esta disponivel. </li></ul><ul><li>Compartilhe! </li></ul>
  18. 18. Simulador de circuitos! <ul><li>http://www.falstad.com/circuit/ </li></ul><ul><li>Simule sensores, motores, etc... </li></ul>
  19. 19. Shields – Bibliotecas de Hardware <ul><li>Com apenas encaixando a placa de expansão e carregando a biblioteca, você já tem a funcionalidade pronta </li></ul><ul><li>No PIC você faria o interfaceamento e teria que programar a interface via software </li></ul><ul><li>Shields muito legais existentes : </li></ul>
  20. 20. Shield Ethernet <ul><li>Fale com seu Arduino via TCP/IP, logo de qualquer lugar do mundo </li></ul>
  21. 21. Wi-Fi Shield <ul><li>Fale com seu Arduino de qualquer lugar do mundo sem precisar de fios </li></ul><ul><ul><li>WEP (64-bit and 128-bit) </li></ul></ul><ul><ul><li>WPA/WPA2 (TKIP and AES) PSK </li></ul></ul>
  22. 22. Motor Shield <ul><li>2 Servo motores </li></ul><ul><li>4 Motores DC – dois sentidos </li></ul><ul><li>2 motores de passo </li></ul>
  23. 23. SD Shield
  24. 24. Placas Derivadas do Arduino Resultado de tecnologias Open Source <ul><li>Roboduino </li></ul><ul><ul><li>Interfaceamento para motores e sensores </li></ul></ul>
  25. 25. ArduinoBT <ul><li>Arduino com Bluetooth integrado </li></ul>
  26. 26. Program-Me – Brasileira <ul><li>Diversos sensores e drivers de motor on-board </li></ul><ul><ul><li>Buzzer </li></ul></ul><ul><ul><li>Sensor de Luz </li></ul></ul><ul><ul><li>4 drivers de motores </li></ul></ul><ul><ul><li>LEDs de Debug + Resistor </li></ul></ul>
  27. 27. Severino <ul><li>Serial =( </li></ul><ul><li>3.3V =) </li></ul>
  28. 28. Nano
  29. 29. Mega
  30. 30. Fio <ul><li>Desenhada para aplicacoes sem fio </li></ul><ul><ul><li>Conector para bateria de Polimero de Litio </li></ul></ul><ul><ul><li>Xbee integrado </li></ul></ul>
  31. 31. Lilypad <ul><li>Muito interessante – Componentes costuraveis </li></ul><ul><ul><li>Linhas condutivas </li></ul></ul>
  32. 32. Casos de uso <ul><li>OpenEnergyMonitor.org </li></ul><ul><ul><li>Monitore o uso de energia eletrica numa casa, escritorio ou fabrica (com graficos caso mande para o PC) </li></ul></ul><ul><li>MouseGlove </li></ul><ul><ul><li>Controle seu mouse por acelerometros numa luva </li></ul></ul><ul><li>Automação de casa </li></ul><ul><ul><li>Aquecedor, alarme de seguranca e iluminacao. </li></ul></ul><ul><ul><li>Interface WEB </li></ul></ul><ul><li>Padaria </li></ul><ul><ul><li>Arduino avisa aos clientes via Twitter quando o pão sai. </li></ul></ul>
  33. 33. E como falar com esse cara? <ul><li>USB – FDTI USB/Serial </li></ul><ul><li>Serial </li></ul><ul><li>Ethernet - TCP/IP </li></ul><ul><li>Wi-Fi – TCP/IP </li></ul><ul><li>Bluetooth </li></ul><ul><li>Xbee? </li></ul>
  34. 34. Fazendo o Perl falar com ele <ul><li>Device::SerialPort – no Linux </li></ul><ul><li>O código do Arduino tem de estar preparado para receber mensagens, e interpreta-las para a ação desejada – se for o caso </li></ul>my $sp=new Device::SerialPort(&quot;/dev/ttyUSB0&quot;); $sp->databits(8); $sp->baudrate(9600); $sp->stopbits(1); $sp->parity(&quot;none&quot;); $sp->write(“s”);
  35. 35. void loop() { char pc_input; if (Serial.available()) { pc_input = Serial.read(); } if( pc_input == 'w') { if (Speed < 255){ Speed = Speed + 5; } go_forward(Speed); } if( pc_input == 's') { stopMotors(); } if( pc_input == 'a') { turn_left(10); } if( pc_input == 'd') { turn_right(10); } }
  36. 36. Um minuto sobre Cellbots <ul><li>Arduino + Android </li></ul><ul><li>Arduino + Smartphone </li></ul><ul><li>Vantagens </li></ul><ul><ul><li>Diversos sensores (acelerometros, GPS, luminosidade) </li></ul></ul><ul><ul><li>Camera embutida (streaming) </li></ul></ul><ul><ul><li>Muitos rodam Linux, logo sem dificuldade rodam Perl </li></ul></ul><ul><ul><li>Interface Wi-Fi </li></ul></ul><ul><ul><li>Interface Bluetooth </li></ul></ul><ul><ul><li>Internet – 3G / GPRS </li></ul></ul>
  37. 38. Arduino TV Out
  38. 39. Possibilidades <ul><li>Interfaceamento com controle remoto </li></ul><ul><ul><li>So precisa calibrar </li></ul></ul><ul><li>Interfaceamento com controle de Wii </li></ul><ul><li>Interfaceamento com Ipod/Iphone/Android </li></ul><ul><li>Sensores </li></ul><ul><ul><li>Temperatura, distância, microfone, luz, Infra-vermelho(controle remoto), muito mais! </li></ul></ul><ul><li>Atuadores </li></ul><ul><ul><li>Motores, LEDs, TVs, caixa de som, LED Infra-vermelho(controle remoto), muito mais! </li></ul></ul>
  39. 40. Conclusão <ul><li>Facilidade </li></ul><ul><ul><li>Até artistas programam hoje </li></ul></ul><ul><ul><li>Estudantes de escolas técnicas não tem mais porque não estudar este assunto </li></ul></ul><ul><ul><ul><li>Um Arduino custa R$ 40,00 vindo da china </li></ul></ul></ul><ul><ul><ul><li>Por volta de R$ 85,00 no Brasil. </li></ul></ul></ul><ul><li>Criatividade </li></ul><ul><ul><li>A facilidade te abstrai os problemas menores para que você se preocupe com o seu real problema </li></ul></ul>
  40. 41. ArduInRio <ul><li>Comunidade carioca de Arduino </li></ul><ul><ul><li>http://www.arduinrio.cc </li></ul></ul><ul><ul><li>http://wiki.arduinrio.cc </li></ul></ul><ul><li>Dia 16 – III Arduino Hack Day </li></ul><ul><ul><li>Palestras </li></ul></ul><ul><ul><li>Hands on </li></ul></ul><ul><ul><li>Arduino Dojo? </li></ul></ul>
  41. 42. Agora é usar a imaginação e desenvolver! Perguntas?
  42. 43. Contato <ul><li>[email_address] </li></ul><ul><li>[email_address] </li></ul><ul><li>@samircury </li></ul><ul><li>youtube.com/samircury – videos sobre Arduino e etc. </li></ul>

×