workshop iniciação à robótica - farrusco

25
Iniciação à Robótica Formadores: Guilherme Martins e André Almeida

Upload: articacc-lda

Post on 13-Feb-2017

93 views

Category:

Education


2 download

TRANSCRIPT

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

Iniciação à Robótica

Formadores:Guilherme Martins e André Almeida

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

Objectivos:

Iniciação à Robótica

Adquirir conhecimentos básicos em:

● Pensamento Algorítmico

● Resolução de Problemas

● Computação Física

● Linguagens de Programação

● Microcontroladores

● Electrónica

● Robótica

● Interacção Homem-Máquina (HCI, HRI)

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

O que é o Arduino?Plataforma de prototipagem 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 muitras outras.

Diversas placas de expansão, também conhecidas como “shields” que servem de interface a diversos sensores e actuadores.

Iniciação à Robótica

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

Motoruino 1

1

2

3 4 5

14

15

17

12

13

109

8

6

7

11

160

0123456789101112131415161718

Power selector - USB or EXTernal PowerFTDI USB connectionExternal power connectionsPWM pins power selector - VIN or +5vDigital IORx Tx LEDsLED 13Power LEDMicrocontroller Atmega 328+5v GND Vin pinsAnalog Inputs7805 voltage regulatorMotorB InputsMotorA InputsMotorB OutputsMotorA OutputsL293D Power Selector - VIN or +5vL293D Double H-Bridge Motor DriverReset Button

18

Iniciação à Robótica

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

Motoruino 1

PWM selector connects the power pin to VIN or +5v

Motor Power Selector connects the Motor Driver

(L293D) to Vin or +5v

Iniciação à Robótica

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

Motoruino 1

Baseado no layout original do Arduino

Interface para Motores DC

Power and Signal Bus

Iniciação à Robótica

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

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

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

Arduino IDE

Iniciação à Robótica

Como estamos a utilizar o Motoruino1, vamos ter que seleccionar o Arduino Duemilenova ou Diecimila

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 - Farrusco

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 - Farrusco

Motoruino 1Hello 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 - Farrusco

Motoruino 1

Sensores Digitais

Retornam 2 estados - 0 ou 1 - HIGH ou LOW

Exemplo:

● Botões● Sensores de colisão do Farrusco

https://www.arduino.cc/en/Tutorial/Buttonhttps://www.arduino.cc/en/Tutorial/InputPullupSerial

PullDownO sinal do botão quando não está pressionado é puxado para baixo, para o Ground.

Iniciação à Robótica

PullUpO sinal do botão quando não está pressionado o sinal é puxado para cima, ou seja para os 5v.

este vai ser o método utilizado no Farrusco

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

Motoruino 1

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

Iniciação à Robótica

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

Motoruino 1Motores DC (direct current)

O motor DC tem dois pólos, de maneira que precisamos sempre de usar dois pins no Arduino.

Activar ou desactivar estes pólos vai determinar a direcção de rotação do motor.

Controle digital do motor Controle analógico do motor

Esta maneira de controlar o motor requer dois pins digitais.

Esta maneira de controlar o motor requer dois pins PWM, como é o caso dos pins 3 e 5.

Iniciação à Robótica

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

Motoruino 1Motores DC (direct current)

Existe uma outra possibilidade de controlar um motor DC com o Motoruino, que consiste em utilizar dois pins digitais e o pin ENABLE da ponte H.

Com os pins digitais definimos a direcção de rotação do motor, neste caso estão a ser utilizados o 3 e o 4.

Com o pin Enable definimos a velocidade de rotação, para isto precisamos de o ligar a um pin PWM, neste caso está ligado ao pin 6.

Iniciação à Robótica

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

Motoruino 1

Servos

Motores de rotação limitada, normalmente 180º.

Utilizando a biblioteca Servo.h, podemos fazer rodar o servo para o ângulo desejado.

https://www.arduino.cc/en/Reference/Servo

#include <Servo.h>

Servo myservo;

void setup() { myservo.attach(10);}

void loop() { myservo.write(90);}

Iniciação à Robótica

NOTA: quando se importa a biblioteca Servo.h, os pins 9 e 10 ficam incapacitados de fazer PWM

Uma biblioteca é uma porção de código feito para abstrair a complexidade do programador. O programador só precisa de importar a biblioteca, instanciar a mesma e utilizar as funções disponíveis.

Page 16: Workshop iniciação à robótica - Farrusco

CPU Sensores Actuadores

Iniciação à Robótica

Page 17: Workshop iniciação à robótica - Farrusco

Roda Omnidireccional Chassis

IR sensorServo Motor

Sensores de Colisão

Motores DC Rodas

CPU Motoruino 1

Componentes do Farrusco

Sensores de Luminosidade

LED Multicor

Iniciação à Robótica

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

Componentes do Farrusco

Iniciação à Robótica

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

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

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

Navegação autónoma

Com sensores de colisão

Os sensores de colisão, representados a verde, sempre que detectam uma colisão despoletam uma acção no programa para o robô andar para trás e virar na direcção oposta da colisão.

Andar em frente

Há colisão?

Não. Volta a andar em frente.

Sim.Lado esquerdo ou direito?

Iniciação à Robótica

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

Navegação autónoma

Com sensor IR e Motor Servo

O motor Servo faz um varrimento num leque de 160º e a distância é analisada.

Se a distância for inferior a um valor estipulado, o robô vira para a direcção oposta para a qual o servo está a apontar.

A distância segura é representada pela transição da cor verde para a cor azul. Se um obstáculo se interpor na cor azul é despoletada mudança de direcção.

Iniciação à Robótica

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

Motoruino 12 Leds Blink

Então e se quizermos ter 2 LEDs a piscar individualmente?

Não podemos utilizar o delay(), pois este comando paraliza todo o programa. Até agora temos visto exemplos de programação que corre sequencialmente, isto impede de termos processos a correr em paralelo.

É aqui que entra a biblioteca Metrohttp://playground.arduino.cc/Code/Metro

Esta biblioteca permite definir vários temporizadores independentes, e sempre que um temporizador “chega ao fim” activa uma ordem, ou uma função.

// importamos a biblioteca utilizando o #include#include <Metro.h>

// no caso da biblioteca Metro instanciamos a mesma e declaramos // um valor para o temporizador

// o valor 500, significa que de 500 em 500 milisegundos, vai ser // executado um comando

Metro metro0 = Metro(500);

// esta condição verifica o temporizador, e sempre que este “dá a // volta” executa o comando que estiver dentro das chavetas

if (metro0.check() == 1) { // colocar o(s) comando(s) aqui}

Iniciação à Robótica

Desafio:Remover a função delay() dos programas desenvolvidos anteriormente.

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

Exemplos de programação

https://github.com/artica/Workshop-Farrusco

Iniciação à Robótica

No seguinte endereço do github é possível descarregar uma série de exemplos de programação destinados ao Farrusco.

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

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 - Farrusco

Obrigado!

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

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