Een Leap Motion-gestuurde lasertank bouwen – Arduino, Raspberry Pi, RGB-leds
Onderdelen en benodigdheden
| Infrarood LED | 1 |
| Infrarood ontvanger | 1 |
| Arduino UNO | 1 |
| Raspberry Pi 2 Model B | 1 |
| RF24-module | 1 |
| RGB-led (common cathode) | 1 |
| L293D motorstuur-IC | 1 |
| Breadboard | 1 |
| Draadjes (jumper wires) | 1 |
| Batterijhouder | 1 |
| AA-batterijen (herlaadbare NiMH) | 1 |
| Lego-stenen | 1 |
| Balroller (3/8") | 1 |
| Leap Motion Controller | 1 |
Over dit project
Het doel van dit project was om een set robotische tanks te maken die tegen elkaar vechten, waarbij de operators een realistisch gevoel krijgen voor het besturen van de voertuigen via de Leap Motion-controller. Ik wilde de robot-tanks zo goedkoop mogelijk maken, zodat anderen het project gemakkelijk kunnen nabouwen.
De tank-kolom is gemaakt van gewone Lego-stenen en -platen. De voeding is een eenvoudig blok van 4 herlaadbare AA-batterijen. De controller is een Arduino Uno R3. De voortbeweging wordt verzorgd door twee DC-motoren met wielen achterin en een enkele caster voorin, aangedreven door één L293D IC. Het wapen is een enkele IR-led, de pantser bestaat uit IR-sensoren die treffers van de tegenstander detecteren. Het heads-up display is een enkele RGB-led die de status van de tank weergeeft (bijv. pantserstatus). De besturing verloopt draadloos via een Raspberry Pi 2 met Node.js, verbonden met een RF24-draadloze module die elke tank ook heeft.
Met de handen van de operator stuurt de Leap Motion de tank via de Leap Motion JavaScript SDK. De SDK detecteert handbewegingen, JavaScript communiceert met de Node.js-server op de Raspberry Pi, die op zijn beurt via de RF24-module met de tank communiceert. Beide handen vooruit: tank rijdt vooruit. Beide handen achteruit: tank rijdt achteruit. Linkerhand vooruit, rechterhand achteruit: tank draait rechts. Rechterhand vooruit, linkerhand achteruit: tank draait links. Beide handen in neutrale positie: tank stopt. Eén hand vooruit (links of rechts) terwijl de ander wordt neergehaald: tank vuurt zijn wapen.

Projectopzetstappen
- Monteer de tanks en wire ze volgens de schema's hieronder. Download de benodigde Arduino-bibliotheken (zie README in GitHub-repository), compileer en upload de Arduino-sketch voor tank1 naar de ene tank en tank2 naar de andere.
- Sluit de RF24-transceiver aan op de Raspberry Pi. Installeer Raspbian OS en Node.js op de Pi.
- Download, configureer en bouw de RF24-bibliotheek op de Pi (zie README in GitHub-repository).
- Download de Node.js-serversoftware van de GitHub-site, configureer en start de App Server/Webserver (zie README).
- Installeer de Leap Motion en drivers op je computer. Open een browser en laad de URL naar de Raspberry Pi REST/Webserver om de webpagina te laden (zie README) voor het besturen van tank 1 of tank 2.
- Klik op de kalibreerknop en houd je handen boven de Leap Motion zodat deze twee handen detecteert en je neutrale positie leert. Na kalibratie kun je de tank met je handen besturen.
Let op: tankchassis
De tanklichamen zijn samengesteld uit simpele Legostenen die met 'gorilla lijm' aan onderdelen (motoren, breadboards, etc.) zijn gelijmd om het geheel stevig te houden. Hieronder een diashow van de bouw:











Over infrarood LED's
Infrarood zenders zijn ontworpen om het licht in zoveel mogelijke richtingen te straalen voor brede dekking. Als je de bundel wilt vernauwen voor precisie (zoals in een tankgevecht), is dat lastiger. Door een eenvoudig vergrootglaslens aan het einde van een buis te plaatsen, kun je de infraroodbundel focussen. Hieronder een diagram:

Ik kocht een goedkope zakvergrootglas, haalde de lens eruit, bouwde er een buis omheen en plaatste de IR-led aan het andere uiteinde. Dit werkte perfect voor het vernauwen van de bundel.
Over 360-graden infraroodsensoren
Een infraroodsensor detecteert signalen van een IR-led die recht voor hem ligt (ongeveer 90 graden). Een led achter de sensor wordt niet gedetecteerd. Voor 360-graden detectie heb je vier sensoren nodig. Je kunt de infraroodbibliotheek aanpassen om vier pinnen te gebruiken, of een hardware-oplossing maken waarbij vier sensoren in serie op één pin worden aangesloten via een AND-poort (74HCT21). Wanneer een van de sensoren een IR-signaal detecteert, wordt dit op die pin gerapporteerd. Dit geeft 360-graden detectie zonder bibliotheekwijzigingen of extra pinnen.


Code
Alle aangepaste codebestanden voor het Leap Motion Laser Tanks-project vind je op GitHub:
https://github.com/corky/LaserTanks
Schema's
De schema's tonen de IR-led (wapen), IR-sensor (pantser), 4 sensoren met AND-poort voor 360° detectie, RGB-led (statusdisplay), L293D motorsturing, RF24-transceiver (draadloze communicatie) en Raspberry Pi 2 met Node.js (REST API voor operator).







Productieproces
- Expert Gids voor Aluminium Lasermarkering: Precisie, Duurzaamheid en Toepassingen
- Uitgebreide Gids voor Lasermarkering: Typen, Voordelen en Toepassingen
- Vezel Laser Markering: Precisie, Snelheid en Veelzijdigheid voor Moderne Industrieën
- Laser Pointer: Ontwerp, Productie en Veiligheidsoverzicht
- Semiconductor Lasers: Precieze Lichtgeneratie voor Moderne Technologie
- Solid State Lasers: Technologie, Toepassingen en Toekomsttrends
- Geïntegreerde Schakelingen (IC's): Compacte, Krachtige Chips die Moderne Elektronica Aandrijven
- Een DIY Infrarood Bewegingssensor Bouwen voor Raspberry Pi – Stapsgewijze Handleiding
- Een LED Besturen met een PIR-bewegingssensor op Raspberry Pi
- MOSMusic Project Kit: MOSFET, Arduino en meer
- Kerncomponenten van een laser marquering machine: begrijp de kernonderdelen voor levensduur