Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

DIY Virtual Reality Skateboard

Componenten en benodigdheden

Arduino UNO
× 1
Android-apparaat
× 1
VR-headset Google Cardboard
× 1
Jumperdraden (algemeen)
× 1
GY-521 MPU-6050 3-assige gyroscoop + versnellingsmetermodule voor Arduino
× 1

Apps en online services

Google Cardboard VR SDK's

Over dit project

Dit is een heel leuk en eenvoudig project dat in ongeveer een uur kan worden gedaan. Aan de onderkant van het skateboard bevindt zich een accelerometer/gyro met een Arduino-bord dat de hoekbeweging van het bord via Bluetooth verzendt naar een klein VR-spel dat ik in Unity voor Android-telefoons heb gemaakt. Dus wanneer u uw Arduino inschakelt en de bluetooth verbinding maakt met uw telefoon, begint u vooruit te gaan. Leun naar links en je gaat naar links, leun naar rechts en je gaat naar rechts. Til de voorwielen op en je personage zal springen. Dit werkt alleen voor Android-telefoons en je telefoon moet compatibel zijn met Google Cardboard. Dus als je een oud skateboard hebt liggen, verander het dan in een virtual reality-snowboard. Dit is hoe:

Je hebt nodig:

Een virtual reality-headset in Google Cardboard-stijl.

Een skateboard.

4 tennisballen (om te voorkomen dat ze wegrollen)

Een Arduino Leonardo (of Uno)

Sommige jumperdraden

Een mini breadboard

Een HC-06 Bluetooth-module

Een MPU-6050 versnellingsmeter/gyro

Een 9V-batterij met batterijdoos die een aan/uit-schakelaar en een vatstekker heeft (om het Arduino-bord van stroom te voorzien)

Een soldeerbout en misschien een heet lijmpistool

De Android-app, Arduino-code en onderdelenlijst met links zijn hier te vinden:

http://wirebeings.com/virtual-reality-skateboard.html

Stap 1:Maak uw Arduino-apparaat/zender/invoer/ding

Monteer uw apparaat zoals weergegeven in de afbeelding hierboven.

U moet de header-pinnen op de MPU-6050 solderen, als uw soldeerbout nieuw is en de punt schoon is, kan dit in ongeveer 11 seconden worden gedaan. Als je soldeerboutpunt vies en oud is, wordt dit al snel het moeilijkste wat je ooit hebt gedaan (spreek uit ervaring).

Zorg ervoor dat de oriëntatie van alles precies is zoals weergegeven in de bovenstaande afbeeldingen, zodat u niet in de code hoeft te komen en niets hoeft te bewerken.

Bevestig alles PRECIES aan je skateboard zoals afgebeeld (zorg er echt voor dat de MPU6050 in dezelfde richting wijst als de afbeelding)

Hier heb ik de accubak met hete lijm op het bord gelijmd en het Arduino-bord vastgeschroefd. Ik heb een oud schoolbord gebruikt omdat een breder bord beter is voor deze ervaring. Het is best moeilijk om op een bord te balanceren in virtual reality.

OPMERKING:De Leonardo werkt hier veel beter voor... echter...

Als u een Arduino Uno gebruikt, zijn alle verbindingen hetzelfde, behalve:

SDA gaat naar A4 en SCL gaat naar A5

Stap 2:Upload de Arduino-code naar uw apparaat / zender / invoerding

BELANGRIJK:Koppel de RX- en TX-pinnen los voordat u de code naar uw bord uploadt.  

Stap 3:Bijna klaar! Download de app naar je telefoon!

Volg deze link en download de app naar je telefoon.

Google Cardboard Virtual Reality Skateboard/Snowboard-app

U moet naar uw beveiligingsinstellingen gaan en toestaan ​​dat apps van onbekende ontwikkelaars worden geïnstalleerd.

Zorg ervoor dat u de Bluetooth-module aan uw telefoon koppelt, verander de standaardnaam (HC-06) niet. Het wachtwoord moet 1234 zijn. 

Opmerkingen:

Dit is mijn eerste Unity-spel... dus het is vrij eenvoudig.

Als genoeg mensen dit maken, kan ik proberen een beter snowboardspel te maken, of een echt skateboardspel maken, afhankelijk van waar ik verzoeken voor krijg.

