Construa um Tanque Laser Controlado por Leap Motion – Arduino, Raspberry Pi, LEDs RGB
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| LED Infravermelho | 1 |
| Receptor Infravermelho | 1 |
| Arduino UNO | 1 |
| Raspberry Pi 2 Model B | 1 |
| Módulo RF24 | 1 |
| LED RGB (Cátodo Comum) | 1 |
| CI Driver de Motor L293D | 1 |
| Protoboard (genérico) | 1 |
| Jumpers (genéricos) | 1 |
| Suporte de Bateria | 1 |
| Pilhas AA (NiMH Recarregáveis) | 4 |
| Peças Lego | 1 conjunto |
| Rodízio Esférico Metálico 3/8" | 1 |
| Controlador Leap Motion | 1 |
Sobre o Projeto
O objetivo deste projeto foi criar um conjunto de tanques robóticos para batalhas, onde os operadores tivessem uma sensação mais realista de controle dos veículos usando o controlador Leap Motion. Busquei tornar os tanques robóticos acessíveis, para que qualquer pessoa pudesse replicar o projeto facilmente.
A estrutura do tanque é feita com peças e placas Lego genéricas. A fonte de alimentação é um bloco simples de 4 pilhas AA recarregáveis. O controlador do tanque é um Arduino Uno R3. A "propulsão" consiste em dois motores DC simples com rodas na traseira e um único rodízio na frente, acionados por um único circuito integrado L293D. O "armamento" é um único LED infravermelho e a "blindagem" é um conjunto de sensores IR que detectam impactos do LED IR do tanque adversário. O "display de cabeça erguida" (HUD) é um único LED multicolorido que indica ações no tanque, incluindo o status da blindagem. Finalmente, o "controle" do tanque é feito sem fio via Raspberry Pi 2 rodando NodeJS, conectado através de um módulo sem fio RF24, do qual cada tanque também é equipado.
Usando as mãos do operador, o Leap Motion controla o tanque através do Leap Motion Javascript SDK. Ao detectar movimentos das mãos, o JavaScript comunica com o servidor NodeJS no Raspberry Pi 2, que por sua vez comunica com o tanque via módulo RF24. Ambas as mãos para frente: o tanque move para frente. Ambas para trás: move para trás. Mão esquerda para frente, direita para trás: vira à direita. Mão direita para frente, esquerda para trás: vira à esquerda. Ambas na posição "neutra": para o tanque. Uma mão para frente (esquerda ou direita) enquanto a outra é baixada: "dispara" a arma do tanque.

Aqui está uma demonstração rápida da arma, blindagem e HUD do tanque.
Usando a blindagem avançada omnidirecional e caixas de papelão como abrigo, o Laser Tanks torna-se um jogo de caça e evasão.
Passos de Configuração do Projeto
- Monte os tanques e faça a fiação usando os esquemáticos abaixo. Baixe as bibliotecas Arduino necessárias (veja README no repositório GitHub), compile e faça upload do sketch do tanque 1 para um tanque e do tanque 2 para o outro.
- Conecte o transceptor RF24 ao Raspberry Pi. Instale o Raspbian OS e Node.js no Pi.
- Baixe, configure e compile (veja README no GitHub) a biblioteca RF24 no Pi.
- Baixe o software do servidor NodeJS do site GitHub, configure e inicie o Servidor App/Web (veja README no GitHub).
- Instale o Leap Motion e drivers no seu computador. Abra um navegador e carregue a URL do servidor REST/Web do Raspberry Pi para carregar a página de controle do tanque 1 ou tanque 2.
- Clique no botão de calibração e posicione as mãos sobre o Leap Motion para que detecte duas mãos e conheça sua posição neutra. Após a calibração, você pode controlar o tanque com as mãos.
Nota Rápida sobre o Chassi do Tanque
O corpo dos tanques é montado com Legos simples que foram colados com "cola gorila" às peças (motores, protoboards, etc.) para ajudar a manter tudo unido. Abaixo, uma sequência de imagens mostra como foi feito.











Nota Rápida sobre LEDs Infravermelhos
Controles remotos infravermelhos são muito funcionais quando você quer mudar o canal da TV de qualquer lugar da sala. LEDs IR são feitos para emitir luz em tantas direções quanto possível para melhorar a cobertura. Mas, se você quiser controlar o feixe do LED para torná-lo mais estreito e assim mais difícil de atingir o sensor remoto (como em um jogo de batalha de tanques), é um pouco mais difícil. Em minha pesquisa, descobri que usando uma lente de lupa simples na extremidade de um tubo, você pode focar o feixe infravermelho. Aqui está um diagrama ilustrando:

Comprei uma lupa de bolso barata em uma farmácia, retirei a lente e construí um tubo ao redor dela, colocando o LED IR na outra extremidade. Isso funcionou perfeitamente para estreitar o feixe do LED IR e torná-lo mais preciso.
Nota Rápida sobre Sensores Infravermelhos de 360 Graus
Um sensor infravermelho detecta sinais de um LED IR quando este está diretamente à sua frente ou em cerca de 90 graus de foco. Se um LED IR estiver atrás do sensor, ele não detectará o sinal.

Para alcançar 360 graus de detecção, você precisaria modificar a biblioteca IR para detectar sinais em 4 pinos diferentes de 4 sensores diferentes, ou criar uma solução de hardware que permitisse encadear 4 sensores para reportar em um único pino. Encontrei artigos online mostrando como fazer isso com um simples circuito integrado AND (74HCT21) para conectar 4 sensores a um único pino de entrada. Quando qualquer sensor IR detecta um sinal, ele reporta naquele pino. Isso permitiu obter 360 graus de detecção sem modificar a biblioteca IR ou usar 4 pinos de entrada.

Código
Todo o código personalizado para o projeto Leap Motion Laser Tanks está disponível no GitHub:
https://github.com/corky/LaserTanks
Esquemáticos
Usando um LED infravermelho, o tanque dispara "códigos" que os outros tanques identificam como acertos.

Usando um único sensor infravermelho, o tanque detecta quando sinais IR vêm de tanques adversários e os registra como acertos.

Usando 4 sensores infravermelhos encadeados com um simples circuito integrado AND (74HCT21), um tanque identifica sinais IR de LEDs de tanques adversários como acertos de 360 graus ao redor dele.

Usando um LED RGB, o tanque identifica seu status atual (quantos acertos sofreu) mudando a cor do LED. Também muda a cor para verde a cada disparo.

Usando um CI L293D e motores DC simples, o tanque move para frente, trás e vira esquerda ou direita.

Usando um transceptor RF24 simples e barato, o tanque comunica e recebe comandos do operador.

Usando um Raspberry Pi 2, um transceptor RF24 simples e Node.js, o operador comunica com cada tanque via chamadas REST API.

Processo de manufatura
- Guia Especializado de Marcação a Laser em Alumínio: Precisão, Durabilidade e Aplicações Industriais
- Guia Completo de Marcação a Laser: Tipos, Benefícios e Aplicações
- Marcação a Laser por Fibra: Precisão, Velocidade e Versatilidade para Indústrias Modernas
- Ponteiro Laser: Design, Fabricação e Visão Geral de Segurança
- Lasers de Semicondutor: Geração de Luz de Precisão para Tecnologia Moderna
- Lasers de Estado Sólido: Tecnologia, Aplicações e Tendências Futuras
- Construa um Sensor de Movimento Infravermelho DIY para Raspberry Pi – Guia Passo a Passo
- Controle um LED com Sensor de Movimento PIR no Raspberry Pi
- Kit MOSMusic: MOSFET, Arduino e Mais - Iluminação Sincronizada com Música
- Componentes Principais de uma Máquina de Marcação a Laser: Entendendo Peças Centrais para Longevidade