A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Arduino Hack Day Evento promovido por entusiastas, universidades e empresas Colaborativo e participativo Informações técnicas e troca de experiências.

Apresentações semelhantes


Apresentação em tema: "Arduino Hack Day Evento promovido por entusiastas, universidades e empresas Colaborativo e participativo Informações técnicas e troca de experiências."— Transcrição da apresentação:

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… Javaneiros Edition Organizado pelo Jeff - empresa Jera Agradecimentos ao apoio da faculdade e prof. Bob

4 Agenda Padrão Introdução a Arduino Controlando tomadas pela Internet Controle de motores com Arduino Introdução a robótica

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 ciclos na Flash e 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 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 Porta Digital Vs. Analógica Digital: trabalha com 0 e 1 na lógica binária. – Digital do 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 = volts= volts = 1023 – Conversor A/D de 10 bits: 0 a 1023

20 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 As portas digitais permitem que dados sejam tranferidos em sequencia através de uma lógica ou protocolo binário Portas digitais não conseguem comandar potência

21 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 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 Ping – Sensor de distância ultrasonico

24 Bússula Bússola

25 LCD Touch Shield LCD Touch screen

26 SIM Reader

27 Wave Shield

28 XBee

29 Lojas de componentes

30 Programando para Arduino IDE pode ser baixada de 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!)

31 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

32 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(, ): configura uma porta digital para ser lida ou para enviarmos dados; – digitalWrite(, 0 ou 1): envia 0 ou 1 para porta digital – digitalRead( ): retorna um 0 ou 1 lido da porta – analogRead( ): retorna de 0 a 1023 com o valor da porta analógica – analogWrite(, ): escreve em uma porta PWM um valor de 0 a 255

33 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.

34 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 LDR no Arduino sem protoboard

36 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); }

37 DEMO Apresentação básica do Arduino IDE: – Compilação; – Samples; – Upload; – Dicas

38 Program-ME: Arduino turbinado nacional

39 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

40 Mapa de portas Vs. componentes CódigoPortaComponente L114 (igual analógica 0) Led L2Digital 1Led L3Digital 2Led L4Digital 3Led L5Digital 4Led L6Digital 5Led L7Digital 8Led L8Digital 6Led L9Digital 13Led C1Analógica 5LDR

41 Mapa de portas Vs. componentes CódigoPortaComponente Q2Digital 7Led Q3Digital 6Led Q4Digital 18Led Q5Digital 17Led Chv1Digital 0Chave microswitch / botão SpkDigital 12Speaker Servo-1Digital 10Entrada servo-1 Servo-2Digital 11Entrada servo-2 JP7Analógica 1Entrada analógica / potenciômetro JP6Analógica 2Entrada analógica / potenciômetro

42 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

43 Selecionando alimentação Jumper Seleção Externo ou USB

44 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

45 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); }

46 Lab 2 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); }

47 Lab 3: desafio - luz ambiente e leds Os leds de 1 a 9 Program-Me estão ligados nas portas 14,1,2,3,4,5,8,6,13. Crie um programa que quanto menor a luz do ambiente mais leds ele acende e apaga em sequencia.

48 Lab 4: hummm... Ligue e desligue a porta 12 com diferentes intervalos de tempo...

49 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

50 Tomadas com Arduino

51 Ligando uma tomada no Arduino, como? Qualquer mínimo contato de um fio 110 no Arduino seria capaz de um show pirotécnico Isso acontece porque as portas digitais do Arduino funcionam com 5v de conta continua e tomadas 110 e 220 trabalham com corrente alternada Mas porque tomadas (e a energia de uma residencia) trabalha com corrente alternada e não contina? – A transmissão da energia com corrente continua para longa distancias é inviável!

52 Relé como ponte entre Arduino e AC O meio de conexão entre seu Arduino e uma tomada pode ser um relé Um relé é um interruptor eletromagnético que quando conduzimos corrente o interruptor fecha um determinado contato Esses contatos podem estar normalmente abertos (desconectados) ou normalmente fechados (conectados) Siglas NO NC em ingles ou NA NF em portugues

53 Como funciona um Relé

54