Wanneer je je Arduino-apparaat aanzet, zorg er dan voor dat het skateboard plat op de grond ligt en open vervolgens de app. Zodra de Bluetooth verbinding maakt, komt u binnen.

Als de Bluetooth-verbinding wordt verbroken, start u de app opnieuw (deze is ingesteld om alleen aan het begin van de app verbinding te maken, voor nu).

Code

  • Arduino-code
Arduino-codeArduino
#include "I2Cdev.h"#include "MPU6050_6Axis_MotionApps20.h"#if I2CDEV_IMPLEMENTATION ==I2CDEV_ARDUINO_WIRE #include "Wire.h"#endifMPU6050 mpu;bool dmpReady =false; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t pakketgrootte; uint16_t fifoCount; uint8_t fifoBuffer[64]; Quaternion q; VectorInt16 aa; VectorInt16 aaReal; VectorInt16 aaWorld; VectorFloat zwaartekracht; vlotter euler[3]; vlotter ypr[3]; vluchtige bool mpuInterrupt =false; void setup() { #if I2CDEV_IMPLEMENTATION ==I2CDEV_ARDUINO_WIRE Wire.begin(); TWBR =24; #elif I2CDEV_IMPLEMENTATION ==I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #endif Serial.begin(9600); //Voor gebruik met Arduino Uno Serial1.begin (9600); //Voor gebruik met Leonardo Serial.println(F("I2C-apparaten initialiseren...")); mpu.initialiseren(); Serial.println(F("Apparaatverbindingen testen...")); Serial.println(mpu.testConnection() ? F("MPU6050 verbinding succesvol") :F("MPU6050 verbinding mislukt")); Serial.println(F("Initialiseren DMP...")); devStatus =mpu.dmpInitialize(); mpu.setXGyroOffset(220); mpu.setYGyroOffset(76); mpu.setZGyroOffset(-85); mpu.setZAccelOffset (1788); if (devStatus ==0) { Serial.println(F("DMP inschakelen...")); mpu.setDMPEnabled(true); Serial.println(F("Interruptdetectie inschakelen (Arduino externe interrupt 0)...")); attachInterrupt(0, dmpDataReady, RISING); mpuIntStatus =mpu.getIntStatus(); Serial.println(F("DMP gereed! Wachten op eerste onderbreking...")); dmpReady =waar; packetSize =mpu.dmpGetFIFOPacketSize(); } else { Serial.print(F("DMP-initialisatie mislukt (code ")); Serial.print(devStatus); Serial.println(F(")")); } }nietig sendData(int x, int y, int z){ if(z <-10){ //forward Serial1.write("f"); // Schrijf naar Leonardo Serial1.write(10); //Stop Bit Serial.write ("f"); // Schrijf naar Uno Serial.write (10); //Stop bit } else if (z> 0) {//backward Serial1.write ("b"); Serial1.write(10); Serieel.schrijven("b"); Serieel.schrijven(10); } else if (y> 5){ //Om een ​​meer gevoelige wijzigingswaarde te maken naar 4 of minder //right Serial1.write("r"); Serial1.write(10); Serieel.schrijven("r"); Serieel.schrijven(10); } else if (y <-5){ // Om een ​​meer gevoelige wijziging aan te brengen in -4 of hoger //left Serial1.write("l"); Serial1.write(10); Serieel.schrijven("l"); Serieel.schrijven(10); } else //stop Serial1.write("s"); Serial1.write(10); Serieel.schrijven("s"); Serieel.schrijven(10); }void loop() { if (!dmpReady) return; mpuInterrupt =onwaar; mpuIntStatus =mpu.getIntStatus(); fifoCount =mpu.getFIFOCount(); if ((mpuIntStatus &0x10) || fifoCount ==1024) { mpu.resetFIFO(); Serial.println(F("FIFO-overloop")); } else if (mpuIntStatus &0x02) { while (fifoCount   

Schema's


Productieproces

  1. DIY LUMAZOID Arduino Music Visualiser
  2. De waterdruppels vastleggen met Arduino
  3. DIY voltmeter met Arduino en smartphone
  4. JX Wave Generator
  5. J.A.R.V.I.S met DIY Arc Reactor
  6. DIY Arduino RADIONICS-behandelingsmachine
  7. DIY 2D Motion Racing Simulator
  8. Arduino + GPS-module - Destination Notifier
  9. ArduRadio AlarmClock
  10. Virtuele Arduino Tennis
  11. DIY-idee met RFID