workshop iniciação à robótica - gyro
TRANSCRIPT
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 + 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
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.
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.
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
0000111000
240246258263272280276270268259
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
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.
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 *) ¢erAmbient);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:
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
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