Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Laboratorio de juegos JB
Tabla de contenido
Introducción
Lista de características
Construyendo el hardware
Componentes necesarios
Para el arma:
Para los LED de la pantalla:
Colocación de LED
Circuitos de retroalimentación
Bluetooth
Hardware adicional
Instalación
Uso de armas
Puntería
modos Fullauto
Solución de problemas
Introducción
Comencé este proyecto en 2019 con un objetivo en mente; haciendo una solución LightGun doméstica asequible que ofrecería una
experiencia lo más cercana posible a la sala de juegos, sin sacrificar ninguna característica. Quería que fuera personalizable para cualquier
Después de cientos de horas de trabajo, y muchas pruebas y ayuda de los apasionados miembros de esta
comunidad, finalmente alcanzamos este objetivo, juntos.
Por supuesto que la historia no se detiene aquí, mantendré vivo este proyecto, lo mejoraré, lo haré más grande, mejor.
Todo eso no sería posible sin ustedes, quienes usan y apoyan mi proyecto.
Antes de comenzar, un pequeño descargo de responsabilidad obligatorio: al igual que con cualquier proyecto de bricolaje, no soy responsable
de ningún daño que pueda causarle a su hardware / usted mismo. Asegúrese de leer todo detenidamente antes de usar mi firmware. No soy un
profesional en electrónica. Estoy dando todos los esquemas y fotografías como ejemplos, utilícelos bajo su propio riesgo.
Y, por supuesto, este firmware no se puede vender solo ni en un paquete / hardware, es completamente gratuito.
Si algunas personas te lo vendieron, te estafaron.
Lista de características
● Precisión perfecta en la línea de visión: Gracias al sistema de 4 leds, una tonelada de matemáticas avanzadas y cálculo de espacio pseudo
3D que realiza una calibración automática y un seguimiento en tiempo real, obtienes una precisión de línea de visión perfecta todo el tiempo.
● Calibración única: calibre el sensor de la cámara y los leds una vez, y luego olvídelo, el objetivo seguirá funcionando
perfectamente sin importar el ángulo, la posición o si desconecta su arma.
● Latencia ultrabaja: este sistema utiliza una cámara de infrarrojos rápida y el firmware está muy optimizado, lo que reduce la latencia de
procesamiento total a un promedio de 4 ms (2 ms ~ 7 ms). La latencia más baja de todos los sistemas de armas de luz modernos.
● No se necesita software especial: todo lo maneja el arduino, lo que lo hace plug and play con cualquier sistema que
admita un mouse / teclado o una entrada de controlador. No se necesita software adicional (la GUI es opcional).
● Sin procesamiento externo: no se necesita procesamiento en la plataforma host, no hay sobrecarga de CPU, no se agrega superposición a la
● Compatible con mouse y controlador USB y Bluetooth: ya que usa HID estándar
mouse, gamepad y bluetooth, es compatible con todo lo que admita un mouse y gamepad usb / bt.
● Distancia mínima reducida: Gracias al potente seguimiento, este sistema te permite jugar más cerca de la pantalla que la mayoría de
los otros sistemas modernos, e incluso más si agregas una lente ancha o una lente de ojo de pez a la cámara (cualquier lente de teléfono
inteligente debería funcionar, incluso las más baratas).
● Admite todo tipo de pantalla: Puede usar este sistema prácticamente en cualquier tipo / proporción / tamaño de pantalla, simplemente
funcionará.
● Seguimiento / recarga completa fuera de la pantalla: realiza un seguimiento de su puntería incluso fuera de la pantalla y admite varias opciones
● Soporte completo de comentarios: puede agregar un solenoide, un motor de vibración y un LED RGB a su arma, y configurar y controlar
completamente cómo se comporta y reacciona cada uno de ellos a sus juegos. Es compatible con varias funciones, como el modo automático
completo y la sincronización con comentarios dentro del juego (para juegos compatibles).
● Soporte de recarga automática: puedes activarlo en cualquier momento para recargar automáticamente tu arma después de 6 disparos.
● Cambio de modo rápido con botón de modo: puede agregar un botón de "Modo" a su arma para
activa la calibración cuando se mantiene presionado, o para cambiar rápidamente varios modos:
○ Modo de entrada.
○ Modo de pedal.
● Soporte completo de comandos en serie: Puedes usar comandos en serie para configurar todos los modos de pistola y sincronizar los comentarios
● GUI con todas las funciones para los seguidores: Para los partidarios de este proyecto, hay una GUI completa con muchas opciones y
Construyendo el hardware
1. Componentes necesarios
Para el arma:
● Cualquier proyectil de pistola vieja (pistola ligera de algún airsoft) que tenga suficiente espacio para colocar la cámara y otros componentes en
● Arduino Pro Micro ATMega32U4 5V / 16MHz (3.3V u 8MHz no funcionará), el escarabajo Pro Micro más pequeño (tiene
menos botones / funciones pero es mucho más pequeño, tenga cuidado de obtener el modelo con D6 y 3v3), un tamaño
completo Micro o Teensy 2.0 (con el gestor de arranque Arduino Micro parpadeando). El número máximo de botones y
funciones será diferente según la placa que elijas.
Micro escarabajo:
Arduino Micro:
Teensy 2.0:
● Cable micro USB lo suficientemente largo para jugar cómodamente (por ejemplo, 3 m) Cámara DFRobot IR aquí o
● una cámara de infrarrojos casera (con sensor Wiimote) Cables electrónicos para conectar todo (por ejemplo,
● cables kynar)
● Soldador y soldadura
● Pegamento caliente u otros métodos para evitar que nada se mueva dentro de la pistola (Opcional) Un botón
● pulsador con eje largo para el botón especial "Modo" (Opcional) Un mod de gatillo de microinterruptor impreso
● en 3D
Para el sistema de LED, existe una amplia gama de opciones para cualquier precio y configuración, las 3 principales son las siguientes:
● La solución más barata - funciona muy bien para pantallas más pequeñas y configuración básica, pero no es tan confiable como la otra
○ LED IR de 940 nm (se recomiendan al menos 3 leds por punto, alta potencia y ángulo de alrededor de 20 ~ 40
grados)
● Solución de alta potencia - ideal para pantallas grandes y para jugar a distancia, pero no es barato y requiere mucha
precisión y método al configurarlo;
○ LEDs (1 led / punto, se recomienda 1W 60 ~ 90 grados leds)
● Solución de PCB SMD - la solución más equilibrada y limpia, pero también un poco cara, y requiere habilidades de
soldadura más avanzadas (más información sobre eso en el servidor de discordia, diseño e imagen de Boojakascha) .
● Solución de filamento LED IR - Una solución asequible y muy fácil de usar, pero de menor distancia o sensibilidad, no siendo
tan potentes los leds. Es básicamente una hebra tipo cinta led de 12V IR donde cortamos una pieza para cada punto. También
es interesante solo si tiene muchas configuraciones para hacer, ya que 1 m de esta hebra no es barato. Pregúnteme si necesita
algunos, podría proporcionar algunos míos más baratos.
● pequeño
● Solenoide que encaja dentro de la carcasa sin golpear nada cuando se activa (o solenoide integrado en la pistola)
● ohmios ~ 1Kohm
● pequeño
● Motor retumbante
● Fuente de alimentación que coincide con las especificaciones del motor (puede ser el arduino VCC si el ruido es de 5 V y no necesita
demasiada corriente)
● Un cambiador de nivel y / o un convertidor de voltaje según lo que quieras construir. Tubo corrugado para
● ocultar los cables y evitar que se doblen demasiado o se dañen.
2. Conexión al arduino
Lo primero que se recomienda hacer es conectar los botones principales y la cámara al arduino, y probar si todo funciona como se
esperaba. Luego, una vez que todo esté hecho, puede conectar las cosas opcionales, como las retroalimentaciones, el sensor de
temperatura, bluetooth ...
Aquí está la lista de pines, con cada conexión y función de pines: (pines en rojo son los que cambian entre LED RGB y
modo DPad)
Pro Micro LED de funcionalidad Pro Micro RGB Micro / Teensy2.0 Ratón /
Dpad Escarabajo Teclado
botón
flecha
botón flecha
RGB verde no utilizado 9 (A9) 9 B5 Pin verde LED RGB Pin azul -
Aquí están las referencias para los pines correspondientes para los modelos de placa principal:
NOTAS IMPORTANTES:
● Cada botón debe estar conectado entre GND y el pin correspondiente.
● Tenga cuidado con la diferencia de asignación de pines si usa el led rgb o el dpad (el firmware lo detecta automáticamente)
● No tiene que usar todos los pines, solo use los que desee y deje los otros pines libres.
● Conecte la cámara al pin GND, VCC, 2 (SDA) y 3 (SCL)
● La cámara de infrarrojos DFRobot a menudo tiene el sensor inclinado, por lo que es posible que deba inclinar la cámara hacia la izquierda o hacia la
derecha para que funcione correctamente. Ajústelo con la herramienta de prueba en la GUI antes de cerrar su arma.
● El pedal y el botón A tienen la misma función por defecto, pero se puede cambiar en la GUI o mediante un combo de botones
● Al disparar fuera de la pantalla, el gatillo de la pistola utilizará el botón secundario (botón A) en su lugar. Se utiliza para recargar fuera de la
3. Puntos LED IR
Para esta configuración, recomiendo colocarlos en un triángulo con un ligero ángulo en cada lado, para cubrir más ángulo con la
luz IR.
Puede calcular la resistencia necesaria y la fuente de alimentación aquí:
http://ledcalc.com/#calc
Tenga en cuenta que para varios leds por punto, puede ponerlos en serie si la caída de voltaje no es demasiado alta.
Entonces, para una configuración de triángulo, puede tener algo como esto (es solo un ejemplo con valores inventados):
necesitarías
Esta configuración es solo para usuarios experimentados, ya que puede ser peligrosa para usted y su hardware si se configura / usa incorrectamente.
http://ledcalc.com/#calc
● conecte el convertidor de potencia a la fuente de alimentación
● Gire los potenciómetros para obtener el voltaje correcto OUT y la corriente mínima, para asegurarse de no soplar el led
cuando está enchufado
● Apague la SALIDA del convertidor de potencia o desenchúfela
● conecte los leds como decidió al principio (todos, si algunos no están conectados, las especificaciones cambiarán)
● enciéndelo
● establecer corregir la corriente
● ahora si los leds se calientan demasiado, reduzca un poco la corriente. Si los leds no son lo suficientemente potentes, puedes jugar con el
voltaje y la corriente. Pero tenga mucho cuidado, si no lo hace correctamente puede quemar fácilmente los leds, y poner fuego / derretir
Colocación de LED
Coloque los LED en el centro exacto de cada lado (arriba, abajo, izquierda, derecha), alineados lo mejor posible, para tener una buena
precisión. Puede usar la herramienta de prueba GUI, así:
También puede colocar los leds en los lados de la pantalla y calibrar los bordes de la pantalla después, de esta manera;
4. Cámara
Para la cámara, como se indicó anteriormente, existen 2 soluciones:
● Cámara robot DF
● Cámara de bricolaje
5. Circuitos de retroalimentación
Aquí hay un esquema simple de los circuitos de control de motores y solenoides (motor a la derecha, solenoide a la izquierda):
Por supuesto, es posible que deba adaptar cada esquema a las especificaciones de sus componentes. Pinout, por ejemplo, difiere
entre transistores y MOSFET.
El LED RGB es más sencillo de usar; Primero conecte el cátodo común al GND, luego el color de cada pin a una resistencia que coincida con las
especificaciones del LED (verifique los enlaces en el capítulo del sistema de puntos LED), y cada una de esas resistencias al pin arduino
correspondiente.
6. Bluetooth
ESTA PARTE ES SOLO PARA USUARIOS AVANZADOS
Notas: el módulo bluetooth es muy limitado en comparación con la conexión USB HID, solo es compatible con el modo gamepad y no
tiene conexión en serie o conexión a la GUI. También tiene una mayor latencia de entrada que el modo USB.
Ahora, si aún quieres hacerlo, aquí tienes una pequeña guía para que funcione:
Necesitará una placa RN-42 o un HC-05 pirateado con el firmware RN-42 (ambos tienen el mismo chipset).
Tanto para RN-42 como para HC-05 pirateado, debe conectar la placa BT a cualquier Arduino ( no
olvídate de que es lógica 3v3, así que si tu arduino es 5v necesitarás un divisor de voltaje o un nivel
cambiador) , use el boceto de prueba disponible en la guía y configure la placa de la misma manera que está escrito, con una
diferencia; envíe SH, 0210 en lugar de SH, 0230 al final para activar el modo de gamepad en lugar de mouse / teclado.
Una vez que la placa está configurada correctamente, debe conectarla al arduino de la pistola de la siguiente manera
(no olvide que es lógica 3v3, por lo que necesitará un divisor de voltaje o un cambiador de nivel);
Por supuesto, si desea usarlo de forma inalámbrica, debe agregar una batería de 5v (3v3 no funcionará con el pro micro 16MHz) y un
regulador.
7. Hardware adicional
Tenga en cuenta que las resistencias pullup solo son necesarias si no las usó en el circuito de la cámara y si no usa un cambiador de
nivel.
Instalación
¡La instalación inicial solo se puede realizar en una PC con Windows! Una vez instalado, puede
6. Seleccione su placa, el modelo de arduino (ya sea Pro Micro o Micro, la versión de firmware que desea flashear y el reproductor
al que desea asignar la pistola (tenga en cuenta que este último parámetro solo es útil para que Mame tenga una asignación de
pistola fija)
7. Flash el arduino
8. Ahora que el arduino está flasheado, recomiendo usar las funciones de prueba para verificar si todo funciona correctamente
9. Una vez que todo esté configurado y funcionando, ahora puede cambiar la configuración de cada pistola a su gusto
Temperatura
sensor 4 discapacitados Habilitado 0
Solo retumbar
modo 6 discapacitados Habilitado 0
Comando de retroalimentación: F X . y . zzz ( X = número de comentarios, y = estado, 0 - apagado, 1 - en, 2 - pulsos, zzz =
Retroalimentación Número
Solenoide 0
Retumbar 1
● El modo de pulso tiene 2 formas de trabajar, puede usar 0 para que el número active un pulso solo si no hay pulsos
activados en este momento, o 1 ~ 255 para agregar pulsos al búfer que se activará tan pronto como el la
retroalimentación está lista.
instancia para agregar 2 pulsos al búfer del motor de vibración, escriba " F 1 . 2 . 2 "
Así que para
Puede enviar esos comandos con cualquier aplicación de comunicación en serie, pero la más útil hasta ahora es mamehooker
Uso de MameHooker:
Para utilizar Mamehooker con este sistema, primero siga esos pasos:
● En su archivo Mame.ini (en la carpeta Mame), cambie la opción "salida" a "windows";
● Cambie el puerto COM de su pistola 1 y 2 para que sean respectivamente COM1 y COM2 (puede hacerlo en el administrador de
dispositivos).
● Asegúrese de que Mamehooker esté configurado correctamente para su sistema y detecte los emuladores que desea usar
(siga las instrucciones en su sitio web).
● Para enviar comandos desde mamehooker, debe utilizar la función de comunicación com (escritura Com)
Uso de armas
Puntería
Después de enchufar su pistola de luz, simplemente apunte la pantalla desde una distancia moderada, debería ver que el cursor comienza a seguir
su movimiento de inmediato.
Si no sucede nada, es posible que haya algún problema con los LED; revíselos con la cámara digital de su teléfono si puede verlos lo
suficientemente brillantes desde donde está apuntando.
El seguimiento se reduce a un LED visible y seguirá su objetivo incluso fuera de la pantalla, pero tenga en cuenta que cuantos más
puntos LED pueda ver la cámara al mismo tiempo, mejor será la precisión del seguimiento.
Además, si sus LED no están cerca de la pantalla, es posible que tenga imprecisiones en los lados.
Para corregir ambos problemas, debe realizar una calibración simple de 5 pasos.
Puede iniciar el proceso de calibración manteniendo presionado el botón "modo" hasta que el cursor del mouse se ajuste al centro
de la pantalla, o usando la función de calibración GUI.
Hay 5 pasos en la calibración, para cada uno de ellos debes apuntar al cursor y disparar.
Para evitar cualquier calibración errónea, la calibración avanzará al siguiente paso solo si no hay detecciones erróneas con
los leds. Rumble y el LED RGB le notificarán si el paso tiene éxito o falla.
Su sensor ahora debería estar calibrado y, dado que está guardado en la EEPROM de Arduino, no tendrá que volver a hacerlo nunca más,
incluso cuando cambie la configuración de la pantalla.
Hay 2 opciones disponibles sobre cómo se comporta el arma al disparar fuera de la pantalla; dispara en la esquina inferior izquierda de la pantalla o
activa el botón A (clic derecho del ratón) en lugar del disparador, útil para juegos que necesitan disparar fuera de la pantalla para recargarse.
Hay diferentes modos que puede cambiar con la combinación de botones, primero debe sostener uno de los
siguientes botones y presione el botón "modo" brevemente para que algunos cambien de modo . Si usted tiene
un motor retumbante, sonará brevemente para indicarle qué modo activó.
● Botón de modo solo: activar / desactivar el modo 4: 3
● Disparador + botón de modo: modo de disparo fuera de la pantalla (desactivar / apuntar a la esquina / botón de recarga)
Modos Fullauto
Hay 3 modos automáticos completos disponibles para retroalimentaciones: Apagado, Automático o Siempre encendido. Aquí
Tenga en cuenta que cada comentario tiene sus propios tiempos para sentirse mejor.
Solución de problemas
Problema: el objetivo funciona en el centro de la pantalla, pero en los lados no apunta correctamente. Solución: no se encuentra en el modo
de pantalla correcto (pantalla completa o 4: 3). No olvide configurar su relación de aspecto en la GUI.
Solución: no es una limitación de mi sistema, sino una limitación de cómo funciona la entrada del mouse. Puede solucionar el problema usando
una aplicación que use pantalla completa exclusiva o usando el modo de gamepad en lugar del modo de mouse.
Solución: ¿Funciona cuando se usa el botón de prueba de la GUI? Sí => verifique la configuración de su arma. No => revisa tu circuito y
los pines arduino.
Problema: la GUI no detecta mi arduino y / o no se actualiza con el firmware. Solución: compruebe que estén instalados los
controladores correctos para el arduino. Todos están incluidos en el paquete que proporciono. Si es necesario, instale Arduino IDE
y actualice el arduino como un "Arduino Leonardo".
Solución: ¿tiene un sistema operativo de 32 bits? En caso afirmativo, reemplace los archivos necesarios en la carpeta principal por los de la carpeta
de controladores. Si se trata de un problema de avrdude, puede reemplazar el avrdude.exe por el que obtiene al instalar arduino IDE.