jueves, 30 de abril de 2020

CONTROL DE UN ROBOT CON UN ATARI DE 8 BITS



Cuando yo tenía 13 años, por el año 1981 tuve la gran suerte de que mis padres me regalaran por mi cumpleaños uno de los primeros ordenadores que salieron al mercado, al abrir el regalo me quedé impactado, era un Atari 400 nada más y nada menos, estaba en una caja plateada con las letras de colores degradados, al abrirla lo primero que hice fue oler su interior, el olor a electronica de la época era embriagador. Lo instalé rápidamente en mi habitación, tenía un televisor de tubo de 14 pulgadas que me venía perfecto, junto con el ordenador venía un cartucho para programar en basic, al encender la computadora sintonicé el televisor y al cabo de unos segundos ahí estaba la pantalla azul con su palabra READY junto con el cursor, el ordenador estaba listo y esperaba que yo le dijese algo para funcionar.
Desde ese mismo instante empecé una aventura con mi Atari , aprendi basic, me introduje en sus gráficos, disfruté con sus "player missile graphics" y en mí empezó una pasión por saber programar videojuegos y dominar aquella computadora maravillosa.
Pero en aquella epoca me topé con un problema, había poca literatura sobre mi máquina, no había internet y no podía conseguir por ningun sitio información sobre su sistema, su hardware, la programacion en ensamblador y su arquitectura, toda la información que tenía provenía de los propios manuales, alguna que otra revista de informática de la época y algún libro prestado sin mucha información.
Al cabo de un tiempo me empezó el gusanillo de la curiosidad con un conector que tenía en el costado derecho, ahí se podía conectar la unidad de cassette, la unidad de disco de 5 y 1/4 o la impresora.
Descubrí que ese conector con forma de trapecio y muchos pines se llamaba SIO PORT, tenía una curiosidad enorme de saber como funcionaba, de poder conectar en él alguna cosa que yo hiciera y poder controlarlo desde mi Atari.
Pero como dije antes no tenía información de la arquitectura de mi máquina y de cómo se podía acceder a ese puerto con programación.
Pasaron los meses, años y nunca conseguí como acceder al puerto SIO, al final desistí no solo por la falta de información sino también porque la computación avanzaba y otras máquinas sustituyeron el Atari, seguí estudiando otros sistemas y mi primera computadora la aparté para siempre.
Lo bonito de esta historia es que sigo conservando mi máquina y la misma curiosidad por saber como funciona el dichoso puerto, pues bien, hoy en el año 2020 y gracias a la información que puedo encontrar en internet pude realizar el proyecto que tenía en mente desde los 13 años: controlar algún dispositivo desde el Atari.
El proyecto que os presento en un robot controlado por Arduino, el chasis y los motores son de Lego y el control de los movimientos los hago desde un joystick conectado al Atari de 8 bits, en el antiguo ordenador he conectado al puerto SIO un emisor XBEE para poder enviar la información al robot.






EL CUERPO DEL ROBOT:

Lo primero que hice fue contruir la base del robot en Lego e instalarle dos motores de la serie POWER FUNCTIONS 8883 con un juego de engranajes.
Con sus dos ruedas es capaz de ir hacia adelante y hacia atrás, los giros los hace girando una rueda hacia adelante y la otra hacia atrás.










EL CONTROL DE LOS MOTORES:

Cada motor posee una caja reductora y 4 conexiones para funcionar, una de ellas es la alimentación, trabajan a 9V, la otra es la masa GND y los dos cables centrales llamados C1 y C2 son para el control de giro (foward y reverse). En mi robot los motores van alimentados a 11,1V, así utilizo la alimentación de una bateria LIPO directamente en ellos.

Batería LIPO de 11,1V.



Conexiones cable motor Lego.



Para el control de los dos motores utilizo un DRIVER comercial en puente de H dual, el L298.







En la entrada VMS se conecta la tensión de la bateria, el propio DRIVER posee un regulador de tensión a 5V para la propia lógica y en los conectores señalados como MOTOR A y MOTOR B se conectan los cables C1 y C2 del motor de Lego.
En los pines EN_A y EN_B se intruduce una señal PWM en cada uno para el control de la velocidad y en los pines IN1, IN2, IN3 Y IN4 se introduce la lógica para el control de giro, movimiento hacia adelante y movimiento hacia atrás.


EL PUERTO SIO, PINES, PROGRAMACIÓN Y CONEXIÓN A UN XBEE:


El puerto ATARI SIO (serial input/output) es la forma que tienen las computadoras Atari de 8 bits para la comunicación con sus periféricos, es un puerto serie anterior a los puertos de las computadoras actuales, pero se puede programar en ATARI BASIC para hacerlo compatible con los puerto serie actuales. Posee 13 pines y solo 4 de ellos los usaremos para el control del robot.


Puerto SIO.


Cable SIO con el Xbee.




