Tabla de contenido:

Juego de disparos Arduino V3: 4 pasos
Juego de disparos Arduino V3: 4 pasos

Video: Juego de disparos Arduino V3: 4 pasos

Video: Juego de disparos Arduino V3: 4 pasos
Video: TUTORIAL para CORRER DOOM EN ARDUINO 2024, Noviembre
Anonim
Image
Image
Juego de disparos Arduino V3
Juego de disparos Arduino V3
Juego de disparos Arduino V3
Juego de disparos Arduino V3
Juego de disparos Arduino V3
Juego de disparos Arduino V3

Este juego es para los que usan airsoft o co2 para disparar a los objetivos. Es un juego.

Para obtener información actualizada sobre el juego y soporte:

www.facebook.com/arduinoshooting/

Para mi página de blog sobre el juego:

shootinggameblog.wordpress.com

Para los códigos sobre el juego:

github.com/shootinggame82/Shooting-game-v3

El juego de disparos es x objetivos que son inalámbricos, cada objetivo tiene un sensor de vibración que detecta la vibración que se obtiene cuando se realiza un golpe. Los sensores inalámbricos son un chip Atmega328 (chip Arduino Uno) y tienen batería de recarga Li-Po.

El controlador principal de este juego está controlado por un Arduino y está controlado en serie desde una Raspberry Pi.

Entonces, ¿cómo está funcionando este juego? Bueno, son 3 modos de juego:

Quicktime: Juega X rondas y dispara tan rápido que puedas en cada objetivo.

Modo de tiempo: Dispara a tantos objetivos como puedas en X segundos.

Rapidfire: dispara X tiros en el tiempo más rápido.

El sistema utiliza transmisores NRF24L01 para obtener una buena distancia del controlador principal. Funcionan en 2.6 GHz (lo mismo que se ejecuta WiFi)

En mis proyectos anteriores, he estado usando Piezo para la vibración, pero ahora se usa Vibration Sensor Switch. Pero aún puedes usar Piezo si has creado mi versión anterior de este juego.

El juego tiene una pantalla táctil Raspberry Pi de 7 que contiene el sistema web a través del cual controlas el juego. Una impresora terminal imprime los resultados.

Suministros

Para transmisores:

  • X Atmega328 con Arduino Bootloader (dependiendo de cuántos objetivos)
  • X Interruptor del sensor de vibración
  • X LED azul
  • X Led verde
  • X Led rojo
  • Batería Li-Po X 3.7v
  • Módulo cargador X FC-75 Li-Po (u otro modelo)
  • Condensador X 100 uF
  • X Casos para los sensores
  • X LD1117V33 (Hace un transmisor seguro de 3.3 V)
  • Módulos X NRF24L01
  • X x 3 resistencias de 220 ohmios (se necesitan 3 para un objetivo)
  • X Cristal de 16 MHz
  • X x 2 Condensadores no plorizados 22 pF (se necesitan 2 para un objetivo)

Para Arduino principal:

  • 1 Arduino (se recomienda Nano o Uno, necesita tener USB)
  • 1 módulo NRF24L01
  • 1 condensador de 10 uF

Para frambuesa Pi:

  • Raspberry Pi (usé 3B)
  • Pantalla táctil de 7"
  • ATXRaspi (opcional pero un buen módulo de botón de encendido)
  • RTCRaspi (Opcional pero un buen módulo RTC para mantener la hora y la fecha)
  • Impresora térmica (opcional pero necesaria para poder imprimir)
  • Escáner de código de barras (versión USB que funciona como un teclado, opcional)
  • Buena potencia de 5V (utilicé un viejo USB de 12v con 2,5 A de potencia)

Otras cosas:

  • 12v de potencia (tengo uno a 12 Ah)
  • Toma de red (facilita la conexión a la red)
  • Cables

Paso 1: los sensores inalámbricos

Los sensores inalámbricos
Los sensores inalámbricos
Los sensores inalámbricos
Los sensores inalámbricos
Los sensores inalámbricos
Los sensores inalámbricos

