O pai de todos os robôs

Prova de conceito

A ideia de fazer este robô era para motivar alunos recém chegados o novo curso de robótica com Arduino, o qual irá até o final deste ano onde sou o professor.

Foi então em Março de 2012 que aproveitando a oportunidade, resolvi também aplicar algumas “provas de conceito”. Havia já comprado dois ou três mini servo motores de 9g, o SG90, e gostaria de testar sua aplicação em tração de robôs. No meio do processo, vi que tinha dois painéis solares, daqueles que geram 5v por 175mA (muita energia!) e ocupam um espaço/peso muito pequeno.

Resolvi juntar tudo, e fazer um robô que segue luz durante a noite, e durante o dia, sem precisar de pilhas ou baterias, ele se tornou um robô que segue o sol.

A construção

A ideia, e construção da parte física do robô durou um dia, isso mesmo, apenas um dia e logo você irá perceber porque. O desenvolvimento do programa para controle demorou mais outro dia (isso entre aprender a trabalhar com o servo, LDR e fazer todos os testes).

Acompanhe as imagens de desenvolvimento deste do robô abaixo:

Código fonte original

Simples, com muitas melhorias, mas funcional. Este é o primeiro código fonte, o original, gravado no pai de todos.

/*
  Programa para controle de carrinho seguidor de luz
  Paulo Marcos Trentin
  Data de inicio: 04-03-12
*/

#include <SoftwareServo.h>

// Define pinos dos sensores de luz
#define F_CEN 2
#define F_DIR 1
#define F_ESQ 0
#define T_DIR 2
#define T_ESQ 3

// Diretiva de preprocessador
#define LDR(pin) (analogRead(pin))

// Instancias servomotor
SoftwareServo servoDir;
SoftwareServo servoEsq;

int sensors[] = {F_ESQ, F_CEN, F_DIR, T_ESQ, T_DIR};

void setup()
{
  Serial.begin(9600);
  Serial.println("ok");

  servoDir.attach(2);
  servoEsq.attach(3);

}

void goFront(){
  servoDir.write(75);
  servoEsq.write(100);
}

void goLeft(){
  servoDir.write(70);
  servoEsq.write(70);
}

void goRight(){
  servoDir.write(100);
  servoEsq.write(100);
}

void loop()
{
  for (int i = 0; i < 5; i++){
    Serial.print(analogRead(sensors[i]));
    Serial.print(" ");
  }

  Serial.println();
  // Vai para frente
  goFront();
  // Verifica se deve seguir a esquerda
  if (LDR(F_ESQ) > LDR(F_CEN)){
    goLeft();
  }

  // Verifica se deve serguir a direita
  else if (LDR(F_DIR) > LDR(F_CEN)){
    goRight();
  }

  /*
  // Verifica se temos mais luz atras que na frente
  if (LDR(T_ESQ) > LDR(F_CEN) || LDR(T_DIR) > LDR(F_CEN)){
    if (LDR(T_DIR) > LDR(T_ESQ)) {
      goRight();
    }else{
      goLeft();
    }
  }*/

  // Aqui faz o servo funcionar
  delay(15);
  SoftwareServo::refresh();
}

Atualização em 10/03/2014 – O esquema elétrico

Respondendo ao pedido do Felipe Inagaki, fiz o esquema elétrico do robô mostrado acima. Assim fica mais fácil reproduzi-lo em casa. Vejam que as conexões são bastante simples!

Esquema completo do robô seguidor de luz com painel solar e chave seletora

Esquema completo do robô seguidor de luz com painel solar e chave seletora

Clique Filedownload Error: file 'http://www.paulotrentin.com.br/wp-content/uploads/2012/10/robo-seguidor-de-luz_bb.png' does not exist! para baixar a imagem original acima.

A mutação do código fonte

Nem eu e nem Isaac Asimov conseguimos prever o que veio pela frente. Por saber seguir a luz, este robô aprendeu a desviar da sombra! isso mesmo, testando no sol, o robô conseguia seguí-lo a ao aparecer uma parede com sombra, ele desviava da sombra numa maneira quase que instinta. O software sofrera sua primeira mutação!

Video do robô funcionando

Infelizmente não fiz nenhum video detalhado do funcionamento do robô, mas neste video pode-se ter uma ideia de como ele era. Obrigado professor Herculano, por gravar e fornecer o video!

O pai de todos, enfim, descansa em paz

Como tudo nessa vida tem um começo, meio (as vezes reprodução) e um fim, infelizmente nosso robô seguidor de luz morreu em meados de janeiro de 2012, já com sua missão aqui na terra cumprida. Acabou viajando muito para demonstrações (para alunos e amigos em outras escolas) e não resistiu tamanhas agitações. Hoje está em algum lugar muito feliz lá no céu, ensinando à baratas que a luz não é tão perigosa quanto imaginavam.

Seus órgãos funcionais foram doados para a criação de um novo robô, portanto além de inspirador o pai, foi também um saudável doador, cumprindo com seu dever robótico.

O que aprendi com esse histórico robozinho

Ele foi muito querido para mim, e o motivo de não ter tirado nenhuma foto do seu lado não foi falta de amor, e sim mais uma vez, descuido com sua memória. Por isso, aprendi novamente: sempre registre muito bem coisas legais que faz.

Ele me ensinou que perfurar um CD-ROM e passar uma presilha plástica pode não ser a melhor opção para segurar um mini servo motor. Que CDs não são exatamente a melhor base para um robô, mesmo sendo um CD do linux! Aprendi que cola quente não cola capacitores em CDs.

Mas o mais importante, aprendi que com criatividade e paciência, podemos gastar muito, muito pouco para construir um robô que segue luz e desvia da sombra.

A reprodução da espécie

Esse robô superou todas as expectativas que tinha para ele, pois simplesmente funcinou 100%! E mais, acabou servindo de inspiração para outros projetos de robôs, e um deles é o que vamos ver como foi construído aqui. Enfim, ele gerou muitos filhotinhos :)

Fiquei muito feliz com os elogios de amigos e alunos, com o encanto que ele gerou nas pessoas, elas até o acharam fofo! hehe.

O pai de todos então inspirou a geração de uma nova raça de robôs, mais forte e adaptada ao meio, a qual será contada no próximo capítulo desta história.

Comments

  1. Responder

  2. By Felipe Inagaki

    Responder

    • Responder

      • By Felipe Inagaki

        Responder

        • Responder

  3. By André Hackbarth

    Responder

  4. By reis

    Responder

  5. By Diego Farias Rodrigues

    Responder

  6. By Camila teixeira

    Responder

    • Responder

Deixe uma resposta para Roger Melo Rodrigues dos Santos Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *