Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Construisez un skateboard VR DIY avec Arduino, Google Cardboard et Bluetooth

Composants et fournitures

Composant Quantité
Arduino UNO (ou Leonardo recommandé) 1
Module Bluetooth HC-06 1
Appareil Android compatible Google Cardboard 1
Casque VR Google Cardboard 1
Fils de connexion (jumper wires) 1 lot
Module accéléromètre/gyroscope MPU-6050 (GY-521) 1
Skateboard (de préférence large type old-school) 1
4 balles de tennis (pour stabiliser la planche) 4
Plaque d'essai mini (mini breadboard) 1
Batterie 9V avec boîtier interrupteur et prise jack 1
Fer à souder et pistolet à colle chaude 1 chacun

Applications et services en ligne

À propos du projet

Ce projet ludique et accessible se réalise en environ une heure. Un accéléromètre/gyroscope MPU-6050 monté sous le skateboard transmet les mouvements angulaires via Bluetooth (module HC-06) vers un jeu VR développé dans Unity pour Android. Lorsque l'Arduino s'allume et que la connexion Bluetooth s'établit avec le téléphone, l'avatar avance automatiquement. Inclinez-vous à gauche pour tourner à gauche, à droite pour tourner à droite. Soulevez l'avant de la planche pour faire sauter le personnage.

Prérequis : téléphone Android compatible Google Cardboard. Transformez un vieux skateboard en planche de snowboard virtuelle !

Étape 1 : Assembler le dispositif Arduino (émetteur)

Construisez un skateboard VR DIY avec Arduino, Google Cardboard et Bluetooth

Soudez les broches sur le MPU-6050 (une pointe de fer propre facilite grandement l'opération). Respectez scrupuleusement l'orientation montrée sur les photos pour éviter de modifier le code. Fixez l'ensemble sur le skateboard exactement comme illustré : le MPU-6050 doit pointer dans la même direction. Collez le boîtier de batterie à la colle chaude et vissez la carte Arduino. Une planche large (old-school) offre meilleure stabilité en VR.

Note importante : Le Leonardo fonctionne mieux car il possède un port série matériel supplémentaire (Serial1). Si vous utilisez un Uno, les connexions I2C changent : SDA → A4, SCL → A5.

Étape 2 : Téléverser le code Arduino

Construisez un skateboard VR DIY avec Arduino, Google Cardboard et Bluetooth
IMPORTANT : Débranchez les broches RX et TX avant de téléverser le code.

Étape 3 : Installer l'application sur votre téléphone

Construisez un skateboard VR DIY avec Arduino, Google Cardboard et Bluetooth

Téléchargez l'apk depuis : wirebeings.com/virtual-reality-skateboard.html

C'est mon premier jeu Unity, donc il reste basique. Si le projet intéresse, je pourrai développer un vrai jeu de snowboard ou de skateboard selon les retours.

Code Arduino

#include "I2Cdev.h"
#include "MPU6050_6Axis_MotionApps20.h"
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
#include "Wire.h"
#endif

MPU6050 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;
float euler[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);      // Pour Arduino Uno
  Serial1.begin(9600);     // Pour Leonardo
  Serial.println(F("Initialisation I2C..."));
  mpu.initialize();
  Serial.println(F("Test connexion..."));
  Serial.println(mpu.testConnection() ? F("MPU6050 OK") : F("MPU6050 ÉCHEC"));
  Serial.println(F("Initialisation DMP..."));
  devStatus = mpu.dmpInitialize();
  mpu.setXGyroOffset(220);
  mp u.setYGyroOffset(76);
  mpu.setZGyroOffset(-85);
  mpu.setZAccelOffset(1788);
  if (devStatus == 0) {
    Serial.println(F("Activation DMP..."));
    mpu.setDMPEnabled(true);
    Serial.println(F("Activation interruption (INT0)..."));
    attachInterrupt(0, dmpDataReady, RISING);
    mpuIntStatus = mpu.getIntStatus();
    Serial.println(F("DMP prêt !"));
    dmpReady = true;
    packetSize = mpu.dmpGetFIFOPacketSize();
  } else {
    Serial.print(F("Échec DMP (code "));
    Serial.print(devStatus);
    Serial.println(F(")"));
  }
}

void sendData(int x, int y, int z) {
  if(z < -10){ // avant
    Serial1.write("f"); Serial1.write(10);
    Serial.write("f"); Serial.write(10);
  } else if (z > 0){ // arrière
    Serial1.write("b"); Serial1.write(10);
    Serial.write("b"); Serial.write(10);
  } else if (y > 5){ // droite (seuil ajustable)
    Serial1.write("r"); Serial1.write(10);
    Serial.write("r"); Serial.write(10);
  } else if (y < -5){ // gauche (seuil ajustable)
    Serial1.write("l"); Serial1.write(10);
    Serial.write("l"); Serial.write(10);
  } else { // stop
    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("Overflow FIFO"));
  } else if (mpuIntStatus & 0x02) {
    while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount();
    mpu.getFIFOBytes(fifoBuffer, packetSize);
    fifoCount -= packetSize;
    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; }

Schéma de câblage

Construisez un skateboard VR DIY avec Arduino, Google Cardboard et Bluetooth

Processus de fabrication

  1. Construisez votre propre LUMAZOID : Visualiseur musical DIY Arduino
  2. Photographie Haute Vitesse : Capturez les Gouttes d'Eau avec Arduino Nano
  3. Construire un Voltmètre Intelligent avec Arduino et Smartphone – Projet DIY Facile
  4. JX Wave Generator – Générateur DDS compatible Arduino avec affichage OLED
  5. Assistant vocal J.A.R.V.I.S DIY Arduino avec design Réacteur Arc
  6. Dispositif de Traitement Radionique EMR DIY avec Arduino Nano
  7. Simulateur de Course 2 Axes DIY : Arduino Nano & Servos SG90
  8. Construire un Notificateur de Destination GPS avec Arduino UNO et Module NEO‑6M
  9. ArduRadio : Réveil Radio FM DIY Basé sur Arduino