산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

DIY 가상 현실 스케이트보드

구성품 및 소모품

Arduino UNO
× 1
Android 기기
× 1
VR 헤드셋 Google 카드보드
× 1
점퍼 와이어(일반)
× 1
GY-521 MPU-6050 3축 자이로스코프 + 가속도계 모듈용 아두이노
× 1

앱 및 온라인 서비스

Google Cardboard VR SDK

이 프로젝트 정보

이것은 약 1시간 안에 완료할 수 있는 정말 재미있고 쉬운 프로젝트입니다. 스케이트보드 바닥에는 Arduino 보드가 있는 가속도계/자이로가 있습니다. 이 가속도계는 Bluetooth를 통해 보드의 각도 모션을 Android 휴대폰용 Unity에서 만든 작은 VR 게임으로 전송합니다. 그래서 Arduino를 켜고 블루투스가 휴대폰과 연결되면 앞으로 나아가기 시작합니다. 왼쪽으로 기울이면 왼쪽으로, 오른쪽으로 기울이면 오른쪽으로 이동합니다. 앞바퀴를 들어 올리면 캐릭터가 점프합니다. 이것은 Android 휴대전화에서만 작동하며 휴대전화는 Google Cardboard와 호환되어야 합니다. 따라서 오래된 스케이트보드가 주위에 있다면 가상 현실 스노우보드로 바꾸십시오. 방법은 다음과 같습니다.

다음이 필요합니다:

Google Cardboard 스타일의 가상 현실 헤드셋입니다.

스케이트보드.

테니스 공 4개(구르지 않도록)

Arduino Leonardo(또는 Uno)

일부 점퍼 와이어

미니 브레드보드

HC-06 블루투스 모듈

MPU-6050 가속도계/자이로

온/오프 스위치와 배럴 플러그(Arduino 보드에 전원을 공급하기 위한)가 있는 배터리 상자가 있는 9V 배터리

납땜 인두와 뜨거운 글루건

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 가상 현실 스케이트보드/스노우보드 앱

보안 설정으로 이동하여 알 수 없는 개발자의 앱 설치를 허용해야 합니다.

Bluetooth 모듈을 전화기에 페어링했는지 확인하고 기본 이름(HC-06)을 변경하지 마십시오. 비밀번호는 1234여야 합니다.

참고:

이것은 나의 첫 Unity 게임입니다...그래서 아주 기본적인 것입니다.

많은 분들이 해주시면 더 좋은 스노보드 게임을 만들 수도 있고, 요청에 따라 실제 스케이트보드 게임을 만들 수도 있습니다.

Arduino 장치를 켤 때 스케이트보드가 지면에 평평한지 확인한 다음 앱을 엽니다. 블루투스가 연결되면 바로 들르게 됩니다.

블루투스 연결이 끊어지면 앱을 다시 시작하세요. (지금은 앱 시작 시에만 연결되도록 설정되어 있습니다.)

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • 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 패킷 크기; uint16_t fifoCount; uint8_t fifoBuffer[64]; 쿼터니언 q; VectorInt16 aa; VectorInt16 aaReal; VectorInt16aaWorld; VectorFloat 중력; 부동 오일러[3]; 부동 ypr[3]; 휘발성 부울 mpuInterrupt =거짓; 무효 설정() { #if I2CDEV_IMPLEMENTATION ==I2CDEV_ARDUINO_WIRE Wire.begin(); TWBR =24; #elif I2CDEV_IMPLEMENTATION ==I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #endif Serial.begin(9600); //아두이노 우노용 Serial1.begin(9600); //Leonardo 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, 상승); mpuIntStatus =mpu.getIntStatus(); Serial.println(F("DMP 준비! 첫 번째 인터럽트를 기다리는 중...")); dmpReady =참; 패킷 크기 =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("b"); 직렬.쓰기(10); } else if (y> 5){ //4 이하로 값을 더 민감하게 변경하려면 //오른쪽 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("들"); 직렬.쓰기(10); }void 루프() { if (!dmpReady) 반환; 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. DIY 아크 리액터가 있는 J.A.R.V.I.S
    6. DIY Arduino RADIONICS 치료 기계
    7. DIY 2D 모션 레이싱 시뮬레이터
    8. Arduino + GPS 모듈 - 목적지 알림
    9. ArduRadio 알람시계
    10. 가상 Arduino 테니스