O Labirinto com Arduino é um jogo de equilíbrio que foi desenvolvido com o objetivo de atravessar uma trajetória única com diversos obstáculos até o objetivo final, com um caminho de labirinto simplificado a maior dificuldade está no ato de escapar das armadilhas do caminho.
O princípio do jogo baseia-se no fato de tentar mover a bolinha através do labirinto sem cair nos buracos superficiais, os quais irão reter a bolinha e resultará no fim do jogo, sendo necessário reiniciar no início do percurso.
Constituído de dois motores de passo para a movimentação das bases do Labirinto e um Arduino para auxiliar, os comandos são realizados através de um Joystick que constitui um controle externo.
Para entendermos um projeto precisamos saber como ele é feito, quais materiais os constituem e quais as suas devidas funções. Entender o funcionamento de um projeto nos possibilita resolver qualquer problema que possa ser encontrado durante o seu desenvolvimento.
Motor de Passo 28BYJ-48 + Driver ULN2003
Os motores de passo são produtos bastante conhecidos devido a sua alta capacidade de controle de posição, são motores sem escova que dividem a rotação completa em um número de “etapas” iguais.
Normalmente são encontrados em impressoras de mesa e 3D, fresadoras CNC e qualquer outro equipamentos que exija o posicionamento preciso de seus dispositivos.
Motor de Passo 28BYJ-48
O Motor de Passo 28BYJ-48 é um motor unipolar de 5 fios que funciona com uma alimentação de 5V e possui correntes suficientes para ser utilizado diretamente no Arduino sem problema, porém possui uma corrente próxima ao limite deste microcontrolador.
Este modelo se disseminou bastante nas ultimas décadas, tanto que podemos observá-lo em diversos equipamentos do nosso cotidiano como alguns modelos de ar condicionado para o controle das aletas de fluxo do ar.
Para o seu tamanho, é um modelo que apresenta um bom torque mesmo parado, uma vez que mantem a sua alimentação ao sistema de posicionamento e impossibilita a movimentação involuntária. Sua alimentação constante é vista de forma negativa uma vez que permanece consumindo energia sempre que ligado, mesmo em repouso.
Módulo Driver ULN2003
Normalmente, o Motor 28BYJ-48 é comercializado junto do Módulo Driver ULN2003, um dos CIs mais comuns para o controle de motores e que pode ser conectado diretamente ao motor para assegurar o seu funcionamento.
A placa possui além da conexão direta para o motor quatro pinos para o controle de posição e quatro LEDs interligados aos mesmos e que garantem uma visualização externa ao funcionamento das bobinas.
O sistema de alimentação deste módulo, é realizado através de dois fios posicionados logo abaixo do Circuito Integrado e ao lado um jumper ON/OFF para realizar o isolamento da energia do motor de passo.
Joystick KY023
Este modelo de Joystick é muito semelhante aos que encontramos em controles de videogames como o PS2 da empresa PlayStation. Por ser um controle de mola autocentrante, ou seja, sempre que deslocado, sempre volta ao seu ponto de origem central.
O objetivo fundamental do Joystick é comunicar o movimento 2D de seus dois eixos a um Arduino. O seu sistema de funcionamento baseia-se na variação resistiva de um potenciômetro de 10K por eixo.
Produtos Utilizados no Labirinto com Arduino
Abaixo seguem todos produtos utilizados no desenvolvimento do projeto, os quais pode ser adquiridos de forma avulsa conforma listagem. Se você quiser, pode adquirir a versão do Jogo do Labirinto com Arduino DIY JLA100 Completo, o qual já possui todas as peças necessárias para montagem.
1 Placa Uno R3 + Cabo USB para Arduino;
1 Labirinto em MDF com Arduino + Case para Joystick;
2 Motor de Passo 28BYJ-48 + Driver ULN2003;
1 Joystick Arduino KY023 3 Eixos;
1 Módulo Extensor de Alimentação;
12 Jumper Premium para Protoboard Macho-Fêmea 20 cm;
6 Jumper Premium para Protoboard Fêmea-Fêmea 20 cm;
11 Parafuso Philips M3 x 8mm Metálico.
Demonstração de Funcionamento
Veja através do vídeo abaixo, maiores detalhes quanto ao funcionamento do labirinto e uma visão completa do produto devidamente montado com seus componentes.
Esquema de Ligação do Labirinto com Arduino
O esquema de ligação do Labirinto com Buraco é extremamente simples, os motores de passo são conectados de forma continuada nos pinos do Arduino e alimentados através de uma fonte externa para não exceder a corrente limite do microcontrolador.
Mesmo que já tenhamos dito anteriormente que o Motor de Passo pode ser utilizado diretamente no Arduino, ao utilizarmos duas unidades simultaneamente, a corrente resultante será superior ao limite do microcontrolador.
Para utilizarmos a mesma alimentação tanto para os motores quanto para o Arduino, utilizamos uma fonte de alimentação de 5V 1A. O joystick por sua vez também utilizará da mesma alimentação e seus pinos de comunicação serão conectados aos pinos analógicos, lembrando que o seu funcionamento é semelhante ao de um potenciômetro.
Para a alimentação, utilizamos um exclusivo Módulo Extensor de Portas de Alimentação, o qual possui um conector Jack P4 e amplia o número de pinos positivos e negativos para 10 cada.
O esquema de ligação do Labirinto com Buraco pode parecer um pouco mais exagerado quando montado na lateral do produto, por isto é recomendada a utilização de abraçadeiras para a melhor organização.
Para auxiliar no manuseio do Joystick e na experiência de uso do Labirinto com Arduino, o kit em MDF acompanha um case para alojamento do módulo responsável pelos movimentos das bases X e Y, veja abaixo uma imagem deste case já instalado no projeto:
Com o projeto montado chega a hora de carregarmos o código e fazermos o projeto realmente funcionar.
Código de Funcionamento do Labirinto com Buraco
Assim como o esquema de ligação, o código de funcionamento deste projeto é extremamente simples, utilizando apenas a biblioteca Stepper.h já inclusa nas bibliotecas originais do software Arduino.
Abaixo temos o código completo e comentado para auxiliar no desenvolvimento do projeto, veja:
[crayon-674267d007280645055681/]
Como o Joystick possui uma faixa de leitura de 0 a 1023, parâmetros padrões da comunicação analógica, utilizamos uma variação fixa no projeto para determinar que sempre que atingido movimenta o motor de passo, veja:
[crayon-674267d00728b615967760/]
Se o valor do Joystick no Eixo X for maior que 800, o motor de passo executa 65 passos no sentido positivo a uma velocidade de 5000 e mantem seu movimento e leitura a cada 5 milissegundos (0,005 segundos).
A princípio, todas estas variáveis citadas acima podem ser alteradas, ao diminuirmos o valor da velocidade, por exemplo, o motor irá demorar mais para realizar os seus movimentos e ao diminuirmos o número de passos diminuiremos a sensibilidade dos movimentos.
Montagem do Labirinto com Arduino em MDF
A montagem do Labirinto com Arduino é bastante simples, porém devido a constante movimentação das peças, é recomendada a colagem de cada uma destas através de uma cola instantânea.
Iniciamos o processo de montagem através da base de apoio que irá sustentar todo o projeto, incluindo Arduino, Módulos, Motores e bases de articulação, veja:
Nesta fase acima, vale ressaltar a importância de alinhar os furos de fixação do Motor de Passo (furo maior com dois furos laterais) e o furo de sustento e suporte na placa oposta assim como demonstrado pelas flechas vermelhas.
No local indicado com o furo maior, iremos instalar um dos Motores de Passo 28BYJ-48 de maneira que ele fique acomodado de maneira que seu eixo fique posicionado para o lado de dentro da estrutura.
A fixação do motor será feita através de dois parafusos M3 de 8mm postos de dentro para fora e fixados através de duas porcas assim como na imagem abaixo, veja:
Após fixado o motor, posicionamos o espaçador de MDF apresentado a esquerda, um elemento de suporte ao deslocamento da base giratória, ele fica solto e não apresenta uma fixação direta, funciona apenas como um elemento de suporte.
Com os passos acima em ordem, chegou a hora de instalarmos a primeira base giratória, a responsável pelos movimentos do eixo x do Módulo Joystick e que possui dois elementos básicos de fixação.
A esquerda, podemos observar o Motor de Passo fixado no furo achatado da base e a direita, podemos observar a inclusão de outro espaçador fixado por um parafuso M3 de 8mm na base giratória, a qual possui rosca para sua instalação.
Fundamentalmente o mesmo procedimento será realizado para a base do labirinto responsável pelos movimentos no eixo Y. O processo de instalação do Motor de Passo será o mesmo, assim como a instalação do parafuso e espaçadores.
Após instalado o motor, está na hora de instalar a base do labirinto que executará os movimentos do eixo Y do Joystick, do mesmo modo que na base do eixo X, um dos lados vai conectado diretamente no motor de passo e outra utiliza-se de um parafuso M3 de 8mm.
Após termos realizado os passos acima, o nosso labirinto estará devidamente montado, vale ressaltar que o trilho do labirinto deve ser posicionado sobre a base com os furos e colado também com cola instantânea, o resultado final é o seguinte:
Após, basta incluir os demais elementos necessários para o desenvolvimento do projeto como Arduino, Joystick e módulo de Alimentação. A montagem não é difícil, basta ficar de olho nas furações e nos locais de instalação elencados nos passos acima.
Conclusão
O Labirinto com Arduino é um exclusivo jogo para treinar a coordenação e a estratégia para escaparmos das diversas armadilhas que encontramos durante o trajeto até a chegada.
Este projeto é divertido e nos proporciona diversas possibilidades, como a possibilidade de incluir mais um joystick para o controle de velocidade, por exemplo, trocar os joysticks por um acelerômetro e até mesmo modelos diferenciados de joystick disponível.
Durante o desenvolvimento do projeto, os testes foram executados inicialmente com dois trimpots, porém a estabilidade dos movimentos não era garantida uma vez que a resistência variava mesmo com os controles parados. Por este motivo alterou-se o controle para um joystick, uma vez que este possui um ponto zero e possibilita utilização de valores fixos.
O Labirinto Arduino é um jogo que garante a diversão de uma maneira diferenciada e também um ambiente de aprendizagem em programação que poderá ser utilizado com amigos e família.
Não esqueça de deixar o seu comentário através dos comentários abaixo, compartilhe as suas experiências, dúvidas e também possíveis melhorias desenvolvidas no projeto.