Palestra: Robótica com Arduino
Apresentada no Workshop de Robótica Educacional realizado durante a RoboCup, em 23 de julho de 2014.
Apresentada pela primeira vez no VII Encontro Técnico Estudantil organizado pela ISA-ES, em 13 de agosto de 2011.
Autor: Felipe Nascimento Martins
3. Conteúdo
• O que um robô precisa:
• Sensores, Atuadores e... “Cérebro”!
• Microcontrolador;
• Arduino;
• Programação e aplicação.
• OBS.:
• Esta é uma palestra introdutória;
• Vamos ver algum conteúdo técnico.
Felipe Nascimento Martins
4. O que é um robô (móvel)?
• Veículo capaz de movimentação autônoma,
equipado com atuadores controlados por um
computador embarcado.
• Um robô móvel pode deslocar-se:
• no solo, através de rodas, esteiras, patas, etc.;
• no ar, como um helicóptero, avião ou balão;
• na água, como um navio ou submarino;
• ou no espaço!
5. Atuadores e Sensores
• Para deslocar-se de forma autônoma um
robô móvel precisa ter atuadores e
sensores, além de um computador.
• Atuadores: transformam sinais de controle
(de posição ou de velocidade) em
movimento – motor, haste hidráulica, etc.;
• Sensores: realizam a “percepção do
mundo”: encoder, acelerômetro, LASER,
bússola, ultrassom, câmera, etc.
Felipe Nascimento Martins
9. O que é Arduino?
• Arduino é uma plataforma de prototipagem
eletrônica open-source, baseada nos princípios
de flexibilidade e facilidade de uso para hardware
e software.
• Consiste de uma placa com microcontrolador
programável preparada para receber sinais de
sensores e acionar atuadores.
• Sua linguagem de programação é baseada em
Wiring (baseado em C/C++).
• A placa pode funcionar em conjunto ou de forma
independente do computador.
Felipe Nascimento Martins
14. Arduino é Open Source
• Desenvolvido por: Massimo Banzi, David
Cuartielles, Tom Igoe, Gianluca Martino e David
Mellis, na Itália, em 2005;
• Todo o projeto é aberto: open source hardware
and software;
• 200 placas vendidas em 2005, 5.000 em 2006,
30.000 em 2007 e mais de 300.000 em 2011 e
cerca de 1 milhão até setembro de 2013!
• Site oficial: www.arduino.cc
Felipe Nascimento Martins
18. Arduino é Open Source!
• Todo o hardware é aberto e os projetos estão
disponíveis.
• Quem quiser, pode comprar os componentes e montar a
sua placa!
• O software de programação também é livre e está
disponível para download gratuitamente.
Felipe Nascimento Martins
19. Arduino é Open Source!
• Todo o hardware é aberto e os projetos estão
disponíveis.
• Quem quiser, pode comprar os componentes e montar a
sua placa!
• O software de programação também é livre e está
disponível para download gratuitamente.
• Mas...
Felipe Nascimento Martins
20. Arduino é Open Source!
• Todo o hardware é aberto e os projetos estão
disponíveis.
• Quem quiser, pode comprar os componentes e montar a
sua placa!
• O software de programação também é livre e está
disponível para download gratuitamente.
• Mas...
• O nome Arduino é marca registrada!
Felipe Nascimento Martins
32. Arduino Uno
• Microcontrolador: ATmega328;
• Tensão de operação: 5V;
• Tensão de entrada (recomendada): 7-12V;
• Pinos digitais de E/S:14 (6 podem ter sinal PWM);
• Pinos com entrada analógica: 6;
• Corrente máxima por pino de E/S: 40 mA;
• Hardware para comunicação: 1 porta serial (UART TTL),
I2C (TWI), SPI;
• Memória Flash (de programa): 32 kB, dos quais 0,5 kB
são usados pelo bootloader;
• Memória SRAM: 2 kB; EEPROM: 1 kB;
• Frequência de clock: 16 MHz.
Felipe Nascimento Martins
34. Arduino Leonardo
• Microcontrolador: ATmega32u4;
• Tensão de operação: 5V;
• Tensão de entrada (recomendada): 7-12V;
• Pinos digitais de E/S: 20 (7 podem ter sinal PWM);
• Pinos com entrada analógica: 12;
• Corrente máxima por pino de E/S: 40 mA;
• Hardware para comunicação: 1 porta serial (UART TTL),
I2C (TWI), SPI, USB 2.0 (emula teclado ou mouse);
• Memória Flash (de programa): 32 kB, dos quais 4 kB são
usados pelo bootloader;
• Memória SRAM: 2,5 kB; EEPROM: 1 kB;
• Frequência de clock: 16 MHz.
Felipe Nascimento Martins
36. Arduino Mega 2560
• Microcontrolador: ATmega2560;
• Tensão de operação: 5V;
• Tensão de entrada (recomendada): 7-12V;
• Pinos digitais de E/S: 54 (15 podem ter sinal PWM);
• Pinos com entrada analógica: 16;
• Corrente máxima por pino de E/S: 40 mA;
• Hardware para comunicação: 4 portas seriais (UART
TTL), I2C (TWI), SPI, USB 2.0 (emula teclado ou mouse);
• Memória Flash (de programa): 256 kB, dos quais 8 kB
são usados pelo bootloader;
• Memória SRAM: 8 kB; EEPROM: 4 kB;
• Frequência de clock: 16 MHz.
Felipe Nascimento Martins
39. O que é um Microcontrolador?
– Chip;
– CPU de pequeno porte, capaz de executar
um conjunto de instruções;
– Ou seja, possui um microprocessador!
– Instruções simples e rápidas;
– Possui memória(s);
– Possui periféricos;
– Pode se comunicar com outros periféricos;
etc.
Felipe Nascimento Martins
40. Componentes de um Microcontrolador
Conversor
D/A
Conversor
A/D
PWM
CPU
EEPROM
RAM
Porta
Serial
Porta
Paralela
Temporizadores
Microcontrolador
Felipe Nascimento Martins
51. Sensores com Sinais Digitais
• Diversos sensores proveem informação através
de sinais digitais:
• Botão/bumper;
• Porta aberta/fechada;
• Andar de elevador;
• Fim-de-curso em máquinas industriais;
• Equipamento ligado/desligado;
• Nível de reservatório;
• Presença;
• Toque;
• Etc.
Felipe Nascimento Martins
52. Sensores com Sinais Digitais
• Do ponto de vista elétrico, comportam-se como
se fossem uma chave liga/desliga;
• No Arduino, a função utilizada para leitura de sinais
digitais é digitalRead(pino); onde pino é o
número do pino em que o sensor está ligado;
• Para Vs = 5V, retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).
56. Sensores com Sinais Analógicos
• Diversos sensores proveem informação através
de sinais analógicos:
• Intensidade luminosa (LDR);
• Deslocamento (encoder);
• Força/Torque (SFR, strain gage);
• Proximidade;
• Aceleração;
• Inclinação;
• Temperatura;
• Etc.
Felipe Nascimento Martins
57. Exemplo: Medindo Temperatura
• Monte o circuito com o sensor de temperatura.
• Escreva um programa que mostre o valor da
temperatura na tela do computador a cada 0,5s.
Felipe Nascimento Martins
58. Exemplo: Medindo Temperatura
• Exemplo de programa:
void setup() {
Serial.begin(9600);
}
void loop() {
int sensor = analogRead(A0);
Serial.println(sensor);
delay(500);
}
Felipe Nascimento Martins
64. Exemplo: Velocidade Ajustável
int velocidade = 0;
int sensor; // valor do LDR
void setup() {
pinMode(A2, INPUT); // sensor
pinMode(13, OUTPUT); / saida 13
Serial.begin(9600);
}
void loop() {
sensor = analogRead(A2);
velocidade = map(sensor, 0, 1023, 0, 255);
analogWrite(13, velocidade);
delay(100);
}
Felipe Nascimento Martins
65. Motor Shield
• Exemplo: controle de velocidade dos motores
com o Shield Motor Control:
Felipe Nascimento Martins
66. • Pode acionar quatro
motores CC (46V, 4A) e
uma carga resistiva de até
30A.
Motor Shield 4 Power
Felipe Nascimento Martins
67. Arduino e NXT via RS-485 e I2C
Detalhes: http://nossosrobos.blogspot.com.br/2011/08/arduino-conversando-com-nxt-via-rs-485.html
http://nossosrobos.blogspot.com.br/2013/03/comunicacao-ic-entre-lego-nxt-e-arduino.html
Felipe Nascimento Martins