工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

DIYバーチャルリアリティスケートボード

コンポーネントと消耗品

>
Arduino UNO
× 1
Androidデバイス
× 1
VRヘッドセットGoogleCardboard
× 1
ジャンパー線(汎用)
× 1
GY-521 MPU-60503軸ジャイロスコープ+加速度計モジュール用Arduino
× 1

アプリとオンラインサービス

>
Google Cardboard VR SDK

このプロジェクトについて

これは本当に楽しくて簡単なプロジェクトで、約1時間で完了できます。スケートボードの下部には、Arduinoボードを備えた加速度計/ジャイロがあり、Bluetoothを介してボードの角度の動きをUnity forAndroidフォンで作成した小さなVRゲームに送信します。したがって、Arduinoの電源を入れ、Bluetoothが電話に接続すると、前進し始めます。左に傾くと左に行き、右に傾くと右に行きます。前輪を持ち上げると、キャラクターがジャンプします。これはAndroidスマートフォンでのみ機能し、スマートフォンはGoogleCardboardと互換性がある必要があります。したがって、古いスケートボードを置いている場合は、それをバーチャルリアリティスノーボードに変えてください。方法は次のとおりです。

必要なもの:

GoogleCardboardスタイルのバーチャルリアリティヘッドセット。

スケートボード。

テニスボール4個(転がり落ちないようにするため)

Arduino Leonardo(またはUno)

いくつかのジャンパー線

ミニブレッドボード

HC-06Bluetoothモジュール

MPU-6050加速度計/ジャイロ

オン/オフスイッチとバレルプラグ(Arduinoボードに電力を供給するため)を備えたバッテリーボックス付きの9Vバッテリー

はんだごてと多分ホットグルーガン

Androidアプリ、Arduinoコード、およびリンク付きのパーツリストは次の場所にあります:

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

ステップ1:Arduinoデバイス/送信機/入力/モノを作成する

<図> <図>

上の図に示すように、デバイスを組み立てます。

はんだごてが新しく、先端がきれいな場合は、ヘッダーピンをMPU-6050にはんだ付けする必要があります。これは約11秒で完了します。はんだごての先端が汚れていて古い場合、これはすぐにこれまでで最も難しいことになるでしょう(経験から言えば)。

コードに入って何も編集する必要がないように、すべての向きが上の写真に示されているとおりであることを確認してください。

図のようにすべてをスケートボードに正確に取り付けます(実際には、MPU6050が写真と同じ方向を向いていることを確認してください)

ここでは、バッテリーボックスをホットグルーでボードに接着し、Arduinoボードをねじ込みました。この経験の目的には幅の広いボードの方が良いので、私は古い教育委員会を使用しました。バーチャルリアリティでは、ボード上でバランスを取るのはかなり難しいです。

注:レオナルドはこれに対してはるかにうまく機能します...しかし...

Arduino Unoを使用している場合、以下を除いてすべての接続は同じです:

SDAはA4に行き、SCLはA5に行きます

ステップ2:Arduinoコードをデバイス/送信機/入力物にアップロードする

<図>
 重要:コードをボードにアップロードする前に、RXピンとTXピンを抜いてください。  

ステップ3:ほぼ完了です!お使いの携帯電話にアプリをダウンロード!

<図>

このリンクをたどって、アプリを携帯電話にダウンロードしてください。

GoogleCardboardバーチャルリアリティスケートボード/スノーボードアプリ

セキュリティ設定に移動し、不明な開発者からのアプリのインストールを許可する必要があります。

必ずBluetoothモジュールを電話機とペアリングしてください。デフォルト名(HC-06)は変更しないでください。パスワードは1234である必要があります。

注:

これは私の最初のUnityゲームです...とても基本的です。

十分な数の人がこれを作ったら、私はより良いスノーボードゲームを作ることを試みることができます、または私が要求を得るものに応じて実際のスケートボードゲームを作ることができます。

Arduinoデバイスの電源を入れたら、スケートボードが地面に平らになっていることを確認してから、アプリを開きます。 Bluetoothが接続されるとすぐに立ち寄ります。

Bluetoothが切断された場合は、アプリを再起動します(現時点では、アプリの起動時にのみ接続するように設定されています)。

コード

  • Arduinoコード
Arduinoコード Arduino
 #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 packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];クォータニオンq; VectorInt16 aa; VectorInt16 aaReal; VectorInt16 aaWorld; VectorFloat重力;フロートオイラー[3]; float ypr [3]; volatile 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); // Arduino Uno Serial1.begin(9600);で使用します// Leonardo Serial.println(F( "Initializing I2C devices ..."));で使用する場合mpu.initialize(); Serial.println(F( "デバイス接続のテスト...")); Serial.println(mpu.testConnection()?F( "MPU6050接続に成功しました"):F( "MPU6050接続に失敗しました")); Serial.println(F( "Initializing DMP ...")); devStatus =mpu.dmpInitialize(); mpu.setXGyroOffset(220); mpu.setYGyroOffset(76); mpu.setZGyroOffset(-85); mpu.setZAccelOffset(1788); if(devStatus ==0){Serial.println(F( "Enabling DMP ...")); mpu.setDMPEnabled(true); Serial.println(F( "割り込み検出の有効化(Arduino外部割り込み0)...")); attachInterrupt(0、dmpDataReady、RISING); mpuIntStatus =mpu.getIntStatus(); Serial.println(F( "DMP準備完了!最初の割り込みを待機中...")); dmpReady =true; packetSize =mpu.dmpGetFIFOPacketSize(); } else {Serial.print(F( "DMP初期化に失敗しました(コード")); Serial.print(devStatus); Serial.println(F( ")")); }} void sendData(int x、int y、int z){if(z <-10){// forward Serial1.write( "f"); // Leonardo Serial1.write(10);に書き込みます//ビットSerial.write( "f");を停止します// Unoに書き込みSerial.write(10); //ビットを停止} else if(z> 0){// backward Serial1.write( "b"); Serial1.write(10); Serial.write( "b"); Serial.write(10); } else if(y> 5){//より敏感な値を4以下に変更するには// right Serial1.write( "r"); Serial1.write(10); Serial.write( "r"); Serial.write(10); } else if(y <-5){//より機密性の高い変更を-4以上に変更するには// left Serial1.write( "l"); Serial1.write(10); Serial.write( "l"); Serial.write(10); } else // Serial1.write( "s");を停止しますSerial1.write(10); Serial.write( "s"); Serial.write(10); } void loop(){if(!dmpReady)return; mpuInterrupt =false; mpuIntStatus =mpu.getIntStatus(); fifoCount =mpu.getFIFOCount(); if((mpuIntStatus&0x10)|| fifoCount ==1024){mpu.resetFIFO(); Serial.println(F( "FIFOオーバーフロー")); } else if(mpuIntStatus&0x02){while(fifoCount  

回路図


製造プロセス

  1. DIY LUMAZOID Arduino Music Visualiser
  2. Arduinoで水滴をキャプチャする
  3. Arduinoとスマートフォンを使用したDIY電圧計
  4. JX Wave Generator
  5. J.A.R.V.I.S with DIY Arc Reactor
  6. DIY ArduinoRADIONICSトリートメントマシン
  7. DIY2Dモーションレーシングシミュレーター
  8. Arduino + GPSモジュール-宛先通知機能
  9. ArduRadio AlarmClock
  10. バーチャルArduinoテニス
  11. RFIDを使ったDIYのアイデア