LaserGame V4.1 Alfa

Por fin he encontrado un momento para publicar el trabajo de estos meses. El LaserGame Alfa es una versión preliminar (Alfa) de la evolución del LaserGame original. Ahora es un juego totalente operativo, con muchas funciones avanzadas, pero manteniendo la sencillez del original.

Licencia:
(c) Heli Tejedor, Julio 2011, http://heli.xbot.es, helitp@arrakis.es
Este Software se distribuye bajo licencia
Creative Commons 3.0 Reconocimiento, No Comercial, Compartir Igual(CC BY-NC-SA 3.0)
http://creativecommons.org/licenses/by-nc-sa/3.0/deed.es_ES
http://creativecommons.org/licenses/by-nc-sa/3.0/
Para usos comerciales contactar con el autor en helitp@arrakis.es

Armas: En la última versión del hardware V4.1 usan un PIC16F690 de 20 patillas, un display LED de 7 segmentos y 7 LED para informar del estado del arma. Mediante 7 pulsadores se interacciona con ella: Gatillo, puntero, cerrojo y cargador, además de 3 pulsadores arriba, menú y abajo.
Sensores: Usan otro PIC16F690 y un esquema similar al arma, pero sin display y con mas LED.
La comunicación es mediante un PLL LM567 se genera una onda cuadrada de 38,5Khz que es modulada mediante un transistor por la señal TX RS232 del PIC y se aplica a un transistor amplificador de potencia que alimenta el diodo láser (o infrarrojo).
El receptor funciona mediante un fototransistor sensible a la luz visible (aunque puede usarse uno infrarrojo). Se acopla en alterna a un amplificador y filtro paso banda centrado en 38,5Khz que amplifica la señal por 250. Esta señal se acopla en alterna a la entrada del PLL, que tiene una sensibilidad de 10mV, y la salida de enganche del PLL se lleva al RX RS232 del PIC.

La comunicación entre el arma y los sensores (pueden usarse hasta 8 sensores programados de distintas formas) es mediante un bus I2C, que también permite usar menorias I2C tipo 24cxx.

Estos son los prototipos que he montado para validar los esquemas y probar el firmware. Están montados en el interior de unas postolas (revolver) de juguete. En un bazar pueden encontrarse por 2,50€ y, una vez eliminado los elementos no deseados, queda aprovechable: un portapilas para 3 pilas tamaño AA, un altavoz y 4 LED.

Prototipo de revolver 1

Interior del prototipo de revolver 1

FAQ:
Por que 3 pilas Ni-Mh.
Esta versión de hardware 4.1 Puede funcionar con alimentaciones entre 3,2V y 4,5V. Un convertidor DC-DC eleva esta tensión hasta 5V, que es la que necesitan el PIC y el PLL para trabajar. Podrían usarse 3 baterías NI-MH, tres pilas alcalinas de 1,5V o una batería de litio de 3,7V. El diseño actual no incluye cargador de baterías porque el PIC no dispone de patillas libres, por lo que hay que extraer las baterías y cargarlas externamente. Para esto lo mas cómodo es usar baterías tamaño AA, que además es lo mas barato.

Por que PIC16F690.
La primera versión usaba PIC16F628 y bastaba, aunque limitando el display a 3 dígitos. Para solucionar los problemas de conectar los sensores de forma analógica decido usar sensores inteligentes con I2C. El PIC16F628 no dispone de I2C mientas que el PIC16F690 si. Además se puede usar un display de 4 dígitos.
El PIC16F690 es el PIC más pequeño y barato que soporta este firmware. Podría usarse uno mas potente sin problemas: PIC16F877, PIC18F2550 etc…

Por que láser.
No es imprescindible usar comunicación por láser rojo. Podrían usarse LED y fototransistores infrarrojos con filtro de luz visible. Incluso sensores IR completos como el TSOP1738 ó TSOP1740 e inyectar la señal tras el PLL. El sistema comunica a través de un enlace óptico que puede ser de cualquier longitud de onda (rojo, infrarrojo, verde…) y no es imprescindible que sea de luz coherente (laser). Dependiendo del tipo de luz escogida para la comunicación así serán las prestaciones. Con láser se simplifica el emisor, al no necesitar lentes de enfoque (los módulos laser las llevan incorporadas) ni ajustes complicados. Otra ventaja es que con laser se aumenta el alcance a cientos de metros y se aumenta la precisión a centímetros.
Láser: emisor más sencillo y sin ajustes, largo alcance, alta precisión. Punto visible para ayudar al tirador. Gafas de protección.
Infrarrojo: emisor con lentes y ajuste de enfoque, alcance hasta 10 metros, haz difuso e impreciso. Necesidad de un puntero láser adicional. No es necesaria ninguna medida de protección.

