workshop iniciação à robótica - gyro

25
Iniciação à Robótica Formadores: André Almeida, Bruno Serras, Tarquínio Mota e Guilherme Martins

Upload: articacc-lda

Post on 13-Feb-2017

83 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Workshop iniciação à robótica - Gyro

Iniciação à Robótica

Formadores:André Almeida, Bruno Serras, Tarquínio Mota e Guilherme Martins

Page 2: Workshop iniciação à robótica - Gyro

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.

Page 3: Workshop iniciação à robótica - Gyro

Motoruino 2

Baseado no layout original do Arduino

Power and Signal Bus

Iniciação à Robótica

Page 4: Workshop iniciação à robótica - Gyro

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.

Page 5: Workshop iniciação à robótica - Gyro

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 + encoders2. Saída de potência (mosfet)3. Ligação USB4. Socket XBEE (wifi, bluetooth, radio)5. IMU (giroscópio, acelerómetro, bússola)6. Alimentação externa e carregador LIPO 1S7. Alimentação externa 6v a 12v8. Microfone9. Altifalante

10. Microcontrolador Principal (Arduino Leonardo)11. Microcontrolador Secundário (Arduino UNO)

12

3

4

5

6

7

8

9

10

11

Page 6: Workshop iniciação à robótica - Gyro

Motoruino 2

Iniciação à Robótica

2 microcontroladores, um Arduino UNO e um Arduino Leonardo.

Microcontrolador Principal - main uC1O 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 - uC2O 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.

Page 7: Workshop iniciação à robótica - Gyro

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 correcta2. Seleccionar a porta de comunicação

Vê o slide seguinte.

Page 8: Workshop iniciação à robótica - Gyro

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

Page 9: Workshop iniciação à robótica - Gyro

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

Page 10: Workshop iniciação à robótica - Gyro

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

Page 11: Workshop iniciação à robótica - Gyro

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.

Page 12: Workshop iniciação à robótica - Gyro

Sensores (Inputs)

Digitais Analógicos

0000111000

240246258263272280276270268259

https://learn.sparkfun.com/tutorials/switch-basics

Iniciação à Robótica

https://www.arduino.cc/en/Tutorial/AnalogReadSerial

Page 13: Workshop iniciação à robótica - Gyro

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

Page 14: Workshop iniciação à robótica - Gyro

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

Page 15: Workshop iniciação à robótica - Gyro

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

Page 16: Workshop 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

Page 17: Workshop 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.

Page 18: Workshop iniciação à robótica - Gyro

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

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

Page 19: Workshop iniciação à robótica - Gyro

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

Page 20: Workshop iniciação à robótica - Gyro

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

Page 21: Workshop iniciação à robótica - Gyro

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

Page 22: Workshop iniciação à robótica - Gyro

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

Page 23: Workshop iniciação à robótica - Gyro

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

Page 24: Workshop iniciação à robótica - Gyro

Outras referências:

Arduinohttp://arduino.cc

Lista de comandos e funções do Arduinohttps://www.arduino.cc/en/Reference/HomePage

Arduino programming Notebookhttp://playground.arduino.cc/uploads/Main/arduino_notebook_v1-1.pdf

Processing:http://processing.org

Fritzinghttp://fritzing.org

Iniciação à Robótica

Page 25: Workshop iniciação à robótica - Gyro

Obrigado!

Esta apresentação encontra-se em constante actualização.

Para questões e sugestões envia um email para:[email protected] http://artica.cc