Iniciação à Robótica
Formadores:
André Almeida, Bruno Serras, Tarquínio Mota e Guilherme Martins
O que é o Arduino?
Iniciação à Robótica
Plataforma de computação física open-source baseada em Hardware e
Software simples de utilizar.
Adoptado massivamente nos meios académicos, científicos e hobbyistas.
Assume diversas formas, desde dimensões muito reduzidas a comandos,
robots, adaptações para texteis, entre muitas outras.
Placas de expansão, também conhecidas como “shields” que servem de
interface a diversos sensores e actuadores.
Motoruino 2
Baseado no layout original do Arduino
Power and Signal Bus
Iniciação à Robótica
Motoruino 2
Iniciação à Robótica
Ligações
Ao lado dos pins do Arduino, podemos observar que
se entram 3 filas adiccionais.
A Verde temos pins macho que são partilhados com
os pins femea do arduino.
A Vermelho existe uma fila de 5v, onde está
assinalado a roxo quer dizer que são pins com PWM.
Este pin de alimentação pode ser comutado entre 5v
ou a voltagem que vem do exterior Vin.
Esta comutação é feita através do PWM selector.
O mesmo acontece no Motor Pwr Selector, este
comuta a alimentação dos motores entre 5v e Vin.
Motoruino 2
Iniciação à Robótica
O Motoruino 2 está equipado com alguns sensores e
actuadores tal como a imagem ilustra.
1. Interface para 2 motores DC + encoders
2. Saída de potência (mosfet)
3. Ligação USB
4. Socket XBEE (wifi, bluetooth, radio)
5. IMU (giroscópio, acelerómetro, bússola)
6. Alimentação externa e carregador LIPO 1S
7. Alimentação externa 6v a 12v
8. Microfone
9. Altifalante
10. Microcontrolador Principal (Arduino Leonardo)
11. Microcontrolador Secundário (Arduino UNO)
1
2
3
4
5
6
7
8
9
10
11
Motoruino 2
Iniciação à Robótica
2 microcontroladores, um Arduino UNO e um Arduino
Leonardo.
Microcontrolador Principal - main uC1
O Arduino Leonardo é o microcontrolador ao qual o
utilizador acede quando liga o cabo USB. Este
microcontrolador encontra-se completamente disponível
e tem o layout original do Arduino para poder suportar
shields.
Microcontrolador Secondário - uC2
O Arduino UNO encontra-se abstraido do utilizador, este
µC está dedicado a processar informação do
Acelerómetro, Giroscópio, encoders dos motores e actua
também directamente sobre estes. Vamos ver mais à
frente como aceder a estes dispositivos.
Arduino IDE
O IDE do Arduino é bastante simples.
Iniciação à Robótica
Image source: learn.sparkfun.com
Antes de enviarmos o nosso programa para o Arduino
precisamos de fazer 2 coisas:
1. Seleccionar a placa correcta
2. Seleccionar a porta de comunicação
Vê o slide seguinte.
Arduino IDE
Iniciação à Robótica
Como estamos a utilizar o Motoruino2, vamos ter que
seleccionar o Arduino Leonardo
Em Windows as portas de comunicação aparecem com o
nome COM seguido de um número.
Em MAC as portas de comunicação aparecem com a
designação /dev/tty/usbmodem……...
Programação em Arduino
A programação em Arduino baseia-se em linguagem C.
Todos os programas do Arduino têm duas funções distintas,
setup() e loop().
A função setup() corre apenas uma vez, esta serve para declarar
se os dispositivos que estão ligados são INPUTS ou OUTPUTS,
serve também para declarar outros eventos pontuais e que só
necessitam de se fazer uma única vez..
A função loop() corre infinitamente, e é aqui que vai estar o
programa.
Iniciação à Robótica
Motoruino 2
Hello World - Led Blink
Todos os Arduinos têm um LED ligado
fisicamente ao pin 13.
Além deste LED ser utilizado frequentemente
para Debug, serve também para os iniciantes
experimentarem os primeiros comandos do
Arduino:
pinMode (nº do pin, OUTPUT);
O comando pinMode() é utilizado dentro da
função setup(), serve para dizermos ao Arduino
se os pins (onde estão ligados dispositivos) são
entradas ou saídas de voltagem.
digitalWrite(nº do pin, HIGH);
digitalWrite(nº do pin, LOW);
O comando digitalWrite() activa o pin
correspondente se tiver o parâmetro HIGH, ou
desactiva o mesmo se tiver o parâmetro a LOW
.
Iniciação à Robótica
Actuadores (Outputs)
Digitais Analógicos
Iniciação à Robótica
https://www.arduino.cc/en/Tutorial/PWM
Controlar um actuador digitalmente significa que
só temos dois estados, ligado ou desligado.
Um LED ou um Motor podem ser controlados
analógicamente. Apesar de o Arduino não ter a capacidade de
gerar um sinal analógico puro, tem a capacidade de emular
uma saída analógica utilizando PWM.
Sensores (Inputs)
Digitais Analógicos
0
0
0
0
1
1
1
0
0
0
240
246
258
263
272
280
276
270
268
259
https://learn.sparkfun.com/tutorials/switch-basics
Iniciação à Robótica
https://www.arduino.cc/en/Tutorial/AnalogReadSerial
Sensores (Inputs)Iniciação à Robótica
Sensores Analógicos
Retornam um valor entre 0 e 1023.
Repara que dentro da função setup()
está o comando
Serial.begin(9600);
Isto faz com que seja aberta a
comunicação com o computador.
Depois de ter feito upload para o
Arduino, experimenta abrir o Terminal,
que se encontra no canto superior
direito do IDE.
https://www.arduino.cc/en/Tutorial/AnalogInput
LDR (resistência fotosensível)
Sensor IR medidor de proximidade
Potenciómetro
Gyro
SENSORES
. Sensores de distância esquerdo e direito
. Gyroscópio e Acelerómetro
. Sensores de Linha
. Sensor RGB
. Microfone
. Odometria (Motor Encoders)
ACTUADORES
. Leds RGB
. Motores DC
. Buzzer
INTERFACES
. Bateria de Li-Po integrada
. Micro USB para programar e carregar bateria
. Carregador integrado (por USB carga lenta ou Alimentação Externa carga
rápida)
. Módulo Bluetooth (“Communications Module”, pode posteriormente ser
trocado por WIFI, RF ou outro com o formato XBee)
Iniciação à Robótica
Differential Drive
Um sistema robótico diferencial consiste em duas rodas motrizes
com dois motores independentes.
A sua locomoção baseia-se na acção de cada um dos motores,
que em conjunto lhe proporcionam um amplo leque de
possibilidades.
Iniciação à Robótica
Gyro
Sensores
Para além de Acelerómetro, Giroscópio e Microfone que estão
incluidos na placa Motoruino2, o Gyro tem mais sensores:
● 2 sensores frontais
Estes sensores podem medir distância, luminosidade, cor e gesto.
Iniciação à Robótica
Gyro
Sensores
Por baixo encontram-se 3 outros sensores. O central é igual aos de
cima, este estando virado para baixo serve para o seguimento de
linha e detectar cores. Os dois laterais são sensores de linha.
● 3 sensores de linha
● 1 sensor RGB
Iniciação à Robótica
Gyro
A seguinte modificação consiste em passar os sensores frontais
para baixo aumentando assim a resolução no seguimento de linha.
PCB Bumper
A PCB Bumper tem um Arduino Uno, que comunica através de SPI
com o Motoruino2.
Nesta PCB estão ligados os sensores frontais e de linha.
Iniciação à Robótica
Gyro
Nota que a PCB Bumper está ligada ao Motoruino2
através das seguintes ligações.
O cabo da esquerda, está ligado ao Motoruino2 através
das ligações GND, 5v, 3v3 e rst.
O cabo da direita está ligado ao GND, ,sda e scl.
Gyro
Bibliotecas necessárias para usar o Gyro.
Descarregar o ZIP e colocar os conteúdos do mesmo dentro da pasta ‘libraries’ que se encontra dentro da pasta Arduino,
esta deverá estar localizada nos My Documents.
https://github.com/artica/gyro
Iniciação à Robótica
Gyro
Funções de actuação:
Actuar nos motores:
gyro.motoruino2.setSpeedPWM ( leftSpeed , rightSpeed ); // leftSpeed e rightSpeed recebe valores PWM, de 0 a 255
Andar determinada distância definindo a velocidade:
gyro.motoruino2.moveToDistance(100, 200) // distancia em mm, velocidade PWM
Rodar para determinado ângulo com a velocidade e rotação prédefinidos :
gyro.motoruino2.reachEncoderAngle(90 * PI / 180, -200, 200) // ângulo, velocidade e rotação do motor esquerdo e direito
Acender os LEDs brancos que se encontram baixo:
gyro.bumpers.setCenterLED(255); // controle do LED do sensor RGB que se encontra em baixo e ao centro do Gyro
Iniciação à Robótica
Gyro
Funções dos sensores:
Acelerómetro:
Serial.print(gyro.motoruino2.getAccelAvgX());
Serial.print(",");
Serial.print(gyro.motoruino2.getAccelAvgY());
Serial.print(",");
Serial.print(gyro.motoruino2.getAccelAvgZ());
Serial.print(",");
Giroscópio:
Serial.print(gyro.motoruino2.getGyroHeading());
Serial.print(",");
Serial.print(gyro.motoruino2.getGyroPitch());
Serial.print(",");
Serial.print(gyro.motoruino2.getGyroRoll());
Iniciação à Robótica
Gyro
Funções dos sensores:
Sensores de proximidade:
unsigned short leftProx, rightProx;
void loop(){
gyro.bumpers.getLeftProximity((unsigned short *) &leftProx);
Serial.print(leftProx); Serial.print('t');
gyro.bumpers.getRightProximity((unsigned short *) &rightProx);
Serial.print(rightProx); Serial.print('t');
}
Iniciação à Robótica
Gyro
Funções dos sensores:
Sensores de linha:
unsigned short leftLine, centerAmbient, rightLine;
void loop(){
gyro.bumpers.getLeftLine((unsigned short *) &leftLine);
Serial.print(leftLine); Serial.print('t');
gyro.bumpers.getCenterAmbient((unsigned short *) &centerAmbient);
Serial.print(centerAmbient); Serial.print('t');
gyro.bumpers.getRightLine((unsigned short *) &rightLine);
Serial.print(rightLine); Serial.print('t');
}
Iniciação à Robótica
Outras referências:
Arduino
http://arduino.cc
Lista de comandos e funções do Arduino
https://www.arduino.cc/en/Reference/HomePage
Arduino programming Notebook
http://playground.arduino.cc/uploads/Main/arduino_notebook_v1-1.pdf
Processing:
http://processing.org
Fritzing
http://fritzing.org
Iniciação à Robótica
Obrigado!
Esta apresentação encontra-se em constante actualização.
Para questões e sugestões envia um email para:
info@artica.cc http://artica.cc

