Arduíno: muito prazer
Heider Lopes
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
Agenda
•
•
•
•

O que é o Arduino?
Como programar?
Robótica com o Arduino
Demonstrações
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
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;
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
Fabricantes
•
•
•
•
•
•
•
•
•

Mega
Lilypad
Nano
Uno
Pro
Arduino BT
Freeduino
Severino
Program-ME
Modelo de Arduino
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
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
Demonstrando uma placa Arduino
Demonstrando uma placa Arduino
FT232RL
Conversor USB-Serial

Conector USB

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

Alimentação externa:
Até 12 volts
Demonstrando uma placa Arduino
Botão de reset

ICSP
Para gravar bootloader
ou programas/firmware

AtMega328 /168/8
Demonstrando uma placa Arduino
AREF
Referência analógica
Padrão 5 volts

GND

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
Demonstrando uma placa Arduino

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

Portas analógicas de 0 a 5
GND
Reset
Podem funcionar como digitais de 14 a 19
5 volts
VIN
3.3 volts
Alimentação de entrada sem regulagem
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
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
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;
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
Shields
• Arquitetura modular inteligente
• Arduino estabeleceu um padrão de pinagem que
é respeitado por diversas placas shield:
Exemplo de shields
EXEMPLO DE COMPONENTES
Ping – Sensor de distância ultrasonico
Bússola
Shield LCD Touch screen
SIM Reader
Bluetooth
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
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
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
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);
}
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);
}
Exemplo III: Sensor de movimento
Demonstração da IDE
• Como compilar?
• Como ver exemplos?
• Como enviar o código para a placa?
ROBÓTICA COM ARDUINO
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.
Paralelo entre robôs e humanos
• Sentidos
• Pensamentos
• Ações
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.
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
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:
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.
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
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
Robô cartesiano
Robôs móveis com rodas
Robôs móveis com pernas
Robôs humanóides
Robôs de papelão
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.
Robôs de plástico
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

Arduíno muito prazer

  • 1.
  • 2.
    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
  • 3.
    Agenda • • • • O que éo Arduino? Como programar? Robótica com o Arduino Demonstrações
  • 4.
    Introdução • Plataforma baseadaem 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
  • 5.
    Histórico • Criado naItália – Mássimo Banzi no Interaction Design Institute Ivrea; • Nasceu para complementar o aprendizado de programação, computação física e gráfica;
  • 6.
    Aplicações práticas • • • • • • • • • Robôs Roupas eletrônicas Máquinasde corte e modelagem 3D de baixo custo; Segway open-source Desenvolvimento de celulares customizados Instrumentos musicais Paredes interativas Instrumentação humana Circuit bending
  • 7.
  • 8.
  • 9.
    Atmega168 / Atmega328 • • • • • • • • • • Característicasdo 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
  • 10.
    Características técnicas • • • • • • • • 6 canaisPWM 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
  • 11.
  • 12.
    Demonstrando uma placaArduino FT232RL Conversor USB-Serial Conector USB Regular 7085: Recebe até 12 volts e regula para 5 volts Alimentação externa: Até 12 volts
  • 13.
    Demonstrando uma placaArduino Botão de reset ICSP Para gravar bootloader ou programas/firmware AtMega328 /168/8
  • 14.
    Demonstrando uma placaArduino AREF Referência analógica Padrão 5 volts GND 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
  • 15.
    Demonstrando uma placaArduino Portas analógicas 4 e 5 São as portas utilizadas para conexões via I2C / TWI. Portas analógicas de 0 a 5 GND Reset Podem funcionar como digitais de 14 a 19 5 volts VIN 3.3 volts Alimentação de entrada sem regulagem
  • 16.
    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
  • 17.
    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
  • 18.
    Porta PWM • Umaporta híbrida: digital porém com modularização de zeros e uns de forma que consegue expressar uma idéia de potência;
  • 19.
    Na prática • Ligamoscomponentes 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
  • 20.
    Shields • Arquitetura modularinteligente • Arduino estabeleceu um padrão de pinagem que é respeitado por diversas placas shield:
  • 21.
  • 22.
  • 23.
    Ping – Sensorde distância ultrasonico
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
    Como programar? • • • • • IDE podeser 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
  • 29.
    Primeiros passos naIDE • 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
  • 30.
    Manipulando as Portasdigitais 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
  • 31.
    Exemplo I: PiscandoLed 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); }
  • 32.
    Exemplo II: LuzAmbiente 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); }
  • 33.
    Exemplo III: Sensorde movimento
  • 34.
    Demonstração da IDE •Como compilar? • Como ver exemplos? • Como enviar o código para a placa?
  • 35.
  • 36.
    Introdução • A palavrarobô 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.
  • 37.
    Paralelo entre robôse humanos • Sentidos • Pensamentos • Ações
  • 38.
    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.
  • 39.
    Nos robôs • Umrobô aciona seus atuadores, baseado em seu processamento que teve como entrada os dados vindos de seus sensores • Sentidos - > Sensores • Pensamentos- > Processamento • Ações - > Atuadores
  • 40.
    Robôs: Disitinguindo porcapacidade 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:
  • 41.
    Robô inteligente • Podese mover de forma autônoma e segura por um ambiente não preparado e atingir um objetivo ou efetivar uma tarefa.
  • 42.
    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.
  • 43.
    Robôs de formageral • Manipuladores ou braços robóticos; • Robôs móveis com rodas; • Robôs móveis com pernas; • Humanóides
  • 44.
    Manipuladores ou braçorobó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
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
    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.
  • 51.
  • 52.
    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