Comencemos a hacer los sensores. Yo uso 4 sensores para este juego. Pero puede agregar fácilmente más sensores. Los sensores se comunican con un código de 4 números cuando el sistema principal envía el código con qué función se iluminará el sensor con el código correcto y estará listo para el objetivo. La luz azul es para informar que es ese objetivo al que vas a acertar.

También disponemos de led verde y rojo. El verde siempre se enciende para informar que el sensor está encendido. El rojo solo se iluminará cuando la batería tenga menos de 3,1 V (utiliza la función incorporada en el chip para calcular cuánto hay en la batería.

El sensor de vibración está conectado al pin analógico y lee su valor. Cuando el valor se está hundiendo, el sensor tiene una imagen de vibración y ahí es donde registramos el golpe.

El objetivo tiene una función a prueba de fallos, que en caso de que no golpee en X segundos (el valor predeterminado es 15 segundos) o si la transmisión no se puede realizar, volverá a la posición inicial.

No voy a explicarte cómo vas a cablear, revisa la hoja eléctrica para ver cómo vas a hacer eso, lo único que no está en ella es la batería, el interruptor de encendido y el cargador. Depende de usted decidir cómo lo quiere.

IMPORTANTE ACERCA DEL Módulo NRF24L +:

Puede ser doloroso … mantenerlos estables, combinado con un buen poder y aislamiento a su alrededor, y el código que hará que funcionen. Para mí, el condensador de 10 uF me proporcionará una conexión estable y buena, pero inténtelo primero en caso de que necesite, por ejemplo, un condensador de 100 uF. También envuélvalos primero con papel de aluminio y luego con papel de aluminio para protegerlos de interferencias

También en el código, la velocidad de datos no necesita más de 250 Kb, por lo que ese no será el problema. Pero el PA: myRadio.setPALevel (RF24_PA_MIN);

En el código que configuré en MIN (Esto es durante la prueba), es el más bajo y no usará tanta energía, pero el rango no será tan largo. Si tiene una potencia estable y buena para ellos, puede subir a RF24_PA_MAX para obtener el rango más largo, PERO necesitan una potencia estable de GOOOOOD para eso. Pruebe también LOW AND HIGH (cambie solo el texto MAX) para ver si obtiene una buena comunicación. También obtendrás un buen alcance en BAJO y ALTO a menos que vayas a ser un francotirador

También mantenga los transmisores separados por lo menos un metro, ¡cerrar puede hacer que la señal sea mala

Pruebe la comunicación con algún ejemplo de ping en la biblioteca NRF24 (enlace en GitHub)

En el código, debe establecer el número de identificación único para ese objetivo:

int targID = 3401; // Este es el ID del objetivo

int sendID = 2401; // Este es el ID de respuesta

También hay 3 funciones DEFINIR:

#define DEBUG

#define BATERÍA

#define SHAKE // SI SE UTILIZA SHAKE SWITCH EN LUGAR DEL ANTIGUO PIEZO

DEPURAR:

Durante la prueba, es bueno haberlo definido. Pero cuando los ponga a disposición, no los active.

BATERÍA:

Si no desea tener un comprobador de batería para los objetivos, debe eliminar esta definición.

SACUDIR:

Si ha compilado mi versión anterior, tiene sensores piezoeléctricos, luego elimínelo para obtener el código correcto para ellos.

Chip ATMEGA328

En lugar de un Arduino nano, decidí usar el chip ATMEGA328 (con el cargador de arranque Uno), son simples de programar, simplemente retire el chip de un Arduino Uno y agregue este chip y cargue el código. Verifique el esquema eléctrico sobre cómo construir los objetivos.

El código

He escrito el código con PlatformIO en lugar de Arduino IDE. Es un mejor software para programar. Así que el código es un poco diferente. Recomiendo usar este software en su lugar.

La caja de destino y transmisor

He colocado el sensor y el led azul en el objetivo, y con un cable phono de 3,5 mm en 2 m lo conecto en la caja del transmisor que contiene el chip atmega, el cargador de batería y el led verde y rojo. Esto es así para protegerlo de los impactos de balas de acero.

Paso 2: el controlador del juego

El controlador del juego
El controlador del juego
El controlador del juego
El controlador del juego
El controlador del juego
El controlador del juego
El controlador del juego
El controlador del juego

Lo siguiente que debemos hacer es crear el controlador de los sensores. Es un Arduino que usa un módulo NRF24L01 para comunicarse con los sensores. Nada más. Luego, el Arduino se conecta con USB en la raspberry pi para que funcione.

Así es como funcionará. Utiliza serial para saber qué hacer. Pi enviará comandos seriales. Primero, durante la configuración, envía cuántos objetivos ha agregado y los números de identificación de los objetivos. Luego, hará la función de prueba e informará a la Raspberry Pi si se comunican entre sí.

Cuando juegas el juego te enviará desde pi qué tipo de juego y cuántas rondas / hits usar. Eso es todo.

Es posible usar los módulos NRF24L01 en la raspberry pi, pero para mí el Arduino es una mejor opción porque nunca los uso en frambuesa, así que no sé qué tan bien funcionan a largo plazo

Hay un módulo de potencia que usa 5 v para hacer que la potencia estable correcta a los transmisores. Puede usarlos con su Arduino (vea la imagen) el nombre es Placa de módulo adaptador de enchufe

Cuando juegues, los objetivos se activarán aleatoriamente uno por uno. Cuando se golpea uno, se activará otro.

Durante la prueba puede tener activado #DEFINE DEBUG para ver cómo funciona, pero no cuando lo use en la computadora pi, entonces no funcionará.

Descarga el código en la página de GitHub.

Paso 3: Raspberry Pi

Frambuesa pi
Frambuesa pi
Frambuesa pi
Frambuesa pi
Frambuesa pi
Frambuesa pi
Frambuesa pi
Frambuesa pi

Ahora hemos llegado a la Raspberry Pi.

He agregado algunas funciones adicionales para poder tener un botón de encendido. El ATXRaspi 3 es un gran módulo, puede encender, apagar y reiniciar el pi con un botón. También un RTCRaspi para mantener la fecha y la hora en el pi. También hizo posible simplemente conectar un cable de red en caso de que necesite hacer algunas actualizaciones en el sistema. Los encontrarás en Lowpowerlab

La impresora térmica que encontrará en sparkfun y el lector de códigos de barras están disponibles en amazon.

La computadora Pi se ejecuta en modo quiosco, por lo que el navegador se abrirá al inicio. En primer lugar, debe tener un servidor web con PHP 7 y mysql en la computadora pi. (Hay muchas guías en la web para esto)

TENGA EN CUENTA: si va a utilizar una impresora térmica con raspberry pi que tiene bluetooth incorporado, primero debe desactivar esa

El script de Python necesita pyserial y lo instalas: sudo apt-get install python-serial

Para hacer que mysql funcione, instale lo siguiente:

sudo apt-get install mysql-python sudo apt-get install python-mysql.connector

suso apt-get install pymysql

Ahora puede controlar su Arduino a través de serie y también actualizar la base de datos mysql.

El siguiente paso es crear un script de Python para conectarse a mysql.

En las tres secuencias de comandos de Python, cambie la conexión a su base de datos mysql.

El siguiente paso es hacer que el script de Python se ejecute al inicio.

Hay tres script de python. El juego.py es el más importante de todos, el que contiene la función del juego.print.py, esto solo es necesario si va a usar una impresora térmica para imprimir.ean.py solo es necesario si está va a utilizar el escáner de código de barras.

Para que se inicien automáticamente, edito:

sudo nano /etc/rc.local

y agregue lo siguiente en la parte inferior antes de la salida 0:

sudo python /home/pi/Gamefiles/game.py & sudo python /home/pi/Gamefiles/print.py & sudo python /home/pi/Gamefiles/ean.py &

Cambie al lugar correcto para su secuencia de comandos de Python y no olvide el signo & al final

Ahora necesitamos hacer un modo kiosco para el navegador web, primero quite el cursor:

sudo apt-get install unclutter

sudo nano / etc / xdg / lxsession / LXDE-pi / autostart

ahora en ese archivo busque y comente:

@xscreensaver -no-splash # comente esta línea para deshabilitar el protector de pantalla

Debajo de eso, agregue:

@xset s desactivado @xset -dpms @xset s noblank @ chromium-browser --noerrdialogs --force-device-scale-factor = 1.25 --kiosk https:// localhost

El siguiente paso para eliminar todos los textos de inicio y demás también agrega su propia pantalla de inicio aquí es una guía rápida:

sudo nano /boot/config.txt y en la parte inferior adddisable_splash = 1

Eliminar el mensaje de texto debajo de la imagen de bienvenida:

sudo nano /usr/share/plymouth/themes/pix/pix.script

Buscar y eliminar (o comentar):

message_sprite = Sprite (); message_sprite. SetPosition (ancho_pantalla * 0.1, altura_pantalla * 0.9, 10000);

y:

my_image = Imagen. Texto (texto, 1, 1, 1); message_sprite. SetImage (mi_imagen);

Ahora eliminamos los mensajes de arranque:

sudo nano /boot/cmdline.txt

reemplace "consola = tty1" por "consola = tty3"

y al final de la línea agregue:

splash silencioso plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0

Y reemplace el pi splash con el suyo:

sudo cp ~ / my_splash-p.webp" />

Ahora tienes tu propia pantalla de inicio personalizada para tu juego. Tu computadora pi está ahora lista para manejar el juego, ¡así que pasa al siguiente paso!

Paso 4: configura el juego

En este punto, ya ha creado el juego.

Lo primero que debe hacer es configurar el sistema web. Sube la base de datos a tu servidor mysql. El archivo está en la carpeta incluye y se llama database.sql

El siguiente paso es editar el archivo de configuración, lo encontrará en el nombre de la carpeta incluye config.php Cambie la información de inicio de sesión de la base de datos para que el script funcione.

El sistema web está basado en varios idiomas y está escrito en inglés. Hay una traducción al sueco disponible. Para hacer más idiomas, necesita un software llamado Poedit.

Para agregar más lenguaje al sistema web, debe editar i18n_setup.php y agregar en la matriz:

return in_array ($ locale, ['en_US', 'sv_SE']); (Línea 23)

Además, para cambiar el idioma predeterminado, debe cambiar en la línea 27: $ lang = 'en_US'; cambie el en_US a su idioma.

los archivos de idioma deben colocarse en locales / LANGCODE / LC_MESSAGES / y llamarse main.mo (Cambie el código de idioma a su idioma)

para cambiar el teclado en el archivo selectplayers.php cambia el idioma: "en", // en para inglés sv para diseño sueco: 'qwerty', // qwerty para inglés sueco-qwerty para sueco

Los encontrará en las líneas 218 y 219

Los idiomas disponibles están en la carpeta: assets / js / keyboard / languages & layouts están en assets / js / keyboard / layouts y agregue los archivos correctos a las líneas 118 y 119 (reemplace el que encuentra allí ahora)

Agregar objetivos

Para agregar objetivos, vaya a localhost / admin / y haga clic en agregar objetivos.

Debe agregar un nombre para el objetivo y el ID de objetivo único y enviar ID, agregue tantos objetivos como tenga.

Agregar juegos

También necesitas agregar algunos juegos. Vaya a localhost / admin / y haga clic en agregar juego

Debe agregar un nombre para el juego, una descripción, jugadores mínimos y máximos qué tipo de juego, también qué tan difícil es el juego entre 1 y 5. Y cómo es el juego, por lo que para el juego de fuego rápido agrega cuántos golpes (ejemplo 30) para la extracción rápida cuántas rondas (por ejemplo, 8) y por cuánto tiempo van a jugar (por ejemplo, 60 por un minuto)

Empieza el juego

Cuando enciendas el juego, hará las pruebas de destino. Por lo tanto, los objetivos deben estar activados antes de iniciar el sistema principal. Si todos pasan la prueba, puede usar el sistema, pero si no lo hacen, no puede usarlo. Intentará comunicarse hasta que obtengan respuesta.

¡Buena suerte

Bueno, eso es todo, para obtener soporte e información sobre la actualización en el código, siga mi página de Facebook para este juego, así puedo darle una respuesta rápida. Encontrará enlaces en la parte superior aquí.

Recomendado: