Oficina de Robótica Página 2
O Laboratório de Garagem
O Laboratório de Garagem foi fundado em 2010 e tem como proposta ser uma iniciativa voltada para a integração, colaboração e apoio aos desenvolvedores independentes de ciência e tecnologia.
O Lab começou com uma rede social, destinada a inventores que gostavam de trocar ideias e opiniões sobre seus projetos, logo surgiu um laboratório compartilhado onde, os inventores se reuniam para dar "vida" as suas ideias. Conforme essas ideias foram surgindo veio a iniciativa Incubadora, onde elas poderiam se tornar um produto. Com tudo isso acontecendo surgiu a loja do Lab criada para sustentar e expandir o Laboratório de Garagem.
Hoje esta iniciativa conta com uma rede social, uma loja, uma incubadora e um grupo de pessoas que acredita que a revolução pode sair de qualquer ideia, de uma simples discussão em um grupo de amigos, ou de uma garagem qualquer.
Rede Social
Nossa rede social, oferece diversas ferramentas para interação e colaboração entre seus membros. Esta rede conta com mais de 27 mil usuários cadastrados, que apresentam e solucionam diversas duvidas, tanto na área de eletrônica quanto em outras. Além disso nós também postamos tutoriais no site, mostrando como usar e os tipos de aplicações de alguns produtos.
Loja Virtual
A nossa loja oferece peças, componentes, acessórios e um suporte para que garagistas de todo o Brasil possam dar vida ás suas ideias.
Incubadora
Índice
1. Apresentação ... 4
2. Funcionamento ... 5
3. Montagem ... 6
3.1. Faça as conexões dos motores e da alimentação no Dual Motor Garagino ... 7
3.2. Encaixe o Garagino no Dual Motor Garagino ... 7
3.3. Faça as ligações dos sensores e fixe-os na plataforma zumo ... 8
4. Programação ... 9
4.1. Leitura do Sensor ... 9
4.2. Controle dos motores ... 9
4.3. Sketch ... 9
4.4. Gravando o programa no Garagino ... ...11
5. Executando ... 11
5.1. Insira as pilhas no suporte da plataforma zumo ... 11
5.2. Ajuste os sensores ... 12
6. Referências ... 13
Oficina de Robótica Página 4
1. Apresentação
Nesta oficina você será introduzido ao mundo da robótica, onde você pode criar robôs autônomos utilizando sensores e lógica de programação, e nessa oficina montaremos um seguidor de linha. O robô seguidor de linha já se tornou um clássico na aprendizagem de robótica, sendo até um tipo de categoria em qualquer competição de robótica hoje em dia. Ele junta a interface de controles entre um robô e seus sensores e também o divertido desafio de montar e ajustar um robô que nunca saia da linha e complete todo o percurso.
2. Funcionamento
Figura 1- Emissor e receptor Infravermelho
Com um emissor e um receptor infravermelho é simples detectar a linha preta. O emissor emite a luz infravermelha e quando essa luz for refletida, o receptor irá receber a luz. Em nossa demonstração utilizamos uma cartolina branca e fita isolante, quando for refletida e recebida pelo receptor, nos indica que abaixo do nosso receptor tem uma superfície que reflete a luz, no nosso caso essa superfície será a cartolina branca. Quando o sensor estiver acima da fita isolante, por ela ser preta, não refletirá luz, então com isso podemos afirmar que está sendo detectada a linha preta. Ao detectar que o carrinho esta saindo da linha, acionamos os motores para que ele permaneça acima da linha.
Com essa montagem de emissor + receptor, estamos trabalhando com uma lógica binária, ou reflete luz, ou não reflete, ou seja, ou o sensor está acima da cartolina branca, ou o sensor está acima da linha preta. Na figura abaixo você pode ver o resumo da lógica utilizada para controlar o Zumo:
Figura 2 - Lógica utilizada para controlar o Zumo
Os micromotores são controlados pelo Dual Motor Garagino e ele permite que controlemos cada um dos motores individualmente.
Oficina de Robótica Página 6
3. Montagem
Imagem 1 - Robô Seguidor de Linha
Itens necessários: - Computador
- Garagino + Conversor USB/Serial - Dual Motor Garagino
- Plataforma robótica Zumo com Motores
- Sensores de Linha (Montagem Emissor + Receptor infravermelho) - 4 Pilhas AA
3.1. Faça as conexões dos motores e da alimentação no Dual Motor Garagino:
Imagem 2 - Conexão dos motores e alimentação
> Motor da Esquerda – M1 (Vermelho M1+ / Azul M1-) > Motor da Direita – M2 (Vermelho M2+ / Azul M2-) > Alimentação – (Vermelho + / Azul -)
3.2. Encaixe o Garagino no Dual Motor Garagino:
Oficina de Robótica Página 8
3.3. Faça as ligações dos sensores e fixe-os na plataforma zumo:
Imagem 4 - Conexão dos sensores
> 5V – Vermelho > GND - Preto
> A4 – Sensor da Esquerda (Amarelo) > A5 – Sensor da Direita (Amarelo)
Imagem 5 - Sensores fixados com fita dupla face
4. Programação
4.1. Leitura do Sensor
Para efetuar a leitura dos sensores de linha, basta utilizar o seguinte comando:
analogRead(Ax); - Sendo x um número de 0 a 5, que será determinado pelo o pino de leitura.
Quanto maior for o valor aferido pelo sensor, menor será a refletância, ou seja, quanto mais próximo de 1023, menos a luz está sendo refletida.
4.2. Controle dos motores
Para controlar os motores, primeiramente você deve incluir a biblioteca e criar uma instância da mesma como podemos ver no exemplo abaixo:
#include <DualMotor.h> //Inclui a biblioteca DualMotor.h DualMotor dualmotor; //Instância a DualMotor
As funções de controle dos motores são bem simples, veja a descrição de cada uma das funções abaixo: dualmotor.M1move(velocidade, sentido); //Aciona o motor 1, velocidade (0 a 255) e sentido (0 - Trás ou 1 - Frente)
dualmotor.M2move(velocidade, sentido); //Aciona o motor 2, velocidade (0 a 255) e sentido (0 - Trás ou 1 - Frente)
dualmotor.M1parar(); //Para o motor 1 dualmotor.M2parar(); //Para o motor 2
4.3. Sketch
O programa para o seguidor de linha pode ser encontrado abaixo, basta digitá-lo na interface da Arduino IDE:
#include <DualMotor.h> //Inclui a biblioteca
#define SENSOR_ESQ A4 //Define SENSOR_ESQ como A2
#define SENSOR_DIR A5 //Define SENSOR_DIR como A3 DualMotor.h DualMotor dualmotor; //Instancia a DualMotor
void setup() {
delay(5000); //Aguarda 5 segundos para iniciar o programa Serial.begin(9600);
Oficina de Robótica Página 10
}
void loop() {
if(analogRead(SENSOR_ESQ) < 700 && analogRead(SENSOR_DIR) < 700) //Senão se nenhuma luz for refletida para os sensores
{
//Move para Frente
dualmotor.M1move(255,1); //Motor 1 (Esquerda), gira para frente com velocidade total (255) dualmotor.M2move(255,1); //Motor 2 (Direita), gira para frente com velocidade total (255) Serial.println("Frente");
}
else if(analogRead(SENSOR_ESQ) < 700) //Senão se o sensor da Esquerda detectar a linha preta {
//Move para Esquerda
dualmotor.M1move(255,1); //Motor 1 (Esquerda), gira para trás com velocidade total (255) dualmotor.M2move(255,0); //Motor 2 (Direita), gira para frente com velocidade total (255) Serial.println("Direita");
}
else if(analogRead(SENSOR_DIR) < 700) //Senão se o sensor da Direita detectar a linha preta {
//Move para a Direita
dualmotor.M1move(255,0); //Motor 1 (Esquerda), gira para frente com velocidade total (255) dualmotor.M2move(255,1); //Motor 2 (Direita), gira para trás com velocidade total (255) Serial.println("Esquerda");
} else {
//Move para Trás com velocidade reduzida e aguarda 100 milissegundos
dualmotor.M1move(100,0); //Motor 1 (Esquerda), gira para trás com potência reduzida (100 ~ 39%) dualmotor.M2move(100,0); //Motor 2 (Direita), gira para trás com potência reduzida (100 ~ 39%) delay(100); //Aguarda 100 milissegundos
Serial.println("Tras"); }
4.4. Gravando o programa no Garagino
Após digitado o programa, para passar a programação para o Garagino basta conectar o Conversor USB/Serial e clicar em Upload no programa Arduino IDE:
Figura 3 – Programando o Garagino
5. Executando
5.1. Insira as pilhas no suporte da plataforma zumo:
Imagem 6 - Inserindo as pilhas
Depois de inserido as pilhas, você terá 5 segundos para posicionar o Zumo acima da linha da qual ele deverá seguir.
Oficina de Robótica Página 12
5.2. Ajuste os sensores:
Se o seu carrinho não conseguir permanecer na linha, tente ajustar a altura dos sensores. Outra possibilidade do mesmo não conseguir seguir a linha pode ser a distância entre eles, já que ela tem que ser um pouco maior que a espessura da linha: