arduíno muito prazer

52
Arduíno: muito prazer Heider Lopes

Upload: heider-lopes

Post on 19-Jun-2015

302 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Arduíno muito prazer

Arduíno: muito prazer

Heider Lopes

Page 2: Arduíno muito prazer

Quem sou eu?

• Pós-Graduando em Sistemas e Desenvolvimento WEB

• Formado em Sistemas de Informações - (FIAP)

• Twitter: @HeiderLopes

• Blog: www.heidertreinamentos.com.br/blog

• Programador

Page 3: Arduíno muito prazer

Agenda

• O que é o Arduino?• Como programar?• Robótica com o Arduino• Demonstrações

Page 4: Arduíno muito prazer

Introdução

• 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

Page 5: Arduíno muito prazer

Histórico

• Criado na Itália – Mássimo Banzi no Interaction Design Institute Ivrea;

• Nasceu para complementar o aprendizado de programação, computação física e gráfica;

Page 6: Arduíno muito prazer

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

Page 7: Arduíno muito prazer

Fabricantes

• Mega• Lilypad• Nano• Uno• Pro• Arduino BT• Freeduino• Severino• Program-ME

Page 8: Arduíno muito prazer

Modelo de Arduino

Page 9: Arduíno muito prazer

Atmega168 / Atmega328

• 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

Page 10: Arduíno muito prazer

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

Page 11: Arduíno muito prazer

Demonstrando uma placa Arduino

Page 12: Arduíno muito prazer

Demonstrando uma placa Arduino

Conector USB

Alimentação externa:Até 12 volts

Regular 7085:Recebe até 12 volts e regula para 5 volts

FT232RLConversor USB-Serial

Page 13: Arduíno muito prazer

Demonstrando uma placa Arduino

ICSPPara gravar bootloader ou programas/firmware

AtMega328 /168/8

Botão de reset

Page 14: Arduíno muito prazer

Demonstrando uma placa ArduinoPortas digitais 0 a 130 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

GNDAREFReferência analógicaPadrão 5 volts

Page 15: Arduíno muito prazer

Demonstrando uma placa Arduino

Portas analógicas de 0 a 5Podem funcionar como digitais de 14 a 19

VINAlimentação de entrada sem regulagem

GND5 volts

3.3 volts

Reset

Portas analógicas 4 e 5São as portas utilizadas para conexões via I2C / TWI.

Page 16: Arduíno muito prazer

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 = 0• 2.5 volts= 512• 5 volts = 1023

– Conversor A/D de 10 bits: 0 a 1023

Page 17: Arduíno muito prazer

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 transferidos em sequencia através de uma lógica ou protocolo binário

• Portas digitais não conseguem comandar potência

Page 18: Arduíno muito prazer

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;

Page 19: Arduíno muito prazer

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

Page 20: Arduíno muito prazer

Shields

• Arquitetura modular inteligente• Arduino estabeleceu um padrão de pinagem que

é respeitado por diversas placas shield:

Page 21: Arduíno muito prazer

Exemplo de shields

Page 22: Arduíno muito prazer

EXEMPLO DE COMPONENTES

Page 23: Arduíno muito prazer

Ping – Sensor de distância ultrasonico

Page 24: Arduíno muito prazer

Bússola

Page 25: Arduíno muito prazer

Shield LCD Touch screen

Page 26: Arduíno muito prazer

SIM Reader

Page 27: Arduíno muito prazer

Bluetooth

Page 28: Arduíno muito prazer

Como programar?

• IDE pode ser baixada de www.arduino.cc• A IDE foi desenvolvida com Java (necessário JVM)• Funciona em Windows, Mac OS X e Linux• Utiliza GCC + GCC Avr para compilação• A transferência para a placa pode ser feita– via USB pelo IDE;– Gravadores ICSP

Page 29: Arduíno muito prazer

Primeiros passos na IDE

• Temos que obrigatoriamente programar dois métodos:void setup() {}void loop() {}

• O setup é executado úma só vez assim que a placa for ligada

• O loop terá o código de execução infinita

Page 30: Arduíno muito prazer

Manipulando as Portas digitais e analógicas

– 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

Page 31: Arduíno muito prazer

Exemplo I: Piscando 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);}

Page 32: Arduíno muito prazer

Exemplo II: 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);}

Page 33: Arduíno muito prazer

Exemplo III: Sensor de movimento

Page 34: Arduíno muito prazer

Demonstração da IDE

• Como compilar?• Como ver exemplos?• Como enviar o código para a placa?

Page 35: Arduíno muito prazer

ROBÓTICA COM ARDUINO

Page 36: Arduíno muito prazer

Introdução

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

Page 37: Arduíno muito prazer

Paralelo entre robôs e humanos• Sentidos• Pensamentos• Ações

Page 38: Arduíno muito prazer

Nos seres humanos

• Nos seres humanos, iniciando pelos seus sentidos, temos um caminho que passa pelo tratamento do pensamento e termina ou resulta em ações.

Page 39: Arduíno muito prazer

Nos robôs• Um robô aciona seus atuadores, baseado em

seu processamento que teve como entrada os dados vindos de seus sensores• Sentidos - > Sensores• Pensamentos- > Processamento• Ações - > Atuadores

Page 40: Arduíno muito prazer

Robôs: Disitinguindo por capacidade de processamento

• 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:

Page 41: Arduíno muito prazer

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.

Page 42: Arduíno muito prazer

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.

Page 43: Arduíno muito prazer

Robôs de forma geral

• Manipuladores ou braços robóticos;

• Robôs móveis com rodas;

• Robôs móveis com pernas;

• Humanóides

Page 44: Arduíno muito prazer

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

Page 45: Arduíno muito prazer

Robô cartesiano

Page 46: Arduíno muito prazer

Robôs móveis com rodas

Page 47: Arduíno muito prazer

Robôs móveis com pernas

Page 48: Arduíno muito prazer

Robôs humanóides

Page 49: Arduíno muito prazer

Robôs de papelão

Page 50: Arduíno muito prazer

Robôs de 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.

Page 51: Arduíno muito prazer

Robôs de plástico

Page 52: Arduíno muito prazer

Concluindo

• 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