Arduino Hack Day Corumbá

3.570 visualizações

Publicada em

Oficina de introdução ao Arduino realizada no SENAC de Corumbá, pelo evento III Escola Regional de Informática do MS (ERI MS).
Uma oficina pratica sobre a utilização do Hardware Arduino.

Publicada em: Educação
  • Seja o primeiro a comentar

Arduino Hack Day Corumbá

  1. 1. Arduino MS
  2. 2. Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo grupo ArduinoMS; • Agradecimentos especiais ao do SENAC e UCDB. Sobre o Ministrante: • Samuel Cavalcante • Engenheiro de Computação (UNIDERP)- CREA-MS: 12873D • Pós Graduado em Eng. De Sistemas (ESAB) • Analista em Educação profissional no SENAC/MS • Professor UNIDERP e UNAES II • Pai, Esposo, Professor, Empresário, Consultor, participante de comunidades, conselheiro entre outros.
  3. 3. Arduino MS O que veremos • Introdução ao Arduino • Código Pisca LED • Configurando a IDE para transferir o Código • Acionamento de LED com Botão • Pisca Led com Sensor LDR • Sensor de Temperatura Obs.: Ao decorrer da oficina serão tratados assuntos sobre eletrônica e eletricidade básica.
  4. 4. Microcontrolador X Microprocessadorr• Qual a principal diferença entre eles?
  5. 5. Arduino MS Introdução ao Arduino • Plataforma baseada em Atmel da AVR (ATMega168; ATMega 328); • Oferece um IDE e bibliotecas de programação de alto nível; • Open-source hardware e software • Ampla comunidade • Programado em C/C++ • Transferência de firmware via USB • MCU com bootloader
  6. 6. Arduino MS Histórico do Arduino • Projeto criado na Itália pelo Mássimo Banzi no Interaction Design Institute Ivrea; • Nasceu para complementar o aprendizado de programação, computação física e gráfica; • Nasceu do Processing e Wiring; – Processing é um ambiente e linguagem de programação para criar imagens, animação e interação;
  7. 7. Arduino MS Simplicidade no circuito:
  8. 8. Arduino MS Muitas aplicações práticas • Robôs • Roupas eletrônicas • Máquinas de corte e modelagem 3D de baixo custo; • Desenvolvimento de celulares customizados • Instrumentos musicais • Paredes interativas • Instrumentação humana
  9. 9. Arduino MS Vários tipos, vários fabricantes... • Mega • Lilypad • Nano • Uno • Pro • Arduino BT • Freeduino • Severino • Program-ME
  10. 10. Arduino MS Atmega168 / Atmega328: coração • Características do ATmega 168: • RISC –Reduced Instruction Set Computer • 20 MIPS (20 Milhões de instruções por segundo) • 16Kb Flash / 512 b EEPROM / 1Kb RAM Estática • 10.000 ciclos na Flash e 100.000 na EEPROM • 2 contadores / temporizadores de 8bits • 1 contador / temporizador de 16bits • 1 temporizador de tempo real com clock a parte • 14 portas digitais • 6 portas analógicas
  11. 11. Arduino MS Características técnicas • 6 canais PWM • 6 conversores analógico/digital de 10 bits • 1 serial programável (USART) • 1 interface SPI (Serial Peripheral Interface) • 1 interface serial a 2 fios (I2C) • 1 watch dog timer programável • 1 comparador analógico no chip • Interrupção ou wake-up na alteração de estado dos pinos
  12. 12. Arduino MS Resumo das conexões da placa
  13. 13. Arduino MS FT232RL Conversor USB-Serial Conector USB Regular 7085: Recebe até 12 volts e regula para 5 volts Alimentação externa: Até 12 volts
  14. 14. Arduino MS Botão de reset ICSP Para gravar bootloader ou programas/firmware AtMega328 /168/8
  15. 15. Arduino MS AREF Portas digitais 0 a 13 Referência analógica GND 0 RX 1 TX = usada durante Padrão 5 volts transferência de sketch e comunicação serial com placa 2,4,7,8,12,13 = portas digitais convêncionais 3,5,6,9,10,11 = portas PWM
  16. 16. Arduino MS Portas analógicas 4 e 5 São as portas utilizadas para conexões via I2C / TWI. GND Portas analógicas de 0 a 5 5 volts Podem funcionar como digitais de 14 a 19 3.3 volts VIN Alimentação de entrada sem regulagem
  17. 17. Arduino MS Shields: arquitetura modular inteligente • Arduino estabeleceu um padrão de pinagem que é respeitado por diversas placas shield:
  18. 18. Arduino MS Por dentro do MCU
  19. 19. Arduino MS Porta Digital Vs. Analógica • Digital: trabalha com lógica binária, 0 e 1. – No Arduino segue padrão TTL onde: • 0 a 0,8 volts = 0 • 2 a 5 volts = 1 • Analógica: valor lido é análogo a tensão. – Referência de analogia é 5 volts • 0 volts = 0 • 2.5 volts= 512 • 5 volts = 1023 – Conversor A/D de 10 bits: 0 a 1023 • 00000000012 = 110 = 0,005v • 00000000102 = 210 = 0,010v • 00000000112 = 210 = 0,015v • 10000000002 = 51210 = 2,50v • ....
  20. 20. Arduino MS Porta Digital Vs. Analógica • Portas analógicas expressam valores de 0 a 1023 mas não são utilizadas para transferência de informações precisas – Neste caso o dispositivo recebe um valor analógico de 0v à 5v, que será convertido em um número binário de 10 bits. Cada bits somado ao circuito equivale a 0,005v. • Portas digitais permitem que dados sejam transferidos em sequencia através de uma lógica ou protocolo binário – Portas digitais não conseguem comandar potência
  21. 21. Arduino MS Porta PWM • Uma porta híbrida: digital porém com modularização de zeros e uns de forma que consegue expressar uma idéia de potência;
  22. 22. Arduino MS Na prática • Ligamos componentes em portas digitais (comuns, PWM) ou analógica • Fazemos leitura e escrita nestas portas afim de obter um dado ou um determinado comportamento • Processamos os dados no microcontrolador Alguns exemplos de componentes...
  23. 23. Arduino MS Ping – Sensor de distância ultrasonico
  24. 24. Arduino MSLCD Touch Shield LCD Touch screen
  25. 25. Arduino MSSIM Reader SIM Reader
  26. 26. Arduino MS Lojas de componentes• www.parallax.com• www.sparkfun.com• www.makershed.com• www.liquidware.com• www.ladyada.net• www.adafruit.com• www.rlrobotics.ind.br/ - BRASIL• www.empretecnet.com.br/do/Home - BRASIL
  27. 27. Arduino MS Programando para Arduino • IDE pode ser baixada de www.arduino.cc • A IDE foi desenvolvida com Java, portanto precisaremos de um máquina virtual instalada. • Funciona em Windows. Mac OS X e Linux (em alguns windows e mac pode ser necessário colocar driver) • Utiliza GCC + GCC Avr para compilação (você pode também programar diretamente com GCC!) • A transferência para a placa é feita via USB pelo IDE; (mas também pode ser feita com gravadores ICSP!)
  28. 28. Arduino MS Partes básicas do programa Arduino • Temos que obrigatoriamente programar dois métodos: void setup() { } void loop() { } • O setup é executado uma só vez assim que a placa for ligada e o loop terá o código de execução infinita
  29. 29. Arduino MS Portas digitais e analógicas • Na prática ligamos componentes em portas digitais e analógicas e através do código Arduino, manipulamos as portas: – pinMode(<porta>, <modo>): configura uma porta digital para ser lida ou para enviarmos dados; – digitalWrite(<porta>, 0 ou 1): envia 0 ou 1 para porta digital – digitalRead(<porta>): retorna um 0 ou 1 lido da porta – analogRead(<porta>): retorna de 0 a 1023 com o valor da porta analógica – analogWrite(<porta>, <valor>): escreve em uma porta PWM um valor de 0 a 255
  30. 30. Arduino MSProtoboard ou Matriz de contato É um dispositivo usado para construir circuitos sem a necessidade de solda. Na parte central de todos os pinos alinhados sob um número estiver conectado, enquanto os nas bordas superior e inferior - normalmente marcado com linhas pretas e vermelhas - são conectados na horizontal.
  31. 31. Arduino MS Primeiro contato com Arduino • Ligar sua placa no cabo USB e no PC • Realizar a instalação do Driver com a ajuda do facilitador • Verificar o jumper de alimentação configurando para USB se necessário • Digitar o código, a ser passado, no Arduino IDE • Selecionar no software a versão do Arduino e a porta serial de comunicação. • Clicar no botão de transferência de sketch
  32. 32. Arduino MS Exemplo “pisca led” com Arduino Esta conexão é bem simples somente para efeito de teste para piscar o led. O correto é ligar um resistor usando uma protoboard.
  33. 33. Arduino MS Exemplo “pisca led” void setup() { pinMode(13, OUTPUT); //porta 13 em output } void loop() { digitalWrite(13, HIGH); //HIGH = 1 = TRUE delay(500); digitalWrite(13, LOW); //LOW = 0 = FALSE delay(500); }
  34. 34. Configurando a IDE para transferir o Código
  35. 35. Configurando a IDE para transferir o Código
  36. 36. Procurando erros no código
  37. 37. Fazendo o Upload do Código para o Arduino
  38. 38. Arduino MS Entrada Digital: Fazendo leitura de um botão • Os pinos do Arduino são extremamente sensíveis, permitindo a leitura de ruído elétrico do ambiente. O próximo teste utilizaremos o pino 7 como leitura de dados externos, como é uma porta digital será lido HIGH ou LOW (1 ou 0). Essa leitura é realizada pelo comando digitalRead(port). • Conecte três fios à placa Arduino. O primeiro de uma perna do botão através de um resistor de pull-up (aqui 10K Ω) para o fornecimento de 5 volts. A segunda vai da perna correspondente do botão ao GND. O terceiro se conecta a um pino digital I/O (pino 7) que lê o estado do botão.
  39. 39. Arduino MS Montando o Circuito
  40. 40. Arduino MS Código Aciona LED com botão int val = 0; // variável para ler o status do pino void setup() { pinMode(13, OUTPUT); // declare LED como output pinMode(7, INPUT); // declare pushbutton como input } void loop(){ val = digitalRead(7); // ler a entrada de valor if (val == HIGH) {// verificar se a entrada é alta digitalWrite(13, LOW); // LED OFF } else { digitalWrite(13, HIGH); // LED ON } }
  41. 41. Arduino MSTempo entre acende e apaga LED usando sensor LDR • Use o mesmo circuito como antes, mudando o botão com o sensor de luz e trocando a ligação do pino digital 7 para o pino analógico 2. • A função permite enviar um valor numérico para o computador. Variando números digitais no intervalo de 0- 1024 (resolução de 1 Bit). • Nesta função usamos a comunicação serial, com isso abra o monitor serial para ler dados do sensor. – Após o código ser copiado no Arduino.
  42. 42. Arduino MS Montando o Circuito
  43. 43. Arduino MS Códigoint val = 0; // variável para armazenar o valor vindo do sensorvoid setup() { pinMode(13, OUTPUT); // declara o ledPin como uma saída Serial.begin(9600); // usar a porta serial para comunicação}void loop() { val = analogRead(2); // lê o valor do sensor Serial.println(val); // imprime o valor para a porta serial digitalWrite(13, HIGH); // ligar o LED delay(val); // parar o programa por algum tempo digitalWrite(13, LOW); // desligar o LED delay(val); // tempo antes do proximo ciclo}
  44. 44. Vetor de LEDs• Monte na matriz de contato 5 leds, cada perna maior do LED (VCC) será ligada a uma perna do resistor, a outra perna do resistor será ligada em cada um dos seguinte pinos Digital, 12, 11, 10, 9 e 8. A perna menor dos LEDs, no GND (0v).• A atividade é fazer esses LEDs acenderem em sequencia, acendendo um LED de cada vez, com intervalos de 50 milisegundos por led, após todos acessos aguardar 1000 milisegundos e começar a apagar os leds, com o mesmo intervalor de tempo.
  45. 45. Vetor de LEDs – Montando o circuito
  46. 46. Vetor de LEDs Códigoint i; delay(50);void setup() { } pinMode(13, OUTPUT); delay(1000); pinMode(12, OUTPUT); for(i=8;i<=13;i++){ pinMode(11, OUTPUT); digitalWrite(i, LOW); pinMode(10, OUTPUT); delay(50); pinMode(9, OUTPUT); }} delay(1000);void loop() { } for(i=13;i>=8;i--){ digitalWrite(i, HIGH);
  47. 47. Vetor de LEDs com potenciômetro
  48. 48. Vetor de LEDs com potenciômetroint i, port, potenc; }else{float tensao=0; digitalWrite(port, LOW);void setup() { } pinMode(13, OUTPUT); port--; pinMode(12, OUTPUT); } pinMode(11, OUTPUT); Serial.print("Valor decimal = "); pinMode(10, OUTPUT); Serial.print(potenc); pinMode(9, OUTPUT); tensao=potenc*0.004883; Serial.begin(9600); Serial.print(" - Tensao = ");} Serial.print(tensao);void loop() { Serial.println(" V"); potenc=analogRead(2); delay(500); port=13; } for(i=1;i<=5;i++){ if(potenc>((i*2-1)*100)){ digitalWrite(port, HIGH);
  49. 49. Arduino MS Resumindo... • Arduino é um projeto simples, popular e acessível • Eletrônica e programação embarcada alto nível • Na prática ligamos componentes nas portas analógicas e digitais e escrevemos programas que usam as portas • Existem diversas bibliotecas que encapsulam a lógica de comunicação digital ou analógica: servo, motor de passo, Android, display LCD • Ter portas digitais analógicas e pmw é um grande valor do microcontrolador utilizado • A transfêrencia via USB e a ferramenta / IDE para programação funcionam em múltiplas plataformas • Open-source Hardware e Open-source software

×