Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Eu criei este projeto para jogar jogos de computador normais em RV total. Este projeto emula seus movimentos ao pressionar ou segurar as teclas do seu teclado
Exemplo - quando você avança, a ação de pressionar a tecla 'w' é emulada.
Eu emulei o jogo Call of Duty 4: Modern Warfare, mas não escolha jogos que tenham recuo ao atirar porque isso vai mudar a posição padrão do mouse
Etapa 1: Requisitos
Os requisitos são-
Há uma lista cheia de coisas que você precisa para fazer este terno
Sensores de toque-5
Sensor de força-1
GPU 6050-4
(ou)
GPU 6050-2 e acelerômetro - 2
Óculos Vr
Telefone habilitado para Vr
PC
Ponto de acesso WiFi
Uma arma de brinquedo
Um jogo para PC (usei Call of Duty- Modern Warfare 1)
Fios da placa de pão (macho-fêmea)
ARDUINO LEONARDO-2
Sheild Auton - 2
Fonte de energia (lipo)
Fios arco-íris
Etapa 2: HARDWARE
* reload_pin, shoot_pin, night vision_pin, grenade_pin, arma change_pin são sensores de toque. aim_pin é o sensor de força e o mouse é emulado por MPU6050 outros sensores são acelerômetro (postura, movimento 1 e 2)
1.1) SOLDAGEM
SOLDER MPU 6050, acelerômetro, sensor de toque e sensor de força com os fios
1.2) FIAÇÃO
Para MPU 6050-
Pin 2- SDA
Pino 3 - SCL
GND - GND
5v - PWR / VCC
Para movement_pin1-
Pino A1- eixo x
GND-GND
5v - PWR / VCC
Para movement_pin2-
Pino A2- eixo x
GND-GND
5v - PWR / VCC
Para posture_pin-
Pino A0- eixo x
GND-GND
5v - PWR / VCC
para weapon_pin -
sig-5v
GND-GND
5v - PWR / VCC
Para Reload_pin -
pin12 - 5v
GND-GND
5v - PWR / VCC
Para Nightvision_pin -
pino 10 - 5v
GND-GND
5v - PWR / VCC
Para shoot_pin -
Pin7 - 5v
GND-GND
5v - PWR / VCC
Para aim_pin -
Pino 8 - 5v
5v - PWR / VCC
1.3) FIOS DE SOLDA
Solde os fios da placa de pão com os fios do arco-íris
1.4) ISOLAMENTO
Prenda os fios com fita isolante no local onde você soldou para evitar curto-circuitos
Etapa 3: SOFTWARE
Usei um aplicativo chamado 'Remotr' da Play Store para transmitir o vídeo do laptop para o telefone
2.1) REMOTR-
Instale o aplicativo REMOTR em seu computador e crie uma conta
Aqui está o link-
remotrapp.com/#download
Instale o aplicativo REMOTR em seu smartphone
2.2) TRANSMISSÃO DE VÍDEO
Primeiro conecte o computador e a mesma rede WiFi e insira sua conta REMOTR em ambos os dispositivos
agora adicione manualmente o jogo que deseja transmitir no software
agora o aplicativo mostrará o computador como administrador clique nele para iniciar o streaming
Para transmitir em VR, ative o modo VR em seu smartphone
Se você não consegue entender Verifique este link para informações detalhadas
remotrapp.com/en/howto
Etapa 4: CÓDIGO PRINCIPAL
O código para este projeto não é difícil ou complexo, mas longo
Aqui está o código, basta copiá-lo e colá-lo em seu arquivo Arduino
ARDUINO
LEONARDO Mouse-
Referi Gabry295. Este código do mouse é baseado em sua cabeça Mouse instrutível
#incluir
#incluir
#incluir
#incluir
int aim_pin;
int shoot_pin;
MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int vx, vy;
void setup () {
Serial.begin (9600);
Mouse.begin ();
Wire.begin ();
mpu.initialize ();
if (! mpu.testConnection ()) {
enquanto (1);
}
pinMode (7, INPUT);
pinMode (8, INPUT);
}
void loop () {
shoot_pin = digitalRead (7);
aim_pin = digitalRead (8);
mpu.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz);
vx = (gx-300) / 200; // Coloquei -300 e +490, pois meu mpu6050 mostra esses valores quando não está movendo o cheque
vy = - (gz + 490) / 200; // verifique o código do mouse de cabeça por Gabry295 para mais detalhes sobre esses valores
Mouse.move (vx, vy);
atraso (20);
while (shoot_pin == HIGH);
{
Mouse.click ();
}
while (aim_pin == HIGH);
{
Mouse.click ();
}
}
Teclado leonardo
#incluir
int Grenade;
int weapon_pin;
int reload_pin;
int movement1_pin;
int movement2_pin;
int posture_pin;
char nightvision_pin;
void setup ()
{
pinMode (7, INPUT);
pinMode (8, INPUT);
pinMode (9, INPUT);
pinMode (10, INPUT);
pinMode (11, INPUT);
pinMode (12, INPUT);
pinMode (A0, INPUT);
pinMode (A1, INPUT);
Keyboard.begin ();
}
void loop ()
{
Grenade_pin = digitalRead (8);
gun_pin = digitalRead (9);
motion1_pin = analogRead (A1);
motion2_pin = analogRead (A2);
posture_pin = analogRead (A0);
reload_pin = digitalRead (12);
nightvision_pin = digitalRead (10);
if (granada == HIGH)
{
Keyboard.press ('g');
}
enquanto (weapon_pin == HIGH)
{
Keyboard.press ('q');
}
enquanto (reload_pin == HIGH)
{
Keyboard.press ('r');
}
while (movement1_pin> 340 && movement1_pin <420)
{
Keyboard.press ('w');
}
enquanto (movimento1_pin> 420)
{
Keyboard.press ('w');
Keyboard.press ('p');
}
while (movement2_pin> 340 && movement2_pin <420)
{
Keyboard.press ('w');
}
enquanto (movimento2_pin> 420)
{
Keyboard.press ('p');
Keyboard.press ('w');
}
enquanto (posture_pin> 340 && posture_pin <420)
{
Keyboard.press ('c');
}
enquanto (posture_pin> 420)
{
Keyboard.press ('l');
}
enquanto (posture_pin <340)
{
Keyboard.press ('z');
}
while (nightvision_pin == HIGH)
{
Keyboard.press ('n');
}
}
}
Etapa 5: CÓDIGOS DE TESTE
Aqui estão alguns códigos divididos do código principal de acordo com a função
TIROTEIO-
#incluir
int x;
void setup () {
pinMode (8, INPUT);
Mouse.begin ();
}
void loop () {
x = leitura digital (8);
if (x == HIGH)
{
Mouse.click ('g');
}
}
VISANDO-
#incluir
#incluir
#incluir
#incluir
MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int vx, vy;
void setup () {
Serial.begin (9600);
Mouse.begin ();
Wire.begin ();
mpu.initialize ();
if (! mpu.testConnection ()) {
enquanto (1);
}
}
void loop () {
shoot_pin = digitalRead (7);
aim_pin = digitalRead (8);
mpu.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz);
vx = (gx + 300) / 200; // "+300" porque o eixo x do giroscópio fornece valores de aproximadamente -350 enquanto ele não está se movendo. Altere este valor se você obtiver algo diferente usando o código TEST, chacking se houver valores distantes de zero.
vy = - (gz_-100) / 200; // o mesmo aqui sobre "-100"
RELOAD-
#incluir
int x;
void setup () {
pinMode (8, INPUT);
Keyboard.begin ();
}
void loop () {
x = digitalRead (8);
if (x == HIGH)
{
Keyboard.press ('r');
}
outro
{
Keyboard.release ('r');
}
}
NIGHT VISIO #include
int x;
void setup () {
pinMode (8, INPUT);
Keyboard.begin ();
}
void loop () {
x = leitura digital (8);
if (x == HIGH)
{
Keyboard.press ('g');
}
outro
{
Keyboard.release ('g');
}
}
CROUCH AND PROONE-
#incluir
int y;
void setup () {
pinMode (A0, INPUT);
Serial.begin (9600);
}
void loop () {
y = leitura analógica (A0);
if (y <260)
{
Keyboard.release ('c');
Keyboard.release ('p');
}
else if (y> 260 && y <310)
{
Keyboard.press ('c');
}
else if (y> 310)
{
Keyboard.press ('p');
}
}
Etapa 6: CONTROLES DE JOGO
mude os controles do jogo como segue
agachar - x
inclinado - eu
troca de arma - q
sprint - p
levantar / pular - z
visão noturna - n
movimento para frente - w
granada - g
Etapa 7: CONFIGURANDO
Finalmente chegamos à última etapa agora colocar o arduino
pranchas em uma caixa e coloque-as no saco
Agora conecte o micro USB do arduino às portas USB do laptop e conecte os sensores conforme indicado acima
* marcas de seta nas imagens acima representam a direção que o sensor deve estar voltado
Se você tiver alguma dúvida, não hesite em deixar um comentário e não se esqueça de compartilhar sua experiência
É isso obrigado e
TCHAU.