Uso dos XBEE series 2 para la transmisión de datos desde el Atari al robot. La sicronización de los dos módulos XBEE no lo explico aquí, hay muchas páginas que explican muy bien como sincronizarlos y empezar a trasmitir entre ellos.


También utilizo dos módulos para insertar el XBEE en él, lo podéis conseguir en Bricogeek o Sparkfun


Módulo explorer.


La programación en ATARI BASIC del puerto SIO para poder usarlo como un puerto serie actual es muy sencilla, el fragmento importante es el siguiente:


53760                Tone of Voice 1 (SOUND 0)
53761                Distortion and Volume of Voice 1
53762                Tone of Voice 2 (SOUND 1)
53763                Distortion and Volume of Voice 2
53764                Tone of Voice 3 (SOUND 2)
53765                Distortion and Volume of Voice 3
53766                Tone of Voice 4 (SOUND 3)
53767                Distortion and Volume of Voice 4
53768                Tone "clock" control


Se configura a 9600 baudios gracias a los pokes 53767,53764, 53766 y 53768.
El poke 53770 resetea los bits 5 -7 del registro de estado del puerto serie en 53775 a uno.
El poke 53775 es el SKCTL, controla la configuración del puerto serie.
El poke 53773 es el serial out, si introducimos un número en la variable "A" saldrá por el puerto serie.
Como ejemplo, si queremos enviar al puero serie el caracter "F" escribiremos su código ASCII:

poke 53773, 70


Con estas 5 líneas de programación en ATARI BASIC podéis enviar cualquier caracter por el puerto serie del Atari, en mi proyecto se envía a un Xbee que a su vez lo transmite al robot a otro Xbee conectado a un Arduino Uno, este recibe el caracter y ejecuta lar órdenes que le he enviado.
Aprovecho el pin 10 del SIO PORT para alimentar a 5V el Xbee.


 
Esquema de los 4 pines usados en el puerto SIO al Xbee.

El Xbee en el robot, recibe la información desde el Atari.


EL PROGRAMA EN ATARI BASIC:

El robot lo muevo a las órdenes de un joystick conectado al Atari, si muevo el joystick hacia adelante enviará en caracter "F" al puerto serie, si lo muevo hacia la derecha enviará el caracter "R", y así en las cuatro direciones, tambien he incluido el botón de disparo que al accionarlo suena un buzzer en el robot, el caracter que envío para el botón es el "C" y al dejar de apretarlo envía el caracter "N".
Utilizo una variable llamada FL (flag) para que cuando el joystick este en reposo envíe solo una vez el caracter "S", así si el joystick se queda en reposo mucho tiempo evito que continuamente se envíe en caracter "S" al puerto serie y sature el Xbee.

Para cada posición del joystick existe un número definido, de esta manera podemos saber en cualquier momento que movimiento se está ejecutando en él.
Las posiciones del joystick con sus respectivos números los vemos en el siguiente dibujo:


Números asignados para cada movimiento del joystick, el 15 es en estado de reposo.


Caracteres enviados al puerto serie en función de la posición del joystick.


Con la información de las posiciones del joystick y el fragmento de configuración del puerto serie, he creado el siguiente programa en Atari Basic para detectar la posición del joystick y enviar un caracter al puerto serie.

Programa en Atari basic.


Al ejecutar el programa se muestra una pantalla negra con letras grandes en amarillo indicando lo que el robot está haciendo en ese momento y con una ventana azul en la parte de abajo de la imagen se muestra el numero de movimiento del joystick:

Programa en el Atari en ejecución.





EL PROGRAMA EN EL ARDUINO:

Ahora vamos a introducir el siguiente programa en un Arduino Uno, el funcionamiento es muy sencillo, recibe por el puerto serie los caracteres enviados por el Atari y dependiendo el caracter que recibe hace una llamada a una rutina de movimiento de los motores.
Dependiendo el caracter recibido hace la llamada a la rutina de motores cambiando los parametros de la función, son cuatro bits a nivel alto o bajo y lo que hace es enviar estos bits a través de los pines del Arduino 8, 9, 12 y 13 al driver de los motores.
Seguramente estaréis pensando que con dos pines del Arduino y un inversor nos ahorraríamos dos pines, pero quise evitar el inversor y hacerlo sencillo para que lo entendáis mejor.
Por los pines 10 y 11 envío el PWM para la velocidad de los motores, aquí se deben ajustar para cada motor, existe una tolerancia y los motores no giran a la misma velocidad con el mismo PWM, ajustarlo para que el robot vaya en línea recta.
En el pin 6 también se envía otro PWM para excitar el buzzer y pueda sonar al recibir el caracter 'C'.



