Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Скейтборд виртуальной реальности «Сделай сам»

Компоненты и расходные материалы

Arduino UNO
× 1
Android-устройство
× 1
VR-гарнитура Google Cardboard
× 1
Перемычки (общие)
× 1
GY-521 MPU-6050 3-осевой гироскоп + модуль акселерометра Для Ардуино
× 1

Приложения и онлайн-сервисы

SDK Google Cardboard VR

Об этом проекте

Это действительно веселый и простой проект, который можно выполнить примерно за час. Внизу скейтборда находится акселерометр / гироскоп с платой Arduino, которая передает угловое движение доски через Bluetooth в небольшую игру VR, которую я сделал в Unity для телефонов Android. Итак, когда вы включаете Arduino и Bluetooth подключается к вашему телефону, вы начинаете двигаться вперед. Наклонитесь налево и идите налево, наклонитесь направо и идите направо. Поднимите передние колеса, и ваш персонаж подпрыгнет. Это работает только для телефонов Android, и ваш телефон должен быть совместим с Google Cardboard. Итак, если у вас есть старый скейтборд, превратите его в сноуборд виртуальной реальности. Вот как:

Вам понадобится:

Гарнитура виртуальной реальности в стиле Google Cardboard.

Скейтборд.

4 теннисных мяча (чтобы не скатывались)

Ардуино Леонардо (или Уно)

Некоторые перемычки

Мини-макет

Модуль Bluetooth HC-06

Акселерометр / гироскоп MPU-6050

Батарея 9 В с аккумуляторным ящиком, которая имеет переключатель включения / выключения и цилиндрическую вилку (для питания платы Arduino)

Паяльник и, возможно, пистолет для горячего клея

Приложение для 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:Почти готово! Загрузите приложение на свой телефон!

Перейдите по этой ссылке и загрузите приложение на свой телефон.

Приложение для скейтборда и сноуборда виртуальной реальности Google Cardboard

Вам нужно будет зайти в настройки безопасности и разрешить установку приложений от неизвестных разработчиков.

Обязательно выполните сопряжение модуля 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]; Quaternion q; VectorInt16 aa; VectorInt16 aaReal; VectorInt16 aaWorld; VectorFloat gravity; поплавок Эйлера [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); // Для использования с Леонардо Serial.println (F ("Инициализация устройств I2C ...")); 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 (правда); Serial.println (F ("Включение обнаружения прерывания (внешнее прерывание Arduino 0) ...")); attachInterrupt (0, dmpDataReady, RISING); mpuIntStatus =mpu.getIntStatus (); Serial.println (F («DMP готов! Ожидание первого прерывания ...»)); dmpReady =true; PackageSize =mpu.dmpGetFIFOPacketSize (); } else {Serial.print (F ("Ошибка инициализации DMP (код")); Serial.print (devStatus); Serial.println (F (")")); }} void sendData (int x, int y, int z) {if (z <-10) {// вперед Serial1.write ("f"); // Написать Леонардо Serial1.write (10); // стоповый бит Serial.write ("f"); // Запись в Uno Serial.write (10); // Стоповый бит} else if (z> 0) {// назад Serial1.write ("b"); Serial1.write (10); Serial.write ("б"); Serial.write (10); } else if (y> 5) {// Чтобы сделать более чувствительным, измените значение на 4 или меньше // правильно Serial1.write ("r"); Serial1.write (10); Serial.write ("г"); Serial.write (10); } else if (y <-5) {// Чтобы сделать более чувствительное изменение на -4 или больше // left Serial1.write ("l"); Serial1.write (10); Serial.write ("л"); Serial.write (10); } else // остановка Serial1.write ("s"); Serial1.write (10); Serial.write ("с"); Serial.write (10); } void loop () {если (! dmpReady) return; mpuInterrupt =false; mpuIntStatus =mpu.getIntStatus (); fifoCount =mpu.getFIFOCount (); если ((mpuIntStatus &0x10) || fifoCount ==1024) {mpu.resetFIFO (); Serial.println (F («Переполнение FIFO»)); } иначе, если (mpuIntStatus &0x02) {в то время как (fifoCount <размер пакета) {fifoCount =mpu.getFIFOCount (); } mpu.getFIFOBytes (fifoBuffer, packetSize); fifoCount - =размер пакета; mpu.dmpGetQuaternion (&q, fifoBuffer); mpu.dmpGetGravity (&gravity, &q); mpu.dmpGetYawPitchRoll (ypr, &q, &gravity); sendData (ypr [0] * 180 / M_PI, ypr [1] * 180 / M_PI, ypr [2] * 180 / M_PI); }} void dmpDataReady () {mpuInterrupt =true;} 

Схема


Производственный процесс

  1. Музыкальный визуализатор DIY LUMAZOID для Arduino
  2. Захват капель воды с помощью Arduino
  3. Вольтметр своими руками с использованием Arduino и смартфона
  4. Генератор волн JX
  5. J.A.R.V.I.S с дуговым реактором DIY
  6. Сделай сам Arduino РАДИОНИКА Лечение MMachine
  7. Самодельный двухмерный гоночный симулятор
  8. Модуль Arduino + GPS - средство уведомления о пункте назначения
  9. Будильник ArduRadio
  10. Виртуальный теннис на Arduino