Manual

do

Maker

.

com

Como fazer um robô com esteiras com Arduino

Como fazer um robô com esteiras com Arduino

O primeiro robô exemplificado em alguns posts não foi tão atrativo quanto poderia ser, considerando a falta de controle da velocidade do motor por conta de uma caixa de redução ordinária (do próprio brinquedo utilizado para a construção). Então decidi escrever um post sobre um robô com esteiras usando muito mais técnicas.

Um robô de esteira tem vantagens sobre robôs de roda; pode ultrapassar pequenos obstáculos com maior facilidade ou até transpor obstáculos que com um robô de rodas não seria possível. Esse robô utiliza uma caixa de redução com 2 motores. As esteiras também foram compradas em um kit - ambos vieram totalmente desmontados:

Os kits foram comprados na RoboCore, mas não havia a bandeja base e como só encontrei a um preço exorbitante, decidi improvisar. Tinha em casa uma prateleira que minha esposa comprou na C&C, feita de um plástico rígido. Eu arriscaria dizer que a prateleira foi projetada para esse kit da Tamiya e utilizada secundariamente como prateleira; é perfeita a medida!

Montagem da caixa de redução

O meu maior desespero foi ter que montar a caixa de redução de dois motores. Engrenagens, eixos, redução alternativa, buchas, parafusos...
... e esqueci - lubrificante para as engrenagens.

A altura da prateleira não era 'tão ideal' quanto eu afirmei, mas fiquei satisfeito por não ter montado a esteira linear como de um trator, então, para o eixo superior eu utilizei uma base de roteador wireless (estava em desuso mesmo). Ficou perfeito!

Do robô antigo, aproveitei a caixa de pilhas para fazer a alimentação dos motores, que possuem um consumo alto demais para serem alimentados pelos pinos do Arduino e assim consegui ter coragem de desmontá-lo.
O Arduino foi alocado em uma caixa de campainha. Arrisco dizer que fizeram a caixa para o Arduino e posteriormente utilizaram também para campainha. Ficou perfeito!

O controle dos motores será feito pelo CI L293D, descrito nesse post.

Basicamente, isso seria o robô. Mas a intenção é ir além e dar alguma funcionalidade real a ele. Inicialmente ele será controlado por infra-vermelho:

Pensei em uma aplicação; analisar dutos de ar condicionado (para tirar ninhos, por exemplo). Também, entrar em lugares pequenos para apanhar objetos que esteja fora do alcance das mãos - aí que entra essa garra:

Essa garra utiliza o servo-motor que já acoplei. Todos esses ítens foram comprados na RoboCore, ao final do post deixarei os links de cada ítem para facilitar sua compra. Além disso, a garra deverá além de apanhar o objeto, erguê-lo do chão. Outra coisa a considerar é um contra-peso. Se o objeto for pesado demais,fará o robô tombar para frente, então atrás ele possui um contra-peso que se desloca através de um servo-motor. Considerando isso, o Arduino deverá alimentar 3 servos; o de abrir e fechar a garra, o de erguer e baixá-la e o de contra-peso, na parte de trás do robô. Além disso, será necessário saber o tamanho do esforço para deslocar proporcionalmente o contra-peso. Para isso, utilizei o sensor de força de baixa precisão. Quanto aos servos, eles não serão acionados simultaneamente, portanto isso não exigirá mais alimentação externa.

Se o robô deve entrar em lugares apertados, certamente pode ter problemas com luminosidade. Então, um sistema de leds de alto brilho estará disposto em sua parte dianteira, inicialmente controlado por IR, posteriormente controlado pelo sensor de luminosidade TSL235R de forma automática.

O infra-vermelho utiliza essa biblioteca (link quebrado). Em outro post descreverei o mapeamento para controles e controle da TV pelo Arduino. Nesse post descreverei o básico para utilização do IR diretamente no código a seguir:

//bibliotecas utilizadas para o IR e para os motores

#include <MotorsController.h>
#include <IRremote.h>

//pinos reservados para os motores
int pinos[4] = {10,11,8,9};

//pino digital para o receptor IR
int RECV_PIN = 6;

//instancia do receptor IR
IRrecv irrecv(RECV_PIN);

//instancia do decoder
decode_results results;

//instancia do controlador de motores
MotorsController motores(2,pinos);

//inteiro para guardar o resultado do botao apertado
long int ordem;

void setup(){
  //inicializacao da variavel
  ordem = 0;

  //inicializacao da serial para analise
  Serial.begin(9600);

  //inicializacao do IR
  irrecv.enableIRIn(); 
}

void loop(){
   //Apenas 2 linhas para receber os valores
   if (irrecv.decode(&results)) {
    irrecv.resume(); // Receive the next value
    //copia do valor para a variavel ordem
    ordem = results.value;
    //    Serial.println(results.value);
  }
    //Uma linha para controle dos motores :-)
    motores.motorsAction(ordem);

    //Serial.println(ordem);
    delay(300);
}

Para a evolução desse projeto, na próxima fase o robô receberá um sensor de distância e uma câmera para poder controlá-lo em lugares que não seja possível enxergá-lo, como os citados dutos de ar condicionado. Também, será necessário colocar o robô a um módulo wireless e talvez seja controlado pelo controle do PS3, o que facilitaria muito o manuseio.

No próximo post relacionado farei o controle da garra, as luzes e o contra-peso, e disponibilizarei a biblioteca que criei para controlar os motores, para não extender o tempo sem posts. E convenhamos, por mais simples que pareçam os resultados, cada etapa dá um trabalho terrível!

Utilizei paquímetro, micro-refiladeira (Dremel), brocas, lixas, alicates, kit de chaves para os parafusos e mais N ferramentas que não vou exibí-las aqui para não transformar o post em um gibi.

Assim, ainda teremos em breve um ou dois posts sobre infra-vermelho, um ou mais sobre display 16x2 e assim que chegar dos 'istaites', controle de câmera com arduino (a câmera que também será utilizada no robô). Seguidamente a esses posts, iniciarei a automação residencial e comercial, controlando lâmpadas, ar-condicionado e afins.

O esquema de ligação até agora ficou assim (não tinha o desenho do infra-vermelho, utilizei um sensor de temperatura LM35 para exemplificar. Ai, minhas gambiarras).

O video de funcionamento do projeto versão 0.1.

Links para aquisição dos materiais:
Infra-vermelho
Garra robótica
Servo-motor
Mini-protoboard
Kit redução com 2 motores
kit de esteiras
Arduino UNO

Que venha mais diversão!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.