/* Control robot Lego vía Atari 8 bits v3.0 */
/* Sergio Curci 2020 */
#define pwm_motor_der 11
#define pwm_motor_izq 10
#define pwm_claxon 6
#define sentido_motor_d_bit0 13
#define sentido_motor_d_bit1 12
#define sentido_motor_i_bit0 9
#define sentido_motor_i_bit1 8
char dato;
char bit0;
char bit1;
void setup() {
  Serial.begin(9600);
  pinMode(pwm_motor_der,OUTPUT);
  pinMode(pwm_motor_izq,OUTPUT);
  pinMode(pwm_claxon,OUTPUT);
  pinMode(sentido_motor_d_bit0,OUTPUT);
  pinMode(sentido_motor_d_bit1,OUTPUT);
  pinMode(sentido_motor_i_bit0,OUTPUT);
  pinMode(sentido_motor_i_bit1,OUTPUT);
}

void loop() {
  analogWrite(pwm_motor_der,110);
  analogWrite(pwm_motor_izq,110);
  if (Serial.available()>0){
    dato=Serial.read();
    switch (dato) {
  case 'F':
      motores(HIGH,LOW,LOW,HIGH); /* Mueve los motores hacia adelante */
  break;
  case 'B':
      motores(LOW,HIGH,HIGH,LOW); /* Mueve los motores hacia atras */
   break;
  case 'R':
      motores(LOW,HIGH,LOW,HIGH); /* Gira a la derecha */
   break; 
 case 'L':
      motores(HIGH,LOW,HIGH,LOW); /* Gira a la izquierda */
   break;
  case 'S':
      motores(LOW,LOW,LOW,LOW); /* apaga los motores*/
   break;
  case 'C':
      analogWrite(pwm_claxon,150);
   break;
  case 'N':
      analogWrite(pwm_claxon,0);
   break;     
    
    }
  }
  }
/* Rutina para enviar los bit a la placa de control
 de motores y ejecutar los movimientos */
void motores(char d_bit_0, char d_bit_1, char i_bit_0, char i_bit_1){
  digitalWrite(sentido_motor_d_bit0,d_bit_0);
  digitalWrite(sentido_motor_d_bit1,d_bit_1);
  digitalWrite(sentido_motor_i_bit0,i_bit_0);
  digitalWrite(sentido_motor_i_bit1,i_bit_1);
} 
 
 
 
 
 
Arduino Uno en el robot.
 
 
EL ESQUEMA DEL ROBOT:


Esquema del robot.




FOTOS Y VÍDEOS:














sábado, 30 de marzo de 2019

MÁQUINA ARCADE CON RASPBERRY PI




Si, ya sé que es otro tutorial para hacer una máquina arcade, pero es mi ilusión explicar con detalle un proyecto que llevaba pensando desde hace un tiempo, quiero compartir mi trabajo para conocimiento de todos y que podáis construir una máquina fácilmente y sin problemas.
Así que vamos a empezar sin más preámbulos.
  

Hardware y software.

Primer paso, el sistema operativo RETROPIE:
 
Lo primero que vamos a necesitar en una placa Raspberry Pi que va a ser el corazón de nuestra máquina y una memoria microSD de 32 GB o 64 GB en donde vamos a instalar el sistema operativo RETROPIE basado en raspbian. El sistema operativo puede ejecutar los diferentes emuladores que queramos instalar y además configurar un montón de parámetros.
Yo instalé dos emuladores: Atari y Mamen para los juegos clásicos de arcade de los años 80.