Por que comunicación serie.
Normalmente para enlaces ópticos se usan modulaciones NRZ, pulsos etc. Sin embargo esto complica el hardware y el software del PIC. Transmitiendo los datos serie por RS232 y modulando externamente a 38,5 Khz el hardware y el software son muy sencillos porque puede usarse la UART interna del PIC y el hardware externo es un simple PLL para la detección de las ráfagas de 38,5Khz. Para la transmisión de se aprovecha el oscilador del mismo PLL para generar la portadora y un para de transistores para modularla. El sistema no tiene el alcance ni la inmunidad al ruido que otros pero es mucho más sencillo.

Por que displays LED.
Por precio y disponibilidad. Los displays LED de 7 segmentos son muy comunes, fáciles de conseguir y baratos. El primer prototipo usaba displays reciclados porque era lo que tenía a mano. Los LCD suelen ser más grandes y caros. Aunque el multiplexado de los displays consume bastante potencia de CPU y son menos eficientes, son visibles siempre (excepto con luz solar intensa, pero el entonces tampoco funcionan los detectores) son mas fáciles de leer de un vistazo y le dan un aire retro bastante atractivo.

Por que no hay resistencia limitadoras en el los LED ni en el display.
No son necesarias ya que el firmware del PIC se encarga de limitar la corriente media en los LED a menos de 20 mA. Esto lo hace usando corrienentes de pico altas (al no haber limitación) pero usando ciclos de trabajo variables en el multiplexado se limita la corriente y se facilita variar el brillo del display.

Por que mosfet.
No son imprescindibles. Las primeras versiones usaban transistores bipolares BC548 y BC558. Una mejora es usar mosfet que tienen menos consumo (eliminan VCE ~0,4V de pérdida) y no necesitan resistencias limitadoras en la base. En el modulador su uso tiene más ventajas ya que, al no tener consumo de corriente, no derivan la frecuencia del PLL al extraer la portadora. Como inconveniente son muy frágiles, hay que tomar medidas de protección antiestática al montarlos (yo he averiado un cuarto de los que he montado por tener la punta del soldador derivada).

Es necesario programar los parémetros del arma antes de jugar.
NO. Las armas tienen una EEPROM interna donde se guarda el perfil del jugador y los parámetros del juego. Tras encenderla esta lista para funcionar con los últimos datos memorizados. La única limitación es que no se puede jugar con armas recién programadas y otras con la programación por defecto. Esto es así a propósito par evitar que, en un juego organizado donde cada jugador deba programar su arma según el esquema de juego escogido, alguien pueda resetear su arma y recuperar los parámetros por defecto para recuperar la vida, disparos etc. Al hacer esto esa arma dejará de comunicar con las demás.

Como se cuantos blancos he hecho.
El arma que efectúa el disparo no sabe si ha acertado o no. Sin embargo el arma del jugador que recibe un disparo sabe de que otra arma proviene y lo guarda en memoria. También guarda en memoria el tiro de gracia, el disparo que le mató. Al terminar el juego pueden descargarse los datos de las armas en un PC y cruzarse unos con otros con lo que se sabe quién acertó a quien y quien recibió disparos de que arma y cuantos. También puede verse que arma fue el que mató a cada jugador.

Que es la recamara.
El arma dispara la munición ó energía almacenada en la recámara. Para hacerlo hay que transferirla del cargador a la recámara, de modo automático o usando el pulsador recamara. Incluso cuando el cargador muestra cero puede haber energía o munición en la recámara para realizar otro disparo. Simula la recámara de un arma automática/semiautomática o el percutor levantado en un revolver. En modo potencia variable puede no haber suficiente energía para llenar la recámara con un disparo completo, entonces se muestra PAR por disparo parcial. Si en la recámara hay un disparo de menos potencia que la programada (disparo parcial) parpadea el LED RECAMARA.

Por que tantas opciones de configuración.
Por flexibilidad. Sirven para equilibrar el juego y permitir jugar a novatos con expertos equilibrando las deficiencias de los jugadores con mejores prestaciones de sus armas. También sirven para crear perfiles de jugadores específicos o roles: un francotirador puede tener un arma muy potente pero con una cadencia de disparos baja. Otro jugador puede querer avanzar rápido y estar mucho tiempo a descubierto y escoge un arma con muchos disparos y alta cadencia pero de poca potencia.

Que es el modo oculto.
Es un modo que se activa presionando el pulsador central más de 1,5 segundos y que apaga el display y los LED de los sensores. También desconecta los sonidos y los vibradores. Tiene que estar habilitado en FLAGS0 (Permitir modo oculto). Esto permite al jugador ir en silencio y sin luces que lo puedan delatar. Sin embargo deja de tener información de la munición restante, vida, tiempo etc. Tampoco puede sentir los disparos que recibe. No es un modo “todo ventajas” sino que tiene sus inconvenientes.

Que es el modo especial.
Es un modo en el que no se realizan disparos, sino que se pide vida o cargadores a los puntos de recarga. Se selecciona pulsando puntero + recamara, y se muestra “ESP” en el display. Se deselecciona de la misma forma. Si un arma recibe un disparo de este tipo transferirá un cargador. Puede ocurrir que, durante el juego, alguien realice disparos en ese modo. Solo conseguirá restar cargadores a los contrarios, no vida.

