Arduino – O Comboio Lego Inteligente

6 Comentários

Muito já foi escrito sobre as funcionalidades que o Arduino pode ter. Ao ler os artigos aqui publicados surgiu a ideia de criar este projecto. Colocar um comboio LEGO® a ser controlado por um Arduino, um trabalho desenvolvido pelo Tiago Santos do GroundZero Blog.

As várias etapas estão agora disponíveis para que possam replicar e até melhorar.

Já agora, ainda não tem um Arduino? Veja o nosso Kit.

imagem_comboio_lego00


Existem mil e um projectos que podem ser suportados com a plataforma Arduino, todos os dias aparecem novas ideias e hoje vamos deixar aqui, passo a passo, um projecto que, acima de tudo, proporcionou bons momentos de aprendizagem.

imagem_comboio_lego01

 

Arduino – O Comboio Lego Inteligente

O percurso do comboio é constituído por uma linha externa e uma linha interna com uma ligação entre as duas. O objectivo geral é o comboio realizar o percurso exterior uma vez e o interior duas.

Os objectivos específicos são:

  • O comboio tem que parar na estação sempre que lá passar;
  • Quando parte da estação tem que se ouvir um apito;
  • Assim que chega à ligação com a linha interior, o comboio é transferido para essa linha;
  • Quando efectuar as 2 voltas na linha interior é, novamente, transferido para a linha exterior.

 

imagem_comboio_lego03

 

Material utilizado:

  • 2 Pista e 1 comboio LEGO®,
  • 1 Arduino
  • 1 buzzer
  • 2 sensores de obstáculos
  • 1 servo
  • 2 LEDs IR

Para controlar o comboio na estação foi necessário usar dois LEDs de IR. Pelo alcance e ângulo deles, um controla a entrada do comboio na estação e o outro a saída. Para controlar a posição do comboio foram usados dois sensores de obstáculos. Um controla o número de voltas na linha interior, o outro controla a chegada à estação.

imagem_comboio_lego04

Uma das dificuldades encontrada foi o controlo do comboio, mas foi solucionada com o código disponibilizado pela LEGO® que permite interagir com as Power Functions, código disponível em aqui.

Aqui encontramos 4 funções para comunicar com o comboio “Extended Mode, Combo Direct Mode, Single Output Mode e Combo PWM Mode”.

Inicialmente foi utilizada a Combo PWM mas o comboio parava assim que perdia o sinal do LED. Este modo tem um timeout que, no momento que o receptor perde o sinal IR, desliga os motores. Foi colocada a dúvida na Comunidade 0937 ao que responderam que seria mais indicado utilizar a função Single Output que não tem timeout e o problema ficou solucionado.

imagem_comboio_lego05

 

Este foi o código usado

O que este código faz é:

No início são definidas as bibliotecas usadas. A biblioteca “Servo” permite o controlo do Servo de mudança de linha e a “legopowerfunctions” permite interagir com o sistema LEGO®.

A seguir são definidos os vários objectos de controlo e as diversas variáveis e os pinos associados.

  • irPin – Controla o número de voltas que o comboio executa
  • count – Armazena o número de voltas que o comboio executa.
  • stationPin – Controla a entrada do comboio na estação
  • buzzerPin – Controla o buzzer

Na estrutura “setup” é definida a velocidade de comunicação do Arduino com o PC, se os pinos das diversas variáveis são de entrada ou saída e qual o pino onde o servo está ligado.

Na estrutura “loop” são definidas duas estruturas “IF”. A primeira estrutura controla o número de voltas que o comboio executa na linha interior. Em cada passagem pelo sensor a variável é incrementada em 1. Criou-se um delay de 3000 ms pelo facto do comboio ter algumas carruagens e estas não activarem o sensor.

Na segunda estrutura “IF” é controlado o arranque da estação, mudanças de linha e paragem na estação. Inicialmente o comboio está parado na estação e parte daí. A primeira linha permite indicar ao comboio os dados de partida, em que “PWM” é modo de funcionamento, o “PWM_FWD5” é a direcção, normal, e a velocidade, 5, (a velocidade varia entre 1 e 7, quer em direcção normal, quer em inversa; existe também o modo para o comboio parar), o “RED” é a saída (pode ser RED ou BLUE) e o “CH1” é o canal de transmissão (pode variar entre 1 e 4). Combinando a saída com o canal é possivel controlar oito dispositivos LEGO® PowerFunctions diferentes.

Dentro desta estrutura existe uma estrutura “IF” que controla a entrada na estação. Caso o pino de controle da estação seja ativado, é indicado ao comboio que deve parar, o servo é rodado para os zero graus (de modo que o comboio troque de linha na próxima passagem) é criado um delay de 2000 ms para simular a paragem na estação. Ouve-se um sinal sonoro através do buzzer e de seguida o comboio arranca novamente em velocidade 5.

O “else” seguinte controla a passagem do comboio da linha interior novamente para a linha da estação. Depois de o comboio efectuar duas voltas na linha interior, o servo roda para os 90 graus de modo ao comboio trocar de linha.

Os sensores de obstáculos, por defeito, devolvem “1”. Caso exista um obstáculo devolve “0”.

O resultado final do projecto foi este:

Deixamos assim aberta a porta para que outros projectos possam também ser publicados e com isso mostrar a uma comunidade atenta e criativa o muito que se faz nesta estrutura.

Adira à comunidade Arduino no Facebook!

Comentários

6

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Pedro Fernandes
    Pedro Fernandes

    Epá! Só tenho pena a minha linha ferrea da lego seja a simples circular. Adorava fazer uma coisa destas.
    Bom artigo!

    1. Avatar de Rúben
      Rúben

      Boas noites,

      São Legos, logo, são como tu quiseres, no entanto, com uma apenas, só consegues a circular, caso compres 2, já não é bem assim, pois já tens peças suficientes para umas curvas e mais qualquer coisinha.

  2. Avatar de Joao Maria Sesifredo Pimentel
    Joao Maria Sesifredo Pimentel

    Muito Bom, muito interessante, parabens

  3. Avatar de JJ

    Eu só tenho pena, não saber mais de programação (neste caso para Arduino) e ter tempo, para aventurar-me mais na exploração deste mundo da robótica.

  4. Avatar de francisco
    francisco

    tenho dois arduinos cá em casa. um deles comprei um kit completo vindo da china, 40 euros pelo ebay (só a placa são 9euros), a única coisa menos boas foi as alfândegas, mas de resto chegou cá e fiz todos os toturiais,incluindo controlar visores lcd com joysticks (incluido no pack)…semáforos, controlando a velocidade de loops, até pensei adaptar um sensor de temperatura à fonte de alimentação do computador antes de esta explodir, pois os overclocks foram demasiado eheh…o maior e mais complexo projecto que tenciono fazer com arduino é uma máquina de cnc.

  5. Avatar de Fernando
    Fernando

    Gostei do artigo. É fantástico sermos crianças grandes. E juntamos o agradável ao útil quando somos obrigados a expandir conhecimentos de programação e eletrónica. 🙂