Para conseguir el sistema operativo Retropie debemos ir a la página oficial (https://retropie.org.uk/) y bajar la imagen dependiendo del modelo de Raspberry que tengamos y guardarla en una carpeta que hayamos creado.






Lo siguiente es instalar el sistema operativo en la microSD y para ello usaremos un programita llamado Etcher donde lo podemos descargar desde aquí  (https://www.techspot.com/downloads/6931-etcher.html).
Es muy sencillo usar, lo primero que debemos hacer es introducir la microSD en un dispositivo de lectura y escritura (mi ordenador tiene una ranura para tal fin) y la formateamos con otro programa llamado SD Memory Card Formatter que lo conseguimos aquí (https://www.sdcard.org/downloads/formatter_4/eula_windows/index.html), una vez formateada la microSD usamos el Etcher para instalar Retropie.




 Ahora que tenemos instalado Retropie en nuestra microSD la insertamos en la ranura que tiene por debajo la Raspberry.
Ahora bien, antes de arrancar la Raspberry debemos conectar en ella un monitor vía HDMI y una fuente de alimentación  de 5V que dé suficientes amperios, la que recomienda el fabricante es de 2,5 Amp, yo recomiendo que pueda dar más de 5 Amp de lo contrario vais  a tener problemas con un mensaje de error que sale continuamente en forma de símbolo de rayo amarillo en la esquina superior derecha de el monitor.
La fuente que usé para empezar a investigar es la misma que lleva la máquina arcade, es una fuente idónea para alimentar la Raspberry y el resto de la máquina, así que no vacilar y comprarla.




La fuente y resto de materiales que necesitas para la máquina lo puedes comprar aquí  (https://www.arcadexpress.com/).
Necesitas hacer un cable con usb Micro-B para alimentar la Raspberry, consigue un cable cualquiera de cargar los teléfonos móviles, cortas el conector grande usb que va al cargador y descamisas los cables rojo (5V) y negro (GND), grímpalos a dos conectores faston de horquilla para así conectarlos bien en los terminales de la fuente de +5V y GND.
En el terminal FG conectas la tierra de la red eléctrica y en los otros dos AC1 y AC2 el neutro y la fase.


Pues si ya tienes todo conectado enchufa la fuente y la Raspberry empezará a arrancar  y verás como se iluminan los leds de la placa y a la vez va saliendo la imagen en el monitor.




Si todo va bien y después de varias pantallas en el monitor al final debe de quedar una imagen como la siguiente:





Desconecta la Raspberry y seguimos con el segundo paso.


Segundo paso, los emuladores y sus roms:

Ahora vamos a instalar los emuladores que desees que se ejecuten en tu máquina arcade, yo puse dos: Mame y Atari.
Para hacer esto debemos acceder al sistema de carpetas que genera Retropie en su instalación en la microSD, lo hacemos vía red conectando un cable de red en el conector destinado a tal fin en la Raspberry, se puede hacer por medio de wifi pero es complicada la configuración, es más sencilla la conexión con cable, no requiere configuración alguna.








Ahora alimentamos de nuevo la Raspberry y esperamos a que termine de arrancar. En nuestro ordenador si accedemos en la carpeta de red debe aparecer un dispositivo llamado RETROPIE como en la siguiente imagen:




 Ahora accedemos al dispositivo y aparecerán 4 carpetas llamadas bios, configs, roms y splashscreens:




Las carpetas que nos interesan son la roms y la bios, si accedemos a la carpeta roms vamos a ver varias carpetas donde poder introducir los diferentes emuladores con sus roms:


Vamos a empezar por la carpeta del Mame llamada mame-mame4all, en ella pondremos el emulador tal como se descarga y sus roms en formato comprimido, asi de sencillo.
Para descargar el emulador de Mame óptimo para Retropie llamado mame4all-pi lo podéis hacer aqui (https://github.com/RetroPie/RetroPie-Setup/wiki/MAME).
Una vez descargado copiarlo dentro de la carpeta mame-mame-4all.

Las roms adecuadas para el mame4all-pi son Mame 0.37b5 Roms And Bios se encuentran para descargar aquí, (https://archive.org/details/Mame0.37b5RomsAndBios) son alrededor de 3000 roms.Una vez que hayan bajado las copiamos todas en la carpeta mame-mame4all.




Para tener también el emulador de Atari de 8 bits debemos hacer los mismo pero en la carpeta que se llama  atari5200, en ella introduciremos el emulador de Atari llamado Atari800 y las roms que más os gusten. Existe una carpeta llamada atari800 pero a mí no me funciona si introduzco en ella el emulador y las roms, no me he esforzado mucho en averiguar por qué.
Para conseguir el emulador del Atari se puede descargar aquí. ( https://github.com/RetroPie/RetroPie-Setup/wiki/Atari-800-and-5200).
Para las roms yo recomiendo esta página:  http://www.atarimania.com/atari-400-800-xl-xe.html.

Que no se me quede en el olvido deciros que el emulador del Atari necesita unas Bios para funcionar y que debéis introducirlos en la carpeta dentro de RETROPIE llamada Bios.



Para descargar las bios lo podéis hacer desde aquí. (http://atari.vjetnam.cz/index.php?frame=roms).


Tercer paso, el adaptador de botones y joysticks:
 Ahora que tengo los emuladores y roms que deseaba pasaré a explicar como se conectan los dos joysticks y botones que usé en mi máquina.
El adaptador que utilicé para conectar los botones y joysticks se llama XM-10 dual players controller de Ximotek, este viene con un conjunto de cables para su instalación con los botones y joysticks, se consigue en varios sitios y su precio es barato.


XM-10 dual players controller de Ximotek.


 En mi máquina instalé dos joysticks, 6 botones primer jugador, 6 botones segundo jugador, 1 botón player uno, 1 botón player dos, 1 botón de regreso (back), 1 botón de coin, 1 botón de start y 1 botón de select.
La disposición de los botones y joysticks en la placa de mi máquina es la siguiente:

Disposición de los botones y joysticks

Para el jugador de la izquierda de la máquina (P1) los botones van en esta disposición (en verde claro en la placa):





El joystick izquierdo su disposición es de sentido común, en la placa lo he pintado en rosa.
Los pines 18 y 20 en naranja son para el player 1 y player 2 respectivamente.
Para los pines de color verde oscuro la disposición es:
Pin 10 botón START color verde.
Pin 12 botón SELECT color morado.
Pin 14 botón COIN color amarillo.
Pin 16 botón BACK color naranja.





Para el jugador de la derecha (P2) la disposición es la misma.

Yo aconsejo hacer el panel de botones y joysticks primero y luego configurar la máquina, la configuración es muy sencilla y de paso os digo que podéis configurar los botones de otra manera, los únicos pines que en principio debemos respetar son los de los joysticks y los 6 botones por jugador, el resto de botones podéis configurarlo como queráis, Retropie es muy configurable y el emulador de Mame también.

Además he configurado un teclado vía USB por comodidad y porque el emulador de Atari lo requiere, podemos configurar un teclado bluetooth que lo explico más adelante.

La placa XM-10 dual players la conectamos a un puerto USB de la Raspberry, el teclado a otro puerto USB, los botones y joysticks como os dije antes, un monitor al puerto HDMI y la alimentación a la placa Raspberry.






Se conectan el normalmente abierto y el común (GND).





 Ahora enchufamos la fuente y la Raspberry arrancará, después de varias pantallas al final queda así:






Como podéis observar Retropie ha detectado 1 gamepad (1 jugador), más adelante os explico como se configura para tener 2 jugadores.

Ahora vamos a configurar los botones y el joystick para el jugador 1 (P1), más adelante cuando se configure para dos jugadores aparecerán en pantalla el resto de botones y el otro joystick. Tenéis que mantener pulsado cualquier botón y entrará automáticamente en el modo de asignación de botones y joysticks:




 

En D-PAD UP, D-PAD DOWN, D-PAD LEFT y D-PAD RIGHT se configura el joystick moviendo este, y el resto de botones sigue las instrucciones en la pantalla para configurar tu controlador. Si se te acaban los botones, mantén presionado un botón para omitir cada uno que no uses. Cuando llegues a OK presiona el botón que acabas de configurar como “A”, (es el mismo botón que va al pin 2 de la placa).
Una vez pulsado el botón "A" (OK) saldrá al MAIN MENU, para configurar el teclado ir a la opción CONFIGURE INPUT, aceptar con el botón letra "A" e irá al menú de configuración, mantener oprimida cualquier tecla del teclado y se abrirá automáticamente la configuración de este, como antes sigue las instrucciones en la pantalla y cuando llegues a OK presiona el botón que configuraste como "A" y saldremos otra vez al MAIN MENU.
Ahora vamos a la opción QUIT y pulsamos el botón "A" y saldrá otro menú, aquí elegimos la opción RESTART EMULATIONSTATION, pulsamos el botón "A" y preguntará YES o NO, escogemos YES y la Raspberry se reiniciará.
Para ir hacia atrás en los menús pulsar el botón que hayas configurado como "B".





Una vez que termine de reiniciarse quedará una pantalla igual que esta:






En esta pantalla os podéis mover con el joystick lateralmente y escoger el emulador que más os guste con el botón de la letra "A".

Tenéis las opciones de Retropie, Atari y Mame, si escogéis un emulador saldrán las roms para jugar, si estáis sobre la opción RetroPie saldrá un menú del sistema para configurar lo que queráis.

Configuración de la  XM-10 dual players para dos jugadores:

Es muy sencillo, sólo tenéis que poner una línea de comando en el archivo cmdline dentro de la carpeta Boot de RetroPie.

La línea de comando que debéis añadir es esta:

       usbhid.quirks=0x16c0:0x05e1:0x040      

 Hay tres formas de hacerlo: vía red como hice antes, vía insertando la microSD en el ordenador y vía File Manager que tiene RetroPie.

Yo lo hice insertando la microSD en el ordenador, al hacerlo ejecutas el explorador de archivos de windows y te aparece el disco boot y dentro de él el archivo cmsline:








El siguiente paso es editar el archivo cmdline e introducir la línea de comando que enseñé antes:



 Guardar y listo. 

No hay que hacer nada más, os dejo un enlace donde lo explican:

https://github.com/RetroPie/RetroPie-Setup/wiki/Xin-Mo-Controller

Ahora solo queda reiniciar la Raspberry (desconectando y conectando la alimentación), la pantalla final será donde están las opciones de los emuladores y la de RetroPie.







Posicionarse sobre la opción de un emulador y pulsar el botón "START" y saldrá el menú: MAIN MENU, escoger la opción CONFIGURE INPUT y saldrá la pantalla de configuración de los botones y joystick otra vez pero detectando en esta ocasión para dos jugadores.



 La otra forma de hacerlo es por medio del FILE MANAGER de RetroPie, debéis escoger la opción de RetroPie y pulsar el botón "START" desde la pantalla principal:



Saldrá un menú con opciones de configuración de RetroPie y la opción de FILE MANAGER, escogerla y pulsar el botón "A".

A continuación tenéis un vídeo que explica como se edita el archivo cmdline vía file manager:




El botón de coin, player 1 y player 2.

Hay otras opciones para configurar la pantalla, emulación y etc..., y muchos lugares donde te pueden explicar como se configuran el resto de opciones o simplemente investigar vosotros mismos.
Lo que si voy a explicar es para el botón de "COIN", la idea es que, cuando se pulse dicho botón el juego que estemos ejecutando lo interpretará como si echamos una moneda (1 crédito) y así poder jugar, como en las antiguas máquinas de arcade.
Aquí entra en juego el menú de configuración del MAME, la forma de entrar en el es la siguiente:
En la pantalla principal escoger el emulador MAME, al pulsar con el botón "A" entramos en la lista de juegos (roms), escoger un juego cualquiera y ejecutarlo pulsando otra vez el botón "A".
Una vez que el juego esté en marcha y usando el teclado pulsamos la tecla tabulador y saldrá un menú para configurar el emulador MAME en general o sólo el juego que estamos ejecutando entre otras opciones:




Escoger INPUT (GENERAL) con la tecla ENTER y saldrá un menú general del MAME. Para moverse por el menú se usan las flechas del teclado. 



Bajar por las opciones del menú usando las flechas hasta encontrar la opción de COIN 1 y pulsar ENTER:



Se visualizan dos flechas laterales indicando que esperan que se pulse un botón o tecla del teclado, en el caso de mi máquina arcade pulsé el botón amarillo (el que está conectado al pin 14 de la placa XM-10 dual players). Mantener pulsado el botón hasta que aparezca entre las dos flechas laterales el botón que corresponde:







Luego salir con la tecla ESC del teclado pulsándola dos veces para salir al juego, una vez ahí probamos si funciona el botón y veréis como detecta que se ha introducido una moneda.
Para configurar los botones de PLAYER 1 y PLAYER 2 debemos hacer lo mismo pero esta vez escogiendo las opciones de 1 PLAYERS START y 2 PLAYERS START  con sus botones respectivos.
En principio, la máquina ya estaría configurada en un modo básico, funciona perféctamente y podéis jugar sin problemas.


Ahora, tener en la máquina un botón de COIN está muy bien para jugar en familia, podéis jugar decenas de veces aquellos juegos de los 80´s sin introducir una moneda y disfrutar un motón.
Pero, si queréis presumir con vuestros amigos y visitas de una auténtica máquina arcade debéis de instalar un monedero. Introducir la moneda cuando el juego pide INSERT COIN  y poder jugar hará las delicias de todos y más si han vivido la autentica época de los locales recreativos.


Monedero electrónico.



Cuarto paso, la instalación del monedero: 


Hay dos tipos de monederos: los mecánicos y electrónicos.
El que instalé en mi máquina es el electrónico, este permite configurar el tipo de moneda que se va a introducir y detecta si la moneda es falsa o equivocada devolviéndola.
Funciona con 12V, tiene una salida de un pulso de +-5V cuando detecta una moneda válida y se puede conectar un contador mecánico de monedas.

Para configurar que moneda es la que se quiere debemos poner una moneda igual en el siguiente compartimento señalado con la pegatina amarilla, se desatornilla un tornillo, se coloca la moneda y se vuelve a poner el tornillo. Yo puse 1 euro.

Moneda de 1 euro, sólo aceptará esta moneda.



El siguiente paso es conectar el cable rojo a +12V y el negro a masa, los dos cables grises son para poner un contador mecánico de monedas:


Cables monedero.



Contador.

Contador.


El cable blanco debemos conectarlo a un circuito con un relé que se puede comprar o hacer.
Este circuito simula que se ha pulsado el botón de COIN, al pulsar dicho botón lo que hacemos es poner a masa el pin 14 de la  XM-10 dual y así envía la orden al MAME de que se ha introducido una moneda.
El relé del circuito simula la pulsación del botón poniendo a masa el pin 14 de el adaptador XM-10 dual, yo he usado como relé el circuito integrado cmos CD4066, es de estado sólido y fácil de usar.
Os dejo un esquema de como está hecho en mi máquina, instalé un conmutador para poder activar el monedero e invalidar el botón o viceversa. Cuando juego con mi familia activo el botón de COIN, cuando vienen visitas activo el monedero y tendrán que pagar para jugar.


Circuito monedero.

CD4066

Conmutador.




Quinto paso, la instalación sistema de sonido: 

El sistema de sonido es la parte más sencilla de la máquina, sólo necesitamos un amplificador, dos altavoces y un cable jack estéreo a dos RCA.

El amplificador que he usado lo compré en una tienda online especializada en material arcade, tiene una impedancia de salida de 4 ohm para dos altavoces, una alimentación de 12V y una entrada de dos RCA estéreos.










El par de altavoces los compré en la misma tienda online, son de impedancia 4 ohm y 5W, he de decir que suenan muy bien.
Soldé con estaño cada uno a su pareja de cables rojo y negro especiales para altavoces y estos cables se conectan a la salida de altavoces del amplificador.


Altavoz izquierdo.


Altavoz derecho.

 


La Raspberry tiene una salida de audio estéreo vía jack, ahí conectamos el cable que en un extremo tiene un conector jack estereo y en el otro extremo dos RCA rojo y negro que conectaremos al amplificador a sus respectivos colores.
Debo de decir que el cable debe de ser de muy buena calidad, lo más apantallado posible y cuanto más corto mejor. Si no me hacéis caso con esto os aseguro que vais a oír ruidos parásitos a montón, de hecho no vais a oír nada bien los sonidos de los juegos.


Conector jack estereo en la Raspberry.




 
Sexto paso, el monitor: 

Con el monitor tengo poco que decir, lo adquirí en una tienda de segunda mano, es de led marca Samsung con entrada HDMI y de 17 pulgadas.

Lo importante es encontrar un monitor que conserve el encendido, que quiero decir con esto, que si lo apago desde la entrada de tensión de 220V y al volverlo a conectar a la red eléctrica este se encienda sin tener que pulsar ningún botón de encendido.

Es importante que sea así debido a que la máquina arcade la enciendo desde un interruptor general y debe encenderse el monitor sólo.


Septimo paso, la alimentación:

La fuente que uso para alimentar toda la máquina la expuse al comienzo del post, la compré en Aliexpress y es perfecta para máquinas de este tipo, tiene dos tensiones de +5V y +12V y es capaz de entregar una corriente muy alta para los 5V. Se conecta a los 220V de la red.
Aquí lo único que tenéis que tener es la habilidad para cablear, engastar y poner diferentes contactos. Un buen trazado de cables hace que la máquina tenga una presencia y una robustez que pueda durar mucho tiempo.


Fuente alimentación y cableado.

















EL MUEBLE


Aquí os tengo que ser sinceros, el mueble lo adquirí ya hecho por un precio razonable, me enviaron por correo todas las piezas en madera DM de 16mm cortadas  junto con los tornillos y dos bisagras de piano.
Por si os interesa el lugar donde lo compré se llama Talentec (https://talentec.es/).
Me enviaron la parte de arriba (bartop), el pedestal con su puerta y una repisa interior junto con dos metacrilatos (para la pantalla y el panel de control).


Panel de control con el frontal y metacrilato.



Los vinilos si no queréis hacerlos vosotros también podéis pedirlos a Talentec con varios diseños para escoger.
Las razones de por qué no hice el mueble son varias, me hubiese gustado mucho hacerlo, inclusive hice los planos con sus medidas, pero luego me di cuenta que como carpintero soy un poco torpe, y cortar los metacrilatos y darle forma no es tarea fácil
Además, he de añadir que no tengo un lugar para cortar las maderas (el salón de mi casa no lo vi muy adecuado) y cortar con una caladora en el salón me puede costar el divorcio. Tampoco tengo una caladora y una biseladora, herramientas muy necesarias y con un coste añadido sumado a las tablas que debía comprar y resto de materiales, al final hice las cuentas para una sola máquina que iba a hacer y opté por comprarla ya hecha.
Lo único que hice en el mueble fue añadirle 4 botones más en la parte delantera, un conector por debajo de el panel de control para conectar un teclado usb, un agujero entre la bartop y el pedestal para pasar cables, cortar un rectángulo en la puerta del pedestal para empotrar la puerta del monedero y cuatro tornillos entre la bartop y el pedestal para que se quede todo en un bloque.

Poco a poco fui construyendo el mueble con atención a que debía instalar o pintar primero.

La bartop.
Antes de seguir poniendo más piezas pinté en color gris partes de la bartop y el pedestal, además encargué un cristal para poner adelante del monitor, prefiero un cristal que es más rígido y limpio que el metacrilato que me enviaron. 
Dibujé con un rotulador en el cristal un rectángulo con las mismas medidas que la pantalla del monitor y así poder taparlo y pintar con negro todo el cristal.

























Mientras construía el mueble hacía pruebas de posicionamiento del monitor con él encendido y un juego ejecutándose, me encanta 1942, lo jugué muchas veces en los 80.





Lo siguiente fue poner el vinilo en el panel de control, este tiene un dibujo que debe coincidir con los agujeros en la madera para los botones, usé una lámpara para ver como coincidían los agujeros con el dibujo del vinilo para ajustarlo y fijarlo. Los vinilos se pegan con mucho cuidado despegando el papel que protege el pegamento, a medida que se va retirando este papel se va pegando con un rectángulo de plástico forrado de fieltro.
















Para colocar los joysticks en el panel de control usé tuercas en T para una fijación firme, además proporciona un fácil desenroscado a la hora de cambiar el joystick sin dañar la madera. Cada tornillo de los joysticks tiene una arandela de presión grower.

Tuerca en T.





























El panel de control con su vinilo, metacrilato, joysticks y botones tipo americano de 28mm de diámetro inferior.







Botón tipo americano.




En el panel frontal hice 4 agujeros más de 28mm con una broca tipo paleta para madera,  al final tengo 6 botones frontales: START, SELECT, COIN, BACK, PLAYER 1 Y PLAYER 2.








Lo siguiente es poner el cristal por las líneas biseladas de 3mm en la madera y luego  atornillar las maderas laterales, después se debe acoplar el monitor para que coincida con el rectángulo en el cristal. Con el mueble viene una tabla para fijar el monitor en esta con 4 agujeros en formato vesa, atornillar el monitor a esta tabla.
Una vez que tengáis el monitor centrado en el cristal marcar bien la tabla de este con las maderas laterales para luego atornillarlo.
Os recomiendo poner en el marco del monitor un fieltro pegado para que haga de almohadilla entre él y el cristal e impedir que entre polvo adentro. Limpiar bien el cristal interiormente y la pantalla de monitor antes de fijarlo, no dejar nada de polvo.



Tabla sujetando el monitor.


Señalar bien con las esquinas metálicas para luego atornillar.



Ahora le toca el turno a la luz de la marquesina, no presenta ninguna dificultad, es simplemente colocar un par de soportes donde va ir encajado el tubo de leds, funciona a 220V.
A la vez coloco los altavoces y sus embellecedores.















Hacer el rectángulo en la puerta del pedestal para el monedero fue fácil, usé una caladora que me prestó un amigo. 
Luego puse el vinilo en la puerta, al ser grande me costó un poco para que quede liso y sin burbujas de aire, hay que tener mucha paciencia y estar muy relajados.
Al final empotré la puerta del monedero, puse la bisagra de piano atornillando esta a la puerta y al pedestal, coloqué una cerradura en la puerta.





















La distribución de los componentes dentro de la máquina lo podéis hacer como os guste, pero teniendo en cuenta:
- Usar la mínima extensión de cable.
- Los componentes con más probabilidad de que se dañen ubicarlos en donde sea más   fácil acceder y retirar.
- No juntar componentes que generen calor.
- No juntar componentes que puedan generar interferencias y ruidos parásitos.
- Cablear ordenadamente y no dejar cables con tensión mecánica.
- Tiene que haber ventilación.




Cables pasando al pedestal de la máquina.

Base de metal a tierra para eliminar interferencias.











 


En la puerta trasera para acceder a los componentes de la bartop le he hecho varios orificios para que ventile el interior usando un ventilador de 12V, el aire sale al exterior.
También coloqué la bisagra de piano y cerradura.






Ventilador de 12V.




Tuercas autoblocantes.





 
Bisagra de piano en la puerta trasera bartop.
 
Orificios ventilador y los tornillos que lo sujetan.


Cerradura.



Para finalizar puse los vinilos laterales con mucha paciencia, primero midiendo bien y luego fijándolos a un punto para ir poco a poco, iba desprendiendo el papel del adhesivo y a la vez alisando con un rectángulo de plástico forrado con fieltro para que no queden burbujas de aire.
También coloqué el vinilo en la marquesina y por último coloqué los perfiles.
He usado pegamento de contacto y un secador de pelo para calentar los perfiles mientras los colocaba para que estos cogieran las formas curvas del mueble. Sujetaba los perfiles con celo de carrocero hasta que se secase el pegamento.


Pegamento de contacto.





El calentador ayuda a moldear el perfil.

Rectángulo de plástico con fieltro.





CONFIGURACIÓN TECLADO BLUETOOTH: 

 La configuración de un teclado bluetooth es muy sencilla, debéis tener conectado un teclado USB a la Raspberry y hacer los siguientes pasos:

Desde la pantalla principal seleccionar RetroPie, podéis moveros con el joystick y pulsando botón "A" o con el keypad del teclado y oprimir la tecla "A".





Aparecerá la siguiente pantalla, seleccionar bluetooth:




A continuación accedemos a un menú y seleccionamos la primera opción:



Empezará la búsqueda del dispositivo, tener encendido el teclado bluetooth:





Si encuentra el dispositivo lo mostrará, seleccionarlo y pulsar ENTER:




Pregunta que tipo de dispositivo es, elegir Keyboard only:



Ahora pedirá que teclee un número y luego pulse ENTER:




En unos segundos se conectará y mostrará que ha sido un éxito, si no es así saldrá un error.
El error puede ser debido a que en el momento de introducir el código y pulsar ENTER se ha hecho lentamente, hacerlo rápido.
Ya tenéis un teclado bluetooth configurado y listo para usar en vuestra máquina recreativa.
Quitar el teclado conectado al puerto USB.

LOS JOYSTICKS:

Son de tipo ZIPPY, por la parte de abajo tienen un soporte de plástico para configurar el tipo de movimiento, se quitan con unos tornillos. Yo los quité por completo para tener más sensibilidad.

Con soporte.


Sin soporte.











 
Y ESTO ES TODO AMIGOS.
 
Ya sé que queda mucho por explicar, como poner otros tipos de mandos y el resto de las configuraciones, pero este post sería interminable.
Os dejo a vosotros seguir investigando para poner más a punto vuestra máquina.
La idea era explicar la base de su construcción, y desde ese punto  cada uno que añada y mejore aspectos técnicos y estéticos.
Espero que os haya gustado, cualquier duda o pregunta no dudéis en contactar conmigo.
Gracias.