亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

DIY 虚拟现实滑板

组件和用品

Arduino UNO
× 1
Android 设备
× 1
VR 耳机 Google Cardboard
× 1
跳线(通用)
× 1
GY-521 MPU-6050 3轴陀螺仪+加速度计模块阿杜诺
× 1

应用和在线服务

Google Cardboard VR SDK

关于这个项目

这是一个非常有趣和简单的项目,可以在大约一个小时内完成。在滑板的底部是一个带有 Arduino 板的加速度计/陀螺仪,它通过蓝牙将板的角运动传输到我在 Unity 中为 Android 手机制作的一个小型 VR 游戏。因此,当您打开 Arduino 并且蓝牙与手机连接时,您就开始前进了。向左倾斜,你向左走,向右倾斜,你向右走。抬起前轮,你的角色就会跳跃。这仅适用于 Android 手机,并且您的手机必须与 Google Cardboard 兼容。所以,如果你有一个旧滑板,把它变成一个虚拟现实滑雪板。方法如下:

您将需要:

一款 Google Cardboard 风格的虚拟现实耳机。

一个滑板。

4个网球(防止滚走)

一个 Arduino Leonardo(或 Uno)

一些跳线

一个迷你面包板

一个HC-06蓝牙模块

MPU-6050 加速度计/陀螺仪

一个带有电池盒的 9V 电池,带有一个开/关开关和一个桶形插头(为 Arduino 板供电)

烙铁和热胶枪

可在此处找到 Android 应用程序、Arduino 代码和带链接的零件清单:

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

第 1 步:创建您的 Arduino 设备/发射器/输入/事物

如上图所示组装您的设备。

您需要将头针焊接到 MPU-6050 上,如果您的烙铁是新的并且尖端是干净的,这可以在大约 11 秒内完成。如果您的烙铁头又脏又旧,这将很快成为您做过的最困难的事情(根据经验)。

确保所有内容的方向与上图所示完全相同,这样您就不必进入代码并编辑任何内容。

如图所示,将所有东西完全连接到滑板上(实际上只需确保 MPU6050 与图片朝向相同的方向)

在这里,我用热胶将电池盒粘在板上,然后将 Arduino 板拧下来。我使用了旧学校董事会,因为对于这种体验而言,更宽的董事会更好。在虚拟现实中很难在板上保持平衡。

注意:Leonardo 在这方面效果更好……但是……

如果您使用的是 Arduino Uno,则所有连接都相同,除了:

SDA去A4,SCL去A5

第 2 步:将 Arduino 代码上传到您的设备/发射器/输入设备

重要提示:在将代码上传到您的电路板之前拔下 RX 和 TX 引脚。  

第 3 步:差不多完成了!下载应用程序到您的手机!

按照此链接将应用程序下载到您的手机。

Google Cardboard 虚拟现实滑板/滑雪板应用

您需要进入安全设置并允许安装来自未知开发者的应用。

确保蓝牙模块与手机配对,不要更改默认名称(HC-06)。密码应为 1234。

备注:

这是我的第一个 Unity 游戏......所以它非常基础。

如果有足够多的人做到这一点,我可以尝试制作更好的滑雪板游戏,或者根据我的要求制作真正的滑板游戏。

当您打开 Arduino 设备时,请确保滑板平放在地面上,然后打开应用程序。只要蓝牙连接,您就会进入。

如果蓝牙断开连接,请重新启动应用程序(目前设置为仅在应用程序启动时连接)。

代码

  • 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 开发状态; uint16_t 数据包大小; uint16_t fifoCount; uint8_t fifoBuffer[64];四元数 q; VectorInt16 aa; VectorInt16 aaReal; VectorInt16 aaWorld; VectorFloat 重力;浮动欧拉[3];浮动 ypr[3];易失性布尔 mpuInterrupt =假; 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("正在初始化 DMP...")); devStatus =mpu.dmpInitialize(); mpu.setXGyroOffset(220); mpu.setYGyroOffset(76); mpu.setZGyroOffset(-85); mpu.setZAccelOffset(1788); if (devStatus ==0) { Serial.println(F("启用 DMP...")); mpu.setDMPEnabled(true); Serial.println(F("启用中断检测(Arduino外部中断0)...")); attachInterrupt(0, dmpDataReady, RISING); mpuIntStatus =mpu.getIntStatus(); Serial.println(F("DMP 准备好!等待第一个中断...")); dmpReady =真; packetSize =mpu.dmpGetFIFOPacketSize(); } else { Serial.print(F("DMP Initialization failed (code ")); 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){ //向后 Serial1.write("b"); Serial1.write(10); Serial.write("b");串行写入(10); } else if (y> 5){ //将更敏感的更改值设为 4 或更少 //right Serial1.write("r"); Serial1.write(10); Serial.write("r");串行写入(10); } else if (y <-5){ //对-4或更大的更敏感的变化 //left Serial1.write("l"); Serial1.write(10); Serial.write("l");串行写入(10); } else //停止Serial1.write("s"); Serial1.write(10); Serial.write("s");串行写入(10); }void loop() { if (!dmpReady) return; mpuInterrupt =假; 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 音乐可视化器
  2. 用 Arduino 捕捉水滴
  3. 使用 Arduino 和智能手机的 DIY 电压表
  4. JX 波形发生器
  5. J.A.R.V.I.S with DIY Arc Reactor
  6. DIY Arduino RADIONICS 治疗MMachine
  7. DIY 2D 运动赛车模拟器
  8. Arduino + GPS 模块 - 目的地通知器
  9. ArduRadio AlarmClock
  10. 虚拟 Arduino 网球
  11. 使用 RFID 的 DIY 创意
  12. DIY 3 轴 CNC VMC