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!
Sobre este Arduino Hack Day…
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
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
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;
Simplicidade no circuito:
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
Vários tipos, vários fabricantes... Mega Lilypad Nano Uno Pro Arduino BT Freeduino Severino Program-ME
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
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
Resumo das conexões da placa
Conector USB Alimentação externa: Até 12 volts Regular 7085: Recebe até 12 volts e  regula para 5 volts  FT232RL Conversor USB-Serial
ICSP Para gravar bootloader  ou programas/firmware AtMega328 /168/8 Botão de reset
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
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.
Shields: arquitetura modular inteligente Arduino estabeleceu um padrão de pinagem que é respeitado por diversas placas shield:
Por dentro do MCU
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!)
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
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
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); }
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.
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); }
LDR no Arduino sem protoboard
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
Program-ME: Arduino turbinado nacional
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
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
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
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
Selecionando alimentação Jumper Seleção Externo ou USB
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
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); }
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
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 .
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) .
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
 
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.
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.
Placa Tomad@
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ê
Conectando seu Program-Me na placa Tomad@
Hacking Class  Ligando a placa no Arduino
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
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); }
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.
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 } }
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); } }
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); ...
outputStream = serialPort.getOutputStream(); serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); serialPort.notifyOnOutputEmpty(true); outputStream.write(bytes); serialPort.close();
Vamos praticar? Laboratório de uso de Arduino e placa tomad@
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:
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.
Partes de um Motor DC
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)
Redutor de rotação.
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:
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.
Servo Motores Principio de funcionamento
Vista explodida de um servomotor
Controle do Servo Motor
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
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.
Conexão e Esquema Elétrico
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.
Laboratório de servo Laboratório de Servomotores (laboratório assistido, instrutor guia alunos) Objetivo: Praticar. Tabela de atividades:

Arduino Hack Day por Vinicius Senger

  • 1.
  • 2.
    Arduino Hack DayEvento 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 ArduinoHack Day…
  • 4.
    Agenda Padrão Introduçãoa 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 ArduinoPlataforma 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 ArduinoProjeto 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.
  • 8.
    Muitas aplicações práticasRobô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áriosfabricantes... 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 6canais 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.
  • 13.
    Conector USB Alimentaçãoexterna: Até 12 volts Regular 7085: Recebe até 12 volts e regula para 5 volts FT232RL Conversor USB-Serial
  • 14.
    ICSP Para gravarbootloader ou programas/firmware AtMega328 /168/8 Botão de reset
  • 15.
    Portas digitais 0a 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 de0 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 modularinteligente Arduino estabeleceu um padrão de pinagem que é respeitado por diversas placas shield:
  • 18.
  • 19.
    Programando para ArduinoIDE 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 doprograma 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 eanaló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 Arduinosem protoboard
  • 26.
    DEMO Apresentação básicado Arduino IDE: Compilação; Samples; Upload; Dicas Demonstração do código com Arduino convencional Demonstração do código com Program-ME
  • 27.
  • 28.
    Ligando componentes Jumperssã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 portasVs. 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 portasVs. 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 OProgram-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 JumperSeleção Externo ou USB
  • 33.
    Lab 1: primeirocontato 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 “piscaled” 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 precisamospara 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árioutilizar 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 umRelé 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árioutilizar 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 nosrelé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.
  • 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.
  • 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 conectadona 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óriode uso de Arduino e placa tomad@
  • 54.
    Motores CC Baseadosno 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ãoesquerda 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 umMotor DC
  • 57.
    Caracteristicas Gerais dosMotores 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.
  • 59.
    Circuito de acionamentocom 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 controlede 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 Principiode funcionamento
  • 62.
    Vista explodida deum servomotor
  • 63.
  • 64.
    Características do ServoMotor   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 Possuemuma 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.
  • 67.
    Padrões de conexãodos 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 servoLaboratório de Servomotores (laboratório assistido, instrutor guia alunos) Objetivo: Praticar. Tabela de atividades: