Arduino Hack Day por Vinicius Senger

  • 5,130 views
Uploaded on

O Arduino Hack Day foi realizado em Ilheus, Brasilia, Campo Grande e São Paulo. Uma iniciativa Globalcode e EletronLivre em conjunto com diversas pessoas e instituições locais. …

O Arduino Hack Day foi realizado em Ilheus, Brasilia, Campo Grande e São Paulo. Uma iniciativa Globalcode e EletronLivre em conjunto com diversas pessoas e instituições locais. http://www.globalcode.com.br/noticias/ArduinoHackDay

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
5,130
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
1
Likes
10

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1.  
  • 2. Arduino Hack Day
    • Evento promovido por entusiastas, universidades e empresas
    • Colaborativo e participativo
    • Informações técnicas e troca de experiências
    • Elétron Livre apoia a iniciativa emprestando materiais, cedendo direito de uso de slides e ajudando na preparação geral do evento
    • PROMOVA VOCÊ TAMBÉM UM ARDUINO HACK DAY!
  • 3. Sobre este Arduino Hack Day…
  • 4. Agenda Padrão
    • Introdução a Arduino
    • Controlando tomadas pela Internet
    • Controle de motores com Arduino
    • Introdução a robótica
    • Criação de placas e shields
  • 5. Introdução ao Arduino
    • Plataforma baseada em Atmel da AVR (ATMega168);
    • 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. 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. Simplicidade no circuito:
  • 8. Muitas aplicações práticas
    • Robôs
    • Roupas eletrônicas
    • Máquinas de corte e modelagem 3D de baixo custo;
    • Segway open-source
    • Desenvolvimento de celulares customizados
    • Instrumentos musicais
    • Paredes interativas
    • Instrumentação humana
    • Circuit bending
  • 9. Vários tipos, vários fabricantes...
    • Mega
    • Lilypad
    • Nano
    • Uno
    • Pro
    • Arduino BT
    • Freeduino
    • Severino
    • Program-ME
  • 10. Atmega168 / Atmega328: coração
    • Características do ATmega 168:
    • RISC
    • 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. 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. Resumo das conexões da placa
  • 13. Conector USB Alimentação externa: Até 12 volts Regular 7085: Recebe até 12 volts e regula para 5 volts FT232RL Conversor USB-Serial
  • 14. ICSP Para gravar bootloader ou programas/firmware AtMega328 /168/8 Botão de reset
  • 15. Portas digitais 0 a 13 0 RX 1 TX = usada durante 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 2, 3 = portas que pode ter interrupções programadas GND AREF Referência analógica Padrão 5 volts
  • 16. Portas analógicas de 0 a 5 Podem funcionar como digitais de 14 a 19 VIN Alimentação de entrada sem regulagem GND 5 volts 3.3 volts Reset Portas analógicas 4 e 5 São as portas utilizadas para conexões via I2C / TWI.
  • 17. Shields: arquitetura modular inteligente
    • Arduino estabeleceu um padrão de pinagem que é respeitado por diversas placas shield:
  • 18. Por dentro do MCU
  • 19. Programando para Arduino
    • IDE pode ser baixada de www.arduino.cc
    • A IDE foi desenvolvida com Java, portanto precisaremos de um máquina virtual 1.5 ou 1.6 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!)
  • 20. Partes básicas do programa Arduino
    • Temos que obrigatoriamente programar dois métodos:
      • void setup() {
      • }
      • void loop() {
      • }
    • O setup é executado úma só vez assim que a placa for ligada e o loop terá o código de execução infinita
  • 21. 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
  • 22. 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);
    • }
  • 23. 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.
  • 24. Exemplo “luz ambiente”
    • void setup() {
    • //Inicializando conexão com PC via FT232 - cabo
    • Serial.begin(9600);
    • }
    • void loop() {
    • int luz = analogRead(5); //LDR ligado na 5
    • //envia informações para o PC
    • Serial.println(luz);
    • delay(500);
    • }
  • 25. LDR no Arduino sem protoboard
  • 26. DEMO
    • Apresentação básica do Arduino IDE:
      • Compilação;
      • Samples;
      • Upload;
      • Dicas
    • Demonstração do código com Arduino convencional
    • Demonstração do código com Program-ME
  • 27. Program-ME: Arduino turbinado nacional
  • 28. Ligando componentes Jumpers são utilizados para ligar ou desligar os componentes on-board Se todos os jumpers forem retirados, todas as portas são liberadas deixando o Program-ME funcionando como um Arduino. Você pode escolher o que ligar!
    • Com o mapa de portas documentado a seguir, conseguimos saber qual jumper habilita qual componente e em qual porta
  • 29. Mapa de portas Vs. componentes Código Porta Componente L1 14 (igual analógica 0) Led L2 1 Led L3 2 Led L4 3 Led L5 4 Led L6 5 Led L7 8 Led L8 6 Led L9 13 Led C1 Analógica 5 LDR
  • 30. Mapa de portas Vs. componentes Código Porta Componente Q2 Digital 6 Led Q3 Digital 9 Led Q4 Digital 18 Led Q5 Digital 17 Led Chv1 Digital 0 Chave microswitch / botão Spk Digital 12 Speaker Servo-1 Digital 10 Entrada servo-1 Servo-2 Digital 11 Entrada servo-2 JP7 Analógica 1 Entrada analógica / potenciômetro JP6 Analógica 2 Entrada analógica / potenciômetro
  • 31. Selecionando alimentação
    • O Program-ME possui um jumper para seleção de alimentação USB ou fonte externa
    • Toda vez que ligar componentes que possam consumir mais que 500ma, devemos alimentar com fonte externa!
    • Durante os laboratórios de motores e relés lembre-se de mudar este jumper e alimentar com fonte externa
  • 32. Selecionando alimentação Jumper Seleção Externo ou USB
  • 33. Lab 1: primeiro contato com Program-ME / Arduino
    • Ligar sua placa no cabo USB e no PC
    • Verificar o jumper de alimentação configurando para USB se necessário
    • Digitar o código a seguir no Arduino IDE
    • Clicar no botão de transferência de sketch
  • 34. Lab 1: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);
    • }
  • 35. O que precisamos para controlar uma tomada via Web
    • Microcontrolador
    • Relê, transistor, diodo e resistor
    • PC ou um shield Ethernet ou wifi para seu microcontrolador
    • Aqui vamos usar...
    • Arduino
    • Placa Tomad@
    • PC e shield wifi para Arduino
  • 36. Porque é necessário utilizar relés ?
    • As portas de saída do microcontrolador (ATmega), utilizado nas placas Arduino, tem uma capacidade máxima de corrente de 40mA por porta. Essa corrente é suficiente apenas para alimentar uns 4 Leds comuns, portanto para acionar dispositivos que consomem correntes acima de 40mA em 5Volts, dispositivos de voltagens maiores e dispositivos alimentados com tensão AC, é necessário colocar um transistor e um relé entre o micro-controlador e a carga .
  • 37. O que é um relé ?
    • Os relés são basicamente interruptores acionados elétricamente.
    • Os relés podem possuir um ou mais contatos (“interruptores”) sendo que esses contatos podem ser:
    • NA (normalmente aberto) / NO (normal open)
    • ou
    • NF (normalmente fechados) / NC (normal closed) .
  • 38. Como funciona um Relé
    • O acionamento dos contatos de um relé ocorre quando a sua bobina é energizada. Nesse momento é criado um campo magnético que atrai uma alavanca responsável pelo acionamento dos contatos
    • Para acionar um relé precisamos de transistor e diodo de proteção
    relé simples relé duplo
  • 39.  
  • 40. Porque é necessário utilizar o transistor ?
    • Existem relés bem pequenos que poderiam ser acionados diretamente por um microcontrolador, porém na maioria dos casos utilizamos um transistor entre a porta do micro-controlador e o relé devido a corrente necessária para ativar a bobina do relé ser maior que 40mA.
  • 41. Tensão reversa nos relés
    • Ao desenergizar a bobina de um relé, ocorre um fenômeno que faz com que seja gerada uma tensão reversa pela bobina. Devemos proteger o circuito responsável pelo acionamento, instalando um diodo em paralelo com a bobina.
  • 42. Placa Tomad@
  • 43. Hacking Class Componentes da placa
    • R1 e R2 = resistor 1k – para os transistores
    • R3 e R4 = resistor 330R – para os leds
    • D1 e D2 = diodo IN4007
    • Led1 e Led2 = led on / off
    • Fusível 1 e Fusível 2 = proteção
    • T1 e T2 = transistor para acionar bobina do relê
    • Relê 1 e Relê 2
    • Bornes para encaixe dos fios de acionamento da saída do contato do relê
  • 44. Conectando seu Program-Me na placa Tomad@
  • 45. Hacking Class Ligando a placa no Arduino
  • 46. Hacking Class Ligando a placa na tomada
    • Devemos romper o fio de uma das fases;
    • Cortamos o fio e vamos ligar cada uma das pontas em um dos bornes da placa
  • 47. void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); } void loop() { digitalWrite(3, LOW); digitalWrite(2, HIGH); delay(1000); digitalWrite(2, LOW); digitalWrite(3, HIGH); delay(1000); }
  • 48. 1. Computador conectado na Web com servidor Java recebe request HTTP com solicita ção para acionar a tomada 2. Este servidor web terá uma placa Arduino ligada permanentemente. O servlet (ou equiv) vai acionar a placa via comunicação serial RS-232. 3. Para controlar as tomadas, vamos ligar a placa Tomad@ no Arduino. Essa placa possui um par de relês que podem ser ligados em uma tomada e acionados on / off através de sinal digital 0 ou 1 4. Vamos ligar uma tomada no relê da nossa placa ou então um aparelho qualquer.
  • 49. void setup() { Serial.begin(9600); pinMode(2, OUTPUT); pinMode(3, OUTPUT); } void loop() { if(Serial.available() >0) { int incoming=Serial.read(); Serial.println(&quot;Recebendo dados&quot;); Serial.println(incoming, DEC); acionarRele(incoming);// seu protocolo } }
  • 50. void acionarRele(int codigo) { if(codigo=65) { Serial.println(&quot;HIGH no rele 1&quot;); digitalWrite(3, HIGH); } else if(codigo=66) { Serial.println(&quot;LOW no rele 1&quot;); digitalWrite(3, LOW); } else if(codigo=67) { Serial.println(&quot;HIGH no rele 2&quot;); digitalWrite(2, HIGH); } else if(codigo=68) { Serial.println(&quot;LOW no rele 2&quot;); digitalWrite(2, LOW); } }
  • 51. Hacking Class Código Servlet response.setContentType(&quot;text/html;charset=UTF-8&quot;); PrintWriter out = response.getWriter(); try { byte[] dados = new byte[1]; dados[0] = Byte.parseByte(request.getParameter(&quot;rele&quot;)); try { Arduino.enviar(dados); ...
  • 52. outputStream = serialPort.getOutputStream(); serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); serialPort.notifyOnOutputEmpty(true); outputStream.write(bytes); serialPort.close();
  • 53. Vamos praticar?
    • Laboratório de uso de Arduino e placa tomad@
  • 54. Motores CC Baseados no principio da atração e repulsão entre pólos magnéticos os motores CC são uma aplicação inteligente da comutação de circuitos eletromagnéticos. Principio de Funcionamento:
  • 55. Regra da mão esquerda O sentido da rotação do motor dependerá da polaridade da ligação da fonte de alimentação e está vinculada com a regra da mão esquerda, que define o sentido da corrente, do campo gerado e do movimento. E a velocidade de rotação dependerá da corrente que atravessa o circuito e consequentemente da tensão aplicada.
  • 56. Partes de um Motor DC
  • 57. Caracteristicas Gerais dos Motores CC
    • Um motor cc é caracterizado basicamente por:
    • Dimensionamento físico;
    • Potência nominal;
    • Tensão nominal;
    • Corrente nominal;
    • Velocidade nominal;
    • Torque nominal;
    • Torque de frenagem;
    • Potência (Watts) = Tensão (Volts) x Corrente (Amperes)
  • 58. Redutor de rotação.
  • 59. Circuito de acionamento com um transistor
    • A maneira mais simples de controlar um motor é utilizando um único transistor. Com esse método podemos controlar o acionamento e a velocidade do motor.
    • O circuito para esse controle é parecido com o circuito de acionamento do solenóide, como podemos ver a seguir:
  • 60. Circuito para controle de 2 motores Podemos notar que a alimentação do circuito lógico é feita com 5V e a alimentação dos motores é separada, podendo ser de até 36V.
  • 61. Servo Motores Principio de funcionamento
  • 62. Vista explodida de um servomotor
  • 63. Controle do Servo Motor
  • 64. Características do Servo Motor   Sistema de controle: Largura de pulso com 1,52ms para posição neutra Tipo do Motor: 3-polos Tensão de Alimentação: 4.8V ou 6V Consumo de potência: 6V x 8mA (em descanso) Torque: 33,3 oz-in (2,4 kg/cm) @ 4.8V 42 oz-in (3,0 kg/cm) @ 6V Tempo de trânsito: 0,28 seg/60° @ 4.8V 0,22 seg/60° @ 6V Dimensões: 40 x 20 x 36mm Peso: 44g Diametro do eixo: 5,88mm
  • 65. Servos digitais
    • Possuem uma taxa de atualização da posição muito maior.
    • Enquanto os servos analógicos são atualizados 30 vezes por segundo (30Hz) os digitais são atualizados 300 vezes por segundo (300 Hz).
    • O torque pode chegar a ser 3 vezes maior que o do servo analógico.
    •   Os servos digitais também podem ser programados em relação ao posicionamento, definindo limites e posições para o caso de falhas.
  • 66. Conexão e Esquema Elétrico
  • 67. Padrões de conexão dos Servos Outra diferença está na conexão mecânica do eixo do servo, que no Hitec tem 24 dentes e no Futaba 25.
  • 68. Laboratório de servo
        • Laboratório de Servomotores
    (laboratório assistido, instrutor guia alunos) Objetivo: Praticar. Tabela de atividades: