• Welcome to LusoRobótica - Robótica em Português.
 

Smalluino - O teu primeiro robô V1.0

Started by TigPT, 04 de June de 2008, 01:36

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

TigPT

Muitos de vocês perguntam, "Como devo de começar na robótica, que irei eu comprar para começar a fazer uma coisa simples, sem estar por um lado a gastar muito dinheiro, mas por outro também não comprar coisa que depois me sejam completamente inúteis nos futuros robôs?"

Pois bem, para responder a essa questão resolvi fazer o Smalluino.



Guia passo-a-passo versão PDF

O Smalluino, é baseado no Arduino (dai o seu nome) e basicamente é o mínimo dos mínimos para se fazer algo que se pareça com um robô. Digo isto porque no fundo ele não é bem um robô, mas sim um autómato programável, visto que o smalluino não recebe inputs do mundo que o rodeia para poder tomar decisões, logo não é autónomo.

Contudo, este projecto faz uma boa iniciação do Arduino para a robótica, visto com este pequeno tutorial ficarem a saber controlar motores servos, fazer código no Arduino recorrendo a métodos para optimizar este, e ter um primeiro contacto com os dispositivos autónomos.

Uma das coisas mais importantes quando desenvolvemos robôs, é termos feito um plano, um desenho, algo que nos ajude a visualizar os possíveis problemas com que nos vamos deparar para podermos corrigi-los ou evita-los antes de surgirem.

Bem, passando ao Smalluino em si, este é composto por 4 componentes de que vão precisar em qualquer projecto de robótica:

1 x Microcontrolador (neste caso o Arduino)
1 x Suporte de Bateria (utilizamos 4 pilhas recarregáveis num suporte bastante comum)
2 x Motores (recorremos aos servos por serem bastante fáceis de utilizar, e úteis em qualquer projecto de robótica)
2 x Rodas (rodas acopladas aos motores que permitam que este se desloque)

Passamos então à montagem, fiz um vídeo explicativo, não tem muita informação, mas permite um maior contacto com a sequencia das coisas. Espero que gostem.



Os servo motores tem 3 fios, 2 de alimentação e um de sinal. Normalmente Vermelho, Preto e Branco, para positivo, negativo e sinal, respectivamente.

Assim, ligamos o Vermlho dos dois servos ao pino Vin (Voltage IN) que é a voltagem que vem directamente das alimentação exterior, neste caso as pilhas que fazem um total de cerca de 5 ~ 6V (atenção nunca ligar um servo a mais de 6V a menos que venha indicado no datasheet do mesmo que este suporta tensões superiores).

O pin branco de cada um dos servos foram ligados ao pin 10 e 11, estes pins porque permitem melhor utilização do sinal PWM do Arduino, como pode ser lido na documentação do mesmo em http://www.arduino.cc, permitindo assim que sejam programados individualmente para seguirem num dado sentido a uma velocidade.

Depois de tudo ligado, abrimos o compilador do Arduino e fizemos um simples código em C, este define os métodos que vão ser chamados no código inicial, e executaram a devida instrução.

O tempo de paragem dentro dos ciclos foi definido para 500ms, o que faz com que 2 ciclos sejam equivalentes a 1 segundo.

Se quisermos que o smalluino fique a andar 3 segundos em frente temos que chamar o método passando o parâmetro 6 (3s x 2 ( 500ms cada execução)).

Bem, só me resta desejar-vos um bom projecto, e que façam modificações no código para irem aprendendo a utiliza-lo.


Brevemente iremos agarrar no mesmo projecto e adicionar-lhe um sensor na parte frontal, foi por isso que deixamos a frente sem fios, para podermos depois colocar lá sensores de proximidade com obstáculos, e dando assim capacidade ao smalluino de se deslocar de modo autónomo, sendo ele próprio a tomar decisões de por onde seguir evitando assim os obstáculos que lhe vão surgindo pelo caminho.

Espero que tenham gostado, todos os comentários são bem-vindos.


Links para o material, sugiro que procurem o melhor preço noutras lojas, apenas deixo o link para que tenham por onde procurar.

Arduino na loja Sparkfun
Suporte de Bateria na loja Parallax
Servos na loja Parallax
Rodas na loja Parallax

Fica aproximadamente por 40€, como vêm, mais barato do que um jogo de computador.



EDIT (ricardo-reis):

Dado que é frequente haver duvidas em relação aos valores que definem os pontos de paragem dos servos e de rotação para cada um dos lados, posto aqui um código simples para que, antes de tentarem usar o código do TigPT no vosso smalluino, testem os vossos servos de forma a saber os valores que precisam para que tudo corra bem.


int motorEsq = 9;  // atenção ao valor dos pinos queestão a
int motorDrt = 10; // usar, se não for este, modifiquem no código!

void setup(){
  Serial.begin(9600);
}

void loop(){
  for (int i=0;i<=255; i++){
    analogWrite(motorEsq, i);   
    analogWrite(motorDrt, i);   
    Serial.print("A testar valor: ");
    Serial.println(i);
    delay(500);     
  }
}


convém que cliquem no botão da consola (no ide do arduino) para conseguirem ver os valores que estão a ser testados.

AngellS

continuamos à espera do novo tutorial  :lol:

Metallica Fan - Big Show At Rock In Rio, Lisbon 2008
---
Angell'S

TigPT

#2
Quote from: AngellScontinuamos à espera do novo tutorial  :lol:

para breve, para breve já chegaram os ultrasons a minha casa, é só aliviar um bocado a carga escolar que começo a pensar nele 

delphi

Olá,

Parabéns pelo projecto!

Estou agora a começar a "brincar" como o arduino e encontrei este projecto. Pretendo fazer umas coisas parecidas, mas tenho algumas dúvidas, e a primeira é: como coloco os servos a funcionar como motores? Visto que os servos apenas tem rotação de 180º?

Cumprimentos e bons projectos,
Ribeiro Santos
www.saborapalco.com - Companhia de Teatro Amador
www.megavaquinha.com - Uma mega aposta no euromilhões de um grupo de mega amigos

TigPT

olá, bem-vindo ao LR, podes adquirir servos de rotação continua, ou então abrir um servo normal, e retirar o potenciometro que se encontra no interior deste, trocando por 2 resistencias, imaginando que o potenciomentro tem as patas A, B e C, colocas 2 resistencias de baixo valor iguais, uma entre A e B, e a outra entre B e C.

Espero ter-te dado uma ideia, mais tarde colocarei um tutorial de como o fazer!

saga

Viva... há que retirar também o batente mecanico, tal como neste tutorial (fig.7) http://www.estp.edu.pt/CampRobots2007/P ... icar_2.pdf .

TigPT


AngellS

ouve-se ai falar num possivel tutorial 2 :)

a todos os que leram este tutorial um obrigado.. esperamos que o próximo seja tão bom ou melhor :D

Abraço a todos

Metallica Fan - Big Show At Rock In Rio, Lisbon 2008
---
Angell'S

TigPT

É verdade, o V2.0 está em desenvolvimento, e o projecto deve de estar pronto a ser publicado brevemente... para ficar um cheirinho, utiliza um sensor de ultra-sons para evitar objectos.  ;)

Fifas

o problema dos ultra-sons é o preço....

se calhar vou construir um smalluino tambem....nao para ser o meu 1º robo (que ja fiz alguns) mas sim para me iniciar no arduino e tambem por aqui possiveis evoluçoes para o mesmo :D

TigPT

fazes bem, eu estou de férias, mas volto dia 3, e depois disso já devo de fazer algumas coisas  :D

and

comprei um sensor de infra vermelhos para melhorar o robo.
abracos

TigPT

Fizeste bem.

Não tenho tido muito tempo para o smalluino, mas a ver se lhe dedico um bocado para fazer uns updates.

Se tiveres dificuldades em implementar os infravermelhos, ou quiseres partilhar o código connosco para os outros utilizadores poderem aprender e discutirmos o código juntos, estás à vontade de fazer um post.  :D

Boas melhorias,

and

bem eu nao sou bom em programação mas tenho a certeza que eu vou precisar de ajuda.
abrigado por tudo.

TigPT

estou agora a fazer umas experiências com uns leds para fazer deles sensores de luz, para assim fazer o smalluino seguir uma luz como por exemplo uma lanterna, a um custo muito reduzido, pois os leds são bem baratos, e podem ser abusados para se tornarem sensores.