Workshop iniciação à robótica - Gyro

  • 1.
    Iniciação à Robótica Formadores: AndréAlmeida, Bruno Serras, Tarquínio Mota e Guilherme Martins
  • 2.
    O que éo Arduino? Iniciação à Robótica Plataforma de computação física open-source baseada em Hardware e Software simples de utilizar. Adoptado massivamente nos meios académicos, científicos e hobbyistas. Assume diversas formas, desde dimensões muito reduzidas a comandos, robots, adaptações para texteis, entre muitas outras. Placas de expansão, também conhecidas como “shields” que servem de interface a diversos sensores e actuadores.
  • 3.
    Motoruino 2 Baseado nolayout original do Arduino Power and Signal Bus Iniciação à Robótica
  • 4.
    Motoruino 2 Iniciação àRobótica Ligações Ao lado dos pins do Arduino, podemos observar que se entram 3 filas adiccionais. A Verde temos pins macho que são partilhados com os pins femea do arduino. A Vermelho existe uma fila de 5v, onde está assinalado a roxo quer dizer que são pins com PWM. Este pin de alimentação pode ser comutado entre 5v ou a voltagem que vem do exterior Vin. Esta comutação é feita através do PWM selector. O mesmo acontece no Motor Pwr Selector, este comuta a alimentação dos motores entre 5v e Vin.
  • 5.
    Motoruino 2 Iniciação àRobótica O Motoruino 2 está equipado com alguns sensores e actuadores tal como a imagem ilustra. 1. Interface para 2 motores DC + encoders 2. Saída de potência (mosfet) 3. Ligação USB 4. Socket XBEE (wifi, bluetooth, radio) 5. IMU (giroscópio, acelerómetro, bússola) 6. Alimentação externa e carregador LIPO 1S 7. Alimentação externa 6v a 12v 8. Microfone 9. Altifalante 10. Microcontrolador Principal (Arduino Leonardo) 11. Microcontrolador Secundário (Arduino UNO) 1 2 3 4 5 6 7 8 9 10 11
  • 6.
    Motoruino 2 Iniciação àRobótica 2 microcontroladores, um Arduino UNO e um Arduino Leonardo. Microcontrolador Principal - main uC1 O Arduino Leonardo é o microcontrolador ao qual o utilizador acede quando liga o cabo USB. Este microcontrolador encontra-se completamente disponível e tem o layout original do Arduino para poder suportar shields. Microcontrolador Secondário - uC2 O Arduino UNO encontra-se abstraido do utilizador, este µC está dedicado a processar informação do Acelerómetro, Giroscópio, encoders dos motores e actua também directamente sobre estes. Vamos ver mais à frente como aceder a estes dispositivos.
  • 7.
    Arduino IDE O IDEdo Arduino é bastante simples. Iniciação à Robótica Image source: learn.sparkfun.com Antes de enviarmos o nosso programa para o Arduino precisamos de fazer 2 coisas: 1. Seleccionar a placa correcta 2. Seleccionar a porta de comunicação Vê o slide seguinte.
  • 8.
    Arduino IDE Iniciação àRobótica Como estamos a utilizar o Motoruino2, vamos ter que seleccionar o Arduino Leonardo Em Windows as portas de comunicação aparecem com o nome COM seguido de um número. Em MAC as portas de comunicação aparecem com a designação /dev/tty/usbmodem……...
  • 9.
    Programação em Arduino Aprogramação em Arduino baseia-se em linguagem C. Todos os programas do Arduino têm duas funções distintas, setup() e loop(). A função setup() corre apenas uma vez, esta serve para declarar se os dispositivos que estão ligados são INPUTS ou OUTPUTS, serve também para declarar outros eventos pontuais e que só necessitam de se fazer uma única vez.. A função loop() corre infinitamente, e é aqui que vai estar o programa. Iniciação à Robótica
  • 10.
    Motoruino 2 Hello World- Led Blink Todos os Arduinos têm um LED ligado fisicamente ao pin 13. Além deste LED ser utilizado frequentemente para Debug, serve também para os iniciantes experimentarem os primeiros comandos do Arduino: pinMode (nº do pin, OUTPUT); O comando pinMode() é utilizado dentro da função setup(), serve para dizermos ao Arduino se os pins (onde estão ligados dispositivos) são entradas ou saídas de voltagem. digitalWrite(nº do pin, HIGH); digitalWrite(nº do pin, LOW); O comando digitalWrite() activa o pin correspondente se tiver o parâmetro HIGH, ou desactiva o mesmo se tiver o parâmetro a LOW . Iniciação à Robótica
  • 11.
    Actuadores (Outputs) Digitais Analógicos Iniciaçãoà Robótica https://www.arduino.cc/en/Tutorial/PWM Controlar um actuador digitalmente significa que só temos dois estados, ligado ou desligado. Um LED ou um Motor podem ser controlados analógicamente. Apesar de o Arduino não ter a capacidade de gerar um sinal analógico puro, tem a capacidade de emular uma saída analógica utilizando PWM.
  • 12.
  • 13.
    Sensores (Inputs)Iniciação àRobótica Sensores Analógicos Retornam um valor entre 0 e 1023. Repara que dentro da função setup() está o comando Serial.begin(9600); Isto faz com que seja aberta a comunicação com o computador. Depois de ter feito upload para o Arduino, experimenta abrir o Terminal, que se encontra no canto superior direito do IDE. https://www.arduino.cc/en/Tutorial/AnalogInput LDR (resistência fotosensível) Sensor IR medidor de proximidade Potenciómetro
  • 14.
    Gyro SENSORES . Sensores dedistância esquerdo e direito . Gyroscópio e Acelerómetro . Sensores de Linha . Sensor RGB . Microfone . Odometria (Motor Encoders) ACTUADORES . Leds RGB . Motores DC . Buzzer INTERFACES . Bateria de Li-Po integrada . Micro USB para programar e carregar bateria . Carregador integrado (por USB carga lenta ou Alimentação Externa carga rápida) . Módulo Bluetooth (“Communications Module”, pode posteriormente ser trocado por WIFI, RF ou outro com o formato XBee) Iniciação à Robótica
  • 15.
    Differential Drive Um sistemarobótico diferencial consiste em duas rodas motrizes com dois motores independentes. A sua locomoção baseia-se na acção de cada um dos motores, que em conjunto lhe proporcionam um amplo leque de possibilidades. Iniciação à Robótica Gyro
  • 16.
    Sensores Para além deAcelerómetro, Giroscópio e Microfone que estão incluidos na placa Motoruino2, o Gyro tem mais sensores: ● 2 sensores frontais Estes sensores podem medir distância, luminosidade, cor e gesto. Iniciação à Robótica Gyro
  • 17.
    Sensores Por baixo encontram-se3 outros sensores. O central é igual aos de cima, este estando virado para baixo serve para o seguimento de linha e detectar cores. Os dois laterais são sensores de linha. ● 3 sensores de linha ● 1 sensor RGB Iniciação à Robótica Gyro A seguinte modificação consiste em passar os sensores frontais para baixo aumentando assim a resolução no seguimento de linha.
  • 18.
    PCB Bumper A PCBBumper tem um Arduino Uno, que comunica através de SPI com o Motoruino2. Nesta PCB estão ligados os sensores frontais e de linha. Iniciação à Robótica Gyro Nota que a PCB Bumper está ligada ao Motoruino2 através das seguintes ligações. O cabo da esquerda, está ligado ao Motoruino2 através das ligações GND, 5v, 3v3 e rst. O cabo da direita está ligado ao GND, ,sda e scl.
  • 19.
    Gyro Bibliotecas necessárias parausar o Gyro. Descarregar o ZIP e colocar os conteúdos do mesmo dentro da pasta ‘libraries’ que se encontra dentro da pasta Arduino, esta deverá estar localizada nos My Documents. https://github.com/artica/gyro Iniciação à Robótica
  • 20.
    Gyro Funções de actuação: Actuarnos motores: gyro.motoruino2.setSpeedPWM ( leftSpeed , rightSpeed ); // leftSpeed e rightSpeed recebe valores PWM, de 0 a 255 Andar determinada distância definindo a velocidade: gyro.motoruino2.moveToDistance(100, 200) // distancia em mm, velocidade PWM Rodar para determinado ângulo com a velocidade e rotação prédefinidos : gyro.motoruino2.reachEncoderAngle(90 * PI / 180, -200, 200) // ângulo, velocidade e rotação do motor esquerdo e direito Acender os LEDs brancos que se encontram baixo: gyro.bumpers.setCenterLED(255); // controle do LED do sensor RGB que se encontra em baixo e ao centro do Gyro Iniciação à Robótica
  • 21.
  • 22.
    Gyro Funções dos sensores: Sensoresde proximidade: unsigned short leftProx, rightProx; void loop(){ gyro.bumpers.getLeftProximity((unsigned short *) &leftProx); Serial.print(leftProx); Serial.print('t'); gyro.bumpers.getRightProximity((unsigned short *) &rightProx); Serial.print(rightProx); Serial.print('t'); } Iniciação à Robótica
  • 23.
    Gyro Funções dos sensores: Sensoresde linha: unsigned short leftLine, centerAmbient, rightLine; void loop(){ gyro.bumpers.getLeftLine((unsigned short *) &leftLine); Serial.print(leftLine); Serial.print('t'); gyro.bumpers.getCenterAmbient((unsigned short *) &centerAmbient); Serial.print(centerAmbient); Serial.print('t'); gyro.bumpers.getRightLine((unsigned short *) &rightLine); Serial.print(rightLine); Serial.print('t'); } Iniciação à Robótica
  • 24.
    Outras referências: Arduino http://arduino.cc Lista decomandos e funções do Arduino https://www.arduino.cc/en/Reference/HomePage Arduino programming Notebook http://playground.arduino.cc/uploads/Main/arduino_notebook_v1-1.pdf Processing: http://processing.org Fritzing http://fritzing.org Iniciação à Robótica
  • 25.
    Obrigado! Esta apresentação encontra-seem constante actualização. Para questões e sugestões envia um email para: info@artica.cc http://artica.cc