Por que potencia variable.
Cada arma lleva un número determinado de cargadores que permiten un número de disparos de una potencia determinada. La potencia total del arma, la capacidad para restar vida al contrario, es el producto de esos tres valores. En modo normal cada disparo tiene una potencia fija. Si se habilita la potencia variable la potencia de cada disparo puede modificarse, variando a la vez el número de disparos disponibles por cargador para dejar el producto total invariado. Si partimos de una potencia 2 y 20 disparos (la energía de cada cargador sería 40) podemos subirla a 5 y solo podríamos hacer 8 disparos (la energía sigue siendo 40). Si un jugador tiene 50 de vida es necesaria una energía de 50 para matarlo, o bien en un solo disparo de 50 o en 5 de 10…
Si se simula un revólver u otra arma convencional lo normal es que la potencia no pueda variarse. Si se simula un arma de energía futurista es interesante que pueda variarse la potencia. La máxima potencia configurable esta limitada por un parámetro de configuración.

Pueden usarse cargadores físicos.
Existe la posibilidad, desde la versión de hardware 4.0 que usa bus I2C, de conectar memorias 24C01, 24C02, 24C04 ó 24C08 de 128 a 1K bytes. Deben ser de Atmel O ST, no de Microchip que no llevan chip select. Aunque en los esquemas esta reflejado, sin embargo el firmware 4.5 todavía no lo soporta.

Que es el contador de reinicios.
Es un contador que se incrementa cada vez que se inicia un juego, al pulsar. Puede valer de 0 a 255 y no es posible resetearlo. Sirve para evitar trampas, que algún jugador cambie la configuración del arma durante el juego. Este contador puede visualizarse a través del software de programación del PC. Al terminar el juego debe valer una unidad más que al comienzo. Si no es así el arma ha sido reiniciada o recargada durante el juego y eso no esta permitido porque permite recargar el valor de vida, cargadores etc, o incluso variar el perfil del jugador respecto del asignado.

Que significan los LED:
En el encendido del arma, antes y durante la cuenta atrás de inicio de juego, todos los LED excepto “CON CARGADOR” parpadean indicando que no se ha comenzado a jugar.
• DL1 Rojo “FIN DE JUEGO”. Durante el juego permanece apagado. Mientras el arma esta inactiva por haber sido alcanzado por un disparo se enciende. Si la vida alcanza cero parpadea indicando que el fin del juego. Si el tiempo de juego termina se queda encendido fijo.
• DL2 Verde “RECAMARA”. Indica si la recámara esta cargada. Cuando esta apagado el arma no dispara. Parpadeando indica que la recamara esta cargada con un disparo parcial, de menor potencia que la programada.
• DL4 Tricolor “CON CARGADOR”. Apagado indica que no hay cargador. Encendido verde indica que hay un cargador montado. Encendido rojo indica “SIN CARGADOR”, que se han acabado los cargadores. Ámbar significa que se esta usando el último cargador. Verde parpadeando significa que esta seleccionado el modo de transferir cargador. El siguiente disparo será un mensaje de transmisión de cargador, no un disparo real
• DL5 Rojo “MODO AUTO” y DL6 Rojo “MODO SEMI”. Estos dos LED indican el modo de disparo seleccionado.
APAGADOS: Modo manual
MODO SEMI: Modo semiautomático.
MODO AUTO: Modo automático.
MODO SEMI y MODO AUTO: A ráfagas
• DL7 Rojo “SIN ENERGIA”. Encendido significa que se han agotado todos los cargadores y toda la energía incluida la de la recámara. Se acabó la munición. Parpadeando significa que no hay energía suficiente en el cargador para llenar la recamara con un disparo completo a la potencia programada.

Que significan los colores de los sensores.
Actualmente hay cinco secuencias de colores que tienen distintos significados según el estado del arma, pero puden modificarse en el firmware del sensor:
1. Alternancia rojo-azul: Sensor encendido pero sin inicializar por parte del arma.
2. Alternancia 2 rojos-1 rojo: El arma ha inicializado correctamente el sensor, listo para comenzar la cuenta atrás de inicio de juego.
3. Color fijo: Es el color seleccionado para ese jugador (Param.Color). Hay 256 colores distintos mezclando distintas intensidades: 8 de rojo, 8 de verde y 4 de azul.
4. Secuencia 3-2-1 verde: El sensor ha sido apuntado por otra arma (se ha recibido un mensaje correcto de puntero). El vibrador realiza dos cortas vibraciones. Esta función puede desactivarse en FLAGS0 (sentir puntero).
5. Secuencia 1-2-3 roja: El sensor ha recibido un disparo (se ha recibido un mensaje correcto de disparo). El vibrador realiza una secuencia de 6 vibraciones. Esta función puede desactivarse en FLAGS0 (sentir disparo).
6. Alternancia rojo intenso con rojo débil: Fin de juego por tiempo o fin de vida.
Si el arma esta en modo oculto los modos 3, 4 y 5 no se visualizan, quedando los sensores apagados.

Videos improvisados acerca del LaserGame V4.1 Alfa: