Workshop iniciação à robótica - Farrusco
-
Upload
articacc-lda -
Category
Education
-
view
93 -
download
2
Transcript of Workshop iniciação à robótica - Farrusco
Iniciação à Robótica
Formadores:Guilherme Martins e André Almeida
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)
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
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
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
Motoruino 1
Baseado no layout original do Arduino
Interface para Motores DC
Power and Signal Bus
Iniciação à Robótica
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
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……...
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 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
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
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
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
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
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.
CPU Sensores Actuadores
Iniciação à Robótica
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
Componentes do Farrusco
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
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
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
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.
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.
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 basta enviar um email para:[email protected] http://artica.cc