Faça você mesmo skate de realidade virtual
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Aplicativos e serviços online
|
Sobre este projeto
Este é um projeto muito divertido e fácil que pode ser feito em cerca de uma hora. Na parte inferior do skate está um acelerômetro / giroscópio com uma placa Arduino que transmite o movimento angular da placa via Bluetooth para um pequeno jogo de RV que fiz no Unity para telefones Android. Então, quando você liga seu Arduino e o bluetooth se conecta ao seu telefone, você começa a seguir em frente. Incline-se para a esquerda e vá para a esquerda, incline-se para a direita e vá para a direita. Levante as rodas dianteiras e seu personagem vai pular. Isso só funciona para telefones Android e seu telefone deve ser compatível com o Google Cardboard. Então, se você tem um skate velho por aí, transforme-o em um snowboard de realidade virtual. Veja como:
Você precisará de:
Um fone de ouvido de realidade virtual estilo Google Cardboard.
Um skate.
4 bolas de tênis (para não rolar)
Um Arduino Leonardo (ou Uno)
Alguns fios de ligação
Um mini breadboard
Um módulo Bluetooth HC-06
Um acelerômetro / giroscópio MPU-6050
Uma bateria de 9 V com caixa de bateria que tem um botão liga / desliga e um plugue cilíndrico (para alimentar a placa Arduino)
Um ferro de solda e talvez uma pistola de cola quente
O aplicativo Android, o código do Arduino e a lista de peças com links podem ser encontrados aqui:
http://wirebeings.com/virtual-reality-skateboard.html
Etapa 1:Crie seu dispositivo / transmissor / entrada / coisa Arduino
Monte seu dispositivo conforme mostrado na imagem acima.
Você precisará soldar os pinos do cabeçote no MPU-6050; se o seu ferro de solda for novo e a ponta estiver limpa, isso pode ser feito em cerca de 11 segundos. Se a ponta do seu ferro de soldar estiver suja e velha, isso rapidamente se tornará a coisa mais difícil que você já fez (falando por experiência própria).
Certifique-se de que a orientação de tudo é exatamente como mostrado nas imagens acima para que você não precise entrar no código e editar nada.
Anexe tudo ao seu skate EXATAMENTE como mostrado (na verdade, apenas certifique-se de que o MPU6050 esteja voltado para a mesma direção da imagem)
Aqui eu colei a caixa da bateria na placa com cola quente e aparafusei a placa do Arduino. Usei um quadro da velha escola porque um quadro mais amplo é melhor para os propósitos desta experiência. É muito difícil equilibrar em uma placa enquanto está na realidade virtual.
NOTA:O Leonardo funciona muito melhor para isso ... porém ...
Se você estiver usando um Arduino Uno, todas as conexões são iguais, exceto:
SDA vai para A4 e SCL vai para A5
Etapa 2:Carregue o código do Arduino em seu dispositivo / transmissor / item de entrada
IMPORTANTE:Desconecte os pinos RX e TX antes de enviar o código para sua placa.
Etapa 3:Quase pronto! Baixe o aplicativo para o seu telefone!
Siga este link e baixe o aplicativo para o seu telefone.
App de skate / snowboard de realidade virtual Google Cardboard
Você precisará acessar suas configurações de segurança e permitir que aplicativos de desenvolvedores desconhecidos sejam instalados.
Certifique-se de emparelhar o módulo Bluetooth com o seu telefone, não altere o nome padrão (HC-06). A senha deve ser 1234.
Notas:
Este é meu primeiro Unity Game ... então é bem básico.
Se um número suficiente de pessoas fizer isso, posso tentar fazer um jogo de snowboard melhor ou fazer um jogo de skate de verdade, dependendo do que eu solicitar.
Quando ligar o seu dispositivo Arduino, certifique-se de que o skate está apoiado no chão e, em seguida, abra o aplicativo. Assim que o Bluetooth se conectar, você entrará.
Se o Bluetooth for desconectado, reinicie o aplicativo (ele está configurado para conectar no início do aplicativo apenas, por enquanto).
Código
- Código Arduino
Código 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; Gravidade VectorFloat; float euler [3]; float ypr [3]; bool volátil 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); // Para uso com Arduino Uno Serial1.begin (9600); // Para uso com Leonardo Serial.println (F ("Inicializando dispositivos I2C ...")); mpu.initialize (); Serial.println (F ("Testando conexões de dispositivos ...")); Serial.println (mpu.testConnection ()? F ("MPU6050 conexão bem-sucedida"):F ("MPU6050 conexão falhou")); Serial.println (F ("Inicializando DMP ...")); devStatus =mpu.dmpInitialize (); mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788); if (devStatus ==0) {Serial.println (F ("Ativando DMP ...")); mpu.setDMPEnabled (true); Serial.println (F ("Ativando a detecção de interrupção (interrupção externa do Arduino 0) ...")); attachInterrupt (0, dmpDataReady, RISING); mpuIntStatus =mpu.getIntStatus (); Serial.println (F ("DMP pronto! Aguardando a primeira interrupção ...")); dmpReady =true; packetSize =mpu.dmpGetFIFOPacketSize (); } else {Serial.print (F ("Falha na inicialização DMP (código")); Serial.print (devStatus); Serial.println (F (")")); }} void sendData (int x, int y, int z) {if (z <-10) {// encaminhar Serial1.write ("f"); // Escreve para Leonardo Serial1.write (10); // Parar o bit Serial.write ("f"); // Grava em Uno Serial.write (10); // Stop bit} else if (z> 0) {// backward Serial1.write ("b"); Serial1.write (10); Serial.write ("b"); Serial.write (10); } else if (y> 5) {// Para tornar o valor mais sensível, altere o valor para 4 ou menos // right Serial1.write ("r"); Serial1.write (10); Serial.write ("r"); Serial.write (10); } else if (y <-5) {// Para fazer uma alteração mais sensível para -4 ou maior // esquerda Serial1.write ("l"); Serial1.write (10); Serial.write ("l"); Serial.write (10); } else // parar 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 Overflow")); } else if (mpuIntStatus &0x02) {while (fifoCount
Esquemas
Processo de manufatura
- DIY LUMAZOID Arduino Music Visualiser
- Capturando as gotas de água com Arduino
- Faça você mesmo voltímetro usando Arduino e Smartphone
- JX Wave Generator
- J.A.R.V.I.S com DIY Arc Reactor
- Faça você mesmo Arduino RADIONICS Tratamento MMachine
- Simulador de corrida de movimento 2D DIY
- Módulo Arduino + GPS - Notificador de Destino
- ArduRadio AlarmClock
- Virtual Arduino Tennis