55 Mas... Como ligar um relé no Arduino? O Arduino (le-se Atmega) é um controlador de baixo consumo Suas portas digitais não fornecem mais de 40ma de corrente Para acionar o mecanismo eletromagnético da bobina do relé é necessário mais de 40ma de corrente Por este motivo precisamos ligar um transistor entre o Arduino e o relé Para ligar um Arduino no relé precisamos de um transistor, a menos que o relé seja muito pequeno

56 E é só isso? Um fenômeno físico acontece em todo mecanismo eletromagnético quando é desenergizado É conhecido como tensão reversa Assim que tiramos a energia de um algo eletromagnético recebemos de volta um choque Com Arduino ligado em transistor que aciona o relé, o choque seria recebido pelo transistor Isso poderia ser fatal para o transistor! Usamos um diodo (componente que só deixa a corrente passar em um sentido) para proteger o transistor O diodo deve ser colocado em paralelo com o mecanismo

57 Placa

58 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ê

59

60 Conectando seu Program-Me na placa

61 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

62 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); }

63 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 Para controlar as tomadas, vamos ligar a placa 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.

64 void setup() { Serial.begin(9600); pinMode(2, OUTPUT); pinMode(3, OUTPUT); } void loop() { if(Serial.available() >0) { int incoming=Serial.read(); Serial.println("Recebendo dados"); Serial.println(incoming, DEC); acionarRele(incoming);// seu protocolo }

65 void acionarRele(int codigo) { if(codigo=65) { Serial.println("HIGH no rele 1"); digitalWrite(3, HIGH); } else if(codigo=66) { Serial.println("LOW no rele 1"); digitalWrite(3, LOW); } else if(codigo=67) { Serial.println("HIGH no rele 2"); digitalWrite(2, HIGH); } else if(codigo=68) { Serial.println("LOW no rele 2"); digitalWrite(2, LOW); }

66 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { byte[] dados = new byte[1]; dados[0] = Byte.parseByte(request.getParameter("rele")); try { Arduino.enviar(dados);...

67 outputStream = serialPort.getOutputStream(); serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); serialPort.notifyOnOutputEmpty(true); outputStream.write(bytes); serialPort.close();

68 Vamos praticar? Com base nos slides, conecte a placa tomada no Program- ME e escreva um programa para chavear o relé Ao finalizar crie uma lógica com sensor de luz e relé Opcional: criar um programa Web usando RXTX

69 Motores com Arduino

70 Tipos de motores Podemos qualificar motores em: – Velocidade de rotação / RPM – Força – Precisão Redutores são utilizados para transformar rotação em força 3 principais tipos motores: – Motor DC / CC: velocidade – Servo-motor: precisão (e força!) – Motor de passo: precisão e força (+ difícil)

71 Motor DC (com redução)

72 Motor DC Motor simples para comandar que pode ter alta velocidade ou torque (conforme redução) Não tem precisão angular Podemos controlar a potência com PWM Assim como relé precisamos ligar em um transistor com diodo de proteção Para inverter a direção da rotação temos que inverter a polaridade DEMO: motor na bateria e direção

73 Motor DC com Arduino em Protoboard

74 Motor DC no Program-ME Podemos usar o transistor Q3 (porta digital PWM 6) Ligamos o + no 12v e o – no borne do transistor

75 Motor DC no Program-ME

76 Exemplo de código #define Q3 6 void setup() {} void loop() { for(int x=0;x<255;x++) { analogWrite(Q3, x); delay(20); } for(int x=255;x>0;x--) { analogWrite(Q3, x); delay(20); }

77 Vamos praticar? Com base nos exemplos fornecidos e modelo de conexão, utilize o motor DC disponível com a placa controladora fornecida Nunca faça conexões com a placa ligada! Revise o circuito!!

78 Servo Motor com precisão angular Fácil comando É um motor + redução + driver! Por padrão virar apenas de 0 a 180 graus Podemos hackear ou comprar servos full-rotation Conexão super simples: GND 5v sinal digital

79 No Program-ME temos duas entradas

80 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.

81 Program-ME & Servo

82 Servo + LDR com Program-ME #include Servo myservo; void setup() { myservo.attach(10); } void loop() { int val = map(analogRead(5),0,1023,0,179); myservo.write(val); delay(15); }

83 Vamos praticar? Ligar o servo na entada servo-1, o marrom (GND), deve estar para o lado do USB Digitar o código apresentado anteriormente

84 Robótica com Arduino

85 A palavra robô vem de robot que foi utilizada em uma peça de teatro de 1920, chamada R.U.R. (Rossum's Universal Robots), do tcheco Karel Capek. Aparentemente a palavra descende de ROBOTA, que em checo significa trabalho servil ou trabalho pesado. Uma definição mais realista de robô, seria que ele é um manipulador reprogramável e multi-funcional projetado para mover materiais, partes, ferramentas ou dispositivos especializados através de movimentos variáveis programados para desempenhar uma variedade de tarefas.

86 Podemos fazer um paralelo entre os robôs e os seres humanos baseados em 3 aspectos distintos: Sentidos Pensamentos Ações Nos seres humanos, iniciando pelos seus sentidos, temos um caminho que passa pelo tratamento do pensamento e termina ou resulta em ações. Podemos usar essa mesma linha de análise para os robôs, porém, substituindo a nomenclatura por outra mais adequada: Sentidos - > Sensores Pensamentos - > Processamento Ações - > Atuadores Dessa forma, um robô aciona seus atuadores, baseado em seu processamento que teve como entrada os dados vindos de seus sensores.

87 Todos os robôs têm em comum a realização de algum tipo de movimento sendo que também podemos distinguir os robôs pela sua capacidade de processamento, sendo assim poderíamos classificar os robôs como: Robô inteligente pode se mover de forma autônoma e segura por um ambiente não preparado e atingir um objetivo ou efetivar uma tarefa. Robô não inteligente deve repetir de forma confiável a mesma tarefa para que foi programado, porém sem enfrentar variações no ambiente ou situações. Nesse caso, a definição fica mais próxima de automação e pode distinguir entre um robô e uma máquina de lavar.

88 De uma forma geral temos os seguintes tipos de robôs: Manipuladores ou braços robóticos; Robôs móveis com rodas; Robôs móveis com pernas; Humanóides

89 Manipuladores ou braço robótico Atualmente, a maior aplicação de robôs é na área industrial, principalmente na produção de bens de consumo. Nessa área, o tipo mais popularmente conhecido de robô é o braço robótico:

90 Robô cartesiano ou gantry

91 Robôs móveis com rodas

92 Robôs móveis com pernas Hexapod: robô baseado em insetos

93 Robôs humanóides Entre os robôs humanóides, o mais conhecido é o da Honda

94 Exemplos de robôs com papelão e PCI

95 Madeira Compensado / MDF: talvez o material mais fácil de trabalhar e muito acessível. É isolante, o que diminui a preocupação com a montagem. Pode ser colada e furada com facilidade. O inconveniente é a sua relação peso / resistência. Duratex: muito fácil de ser trabalhado, pode ser usado em alguns casos, porém, é muito flexível para ser usado como chassi de robôs maiores.

96 Exemplos de robôs com madeira

97 Exemplos de robôs com plástico

98 Como controlar dois motores? Utilizando um circuito integrado auxiliar podemos controlar 2 motores O circuito proposto permite o controle de dois motores O circuito permite a inversão de polaridade, que no caso de motor DC, nos permite avançar e retroceder A solução pode ser feita com transistores em ponte H Podemos usar um circuito de ponte H pronto

99 Visão do circuito integrado

100 Conexão motores

101 Definindo portas #define MOTOR1_P 12 #define MOTOR1_N 11 #define MOTOR1_PWM 5 #define MOTOR2_P 8 #define MOTOR2_N 7 #define MOTOR2_PWM 6

102 Comando para avançar ou retroceder void andarFrente(int tempo, int intensidade) { sentido = 0; analogWrite(MOTOR1_PWM,intensidade*50); analogWrite(MOTOR2_PWM,intensidade*50); digitalWrite(MOTOR1_P,sentido); digitalWrite(MOTOR1_N,!sentido); digitalWrite(MOTOR2_P,sentido); digitalWrite(MOTOR2_N,!sentido); delay(tempo); }

103 Vamos praticar? DOJO? Ponte H? 3-shield?


Carregar ppt "Arduino Hack Day Evento promovido por entusiastas, universidades e empresas Colaborativo e participativo Informações técnicas e troca de experiências."

Apresentações semelhantes


Anúncios Google