Yombstick: El prototipo

Por fin he resuelto el bug que tenía con el prototipo del Yombstick, un joystick USB customizado que estoy haciendo. Así que me he puesto a hacer un post, y me ha quedado bastante largo (30 fotos), porque me he liado a hacer cosas mientras lo escribía. Espero que no sea demasiado tostón.


El bicho Lleva dos microcontroladores, un Atmega1284P para las entradas analógicas, botones, LEDs y demás, y un Atmega16U2 que conseguí soldar hace poco, el cual se encargará de la comunicación USB y de aparecer ante el ordenador como un dispositivo HID con 8 ejes y 8 botones.


De todas formas si veo que con 6 entradas analógicas me basta, usaré un Atmega328P en lugar de un 1284P, que son más baratos y además en este caso irá mejor porque es más pequeño y no hay mucho espacio en la base del joystick para circuitería. Dicho de paso, con un 16U2 y un Atmega328P, el circuito sería análogo a una placa Arduino Uno.


En esta foto se ve la primera prueba en que funcionó el 16U2 como joystick:


1 PrimeraPruebaYombstick


El joystick en sí será un Soyntec Challenger 250, un joystick USB inalámbrico (a 27 MHz) que ya no funcionaba y me cedió mi amigo Álex.


El Yombstick tendrá muchas características notables. En primer lugar, los valores de los ejes, en vez de ser números enteros de 8 bits (con signo, en complemento a 2) como en la mayoría de joysticks comerciales –con un rango de -128 a +127, que se considera suficiente–, serán de 16 bits con el mismo formato, con un rango de -32768 a +32767.


En segundo lugar, le voy a poner un hat al joystick que será analógico, no como los de la mayoría de joysticks, que son simplemente cuatro pulsadores. Para ello usaré medio mando de una conocida consola, o sea una de las palancas con sus dos potenciómetros. El valor del joystick pequeño se sumará al del grande en una proporción de 0.12, lo que servirá en los movimientos de precisión. Y con los 16 bits de resolución supongo que dará buenos resultados.


Lo del valor exacto de 0.12 es porque coincide con lo que suele ser la zona muerta considerada por el S.O. La zona muerta es la posición cercana a la central del joystick, y el S.O. pone valores a 0 por software en esa zona para evitar efectos mecánicos del joystick. A mí me interesa quitar la zona muerta y que la precisión sea buena en el centro. En Linux ya he conseguido quitar la zona muerta, veremos si podré hacer lo mismo en el Windows 7 en el que jugaré a Elite: Dangerous.


En esta foto se ve el 16U2, aún sin su compañero el 1284P:

3 Nucleo USBYombstick


En esta foto se puede ver un detalle del micro 16U2, que está soldado sobre un adaptador a DIP32, y los componentes para hacerlo funcionar: Cristal, condensadores, un LED con su resistencia, y en el conector USB, dos resistencias de 22 ohmios (azules) en las dos líneas de datos:


2 Detalle 16u2Yombstick


Aquí el prototipo ya completo. Los dos cables azules en el borde inferior de la placa blanca son el puerto serie (RX y TX) que une ambos microcontroladores. Por cierto aquí ya está conectado y funcionando (mirad los LEDs verde y rojo, ambos encendidos :-)


4 PrototipoYombstick


Aquí una captura en la que se ve el programa jstest-gtk reconociendo el Yombstick con todos sus ejes y botones. Aquí el eje Y hacía además de hat de precisión para el eje X, sumado como he dicho tras ser multiplicado por 0.12:


6 CapturaFuncionandoPrototipoYombstick

Bueno, a partir de aquí voy a ir escribiendo el post y haciendo las fotos mientras desarmo el Soyntec. Empezamos:


7 Soyntec Challenger 250 Yombstick

Empiezo por desarmar la palanca, que tiene unos tornillos que no había visto –y por tanto creía que sería mucho más difícil instalar botones y palancas customizados.8 Yombstick desarmado 1


Sale bastante fácil y se ven dos placas: una para los botones frontales y el hat, que no me interesan (el plástico del hat sí lo aprovecharé, pero no los botones de debajo)


9 Yombstick desarmado 2


La otra placa es de los botones laterales y el trigger (el gatillo o botón del índice). Ésta sí la debería aprovechar entera, pero los botones del pulgar están muy usados (no hacen ese ¡Click! de cuando nuevos), y como los pulsadores nuevos que tengo yo no coinciden en el patillaje con esos, tendré que hacer un duplicado de la placa y ponerla en el mismo sitio, con el mismo tornillo, ése que se ve encima de la placa en esta foto:


10 Yombstick desarmado 4 placa botones


Aquí se ven las palancas de la consola que tenía guardadas (creo que es de un mando viejo que me regaló mi hermano, no sé de dónde salió):


11 Yombstick palanca del hat


La piececita de plástico que se ve encima del mando y también en la siguiente foto es el hat original del Soyntec (del tipo pulsadores), que pegaré de alguna forma al mando blanco analógico.


12 Yombstick palanca del hat 2


Ahora vamos con la base. Bueno, en realidad ya la había desmontado otro día y ya le arranqué la electrónica original:


13 Yombstick base abierta


En este detalle se ven dos de los potenciómetros –parecen de buena calidad :-), el tercero es interno a la parte móvil y no se ve, pero sí los tres cables que vienen de él. Por otro lado está el acelerador o throttle, bien engrasadito:


14 Yombstick base abierta detalle


Ahora me pongo a desoldar la palanca:


15 Desoldando palanca analogica Yombstick


¡Conseguido! :-)


16 Desoldando palanca analogica Yombstick conseguido


El hat va perfecto. Como tiene un botón (se puede pulsar además de tener los dos ejes analógicos), se me ocurre que puedo usar ese botón para cambiar el eje Y del hat entre el eje Y y el Z del joystick, y mostrar el eje actual con un LED (bicolor quizá). El eje X del hat siempre va asociado al eje X del joystick.


17 Desoldando palanca analogica Yombstick detalle


Ahora voy a hacer la placa de los botones de los pulgares, con pulsadores y cables nuevos. Primero Hago un calco de la placa en otra de topos, cuidando que los botones coincidan con los agujeros (afortunadamente coinciden más o menos con la separación estándar):


18 Haciendo la placa de botones de los pulgares Yombstick


19 Haciendo la placa de botones de los pulgares 2 Yombstick


Aquí ya los botones soldados:


20 Haciendo la placa de botones de los pulgares 3 Yombstick


Aquí ya terminado y puesto en sus sitio. Los botones encajan bien, porque aunque son un poco más gruesos que los originales (menos de 1 mm), la placa es más delgada que la que había, y se ha compensado. Ahora suenan muy bien :-)


21 Haciendo la placa de botones de los pulgares 4 Yombstick


Aquí se ve el tornillo aguantando la placa. En el otro lado del joystick hay una pieza de plástico que aprisiona la placa y le da robustez a los botones.


22 Haciendo la placa de botones de los pulgares 5 Yombstick


Lo siguiente es desmontar la placa del hat:


23 Desmontando el hat 1 Yombstick


Tras desatornillar la placa de los botones queda una plaquita de plástico que se puede aprovechar para colocar los botones y LEDs, y también el nuevo hat analógico:


24 Desmontando el hat 2 Yombstick


Encaja bastante bien en el cuadrado, pero habrá que cortar toda la parte de fuera para que sobresalga lo suficiente. Eso será para la próxima sesión.


De momento me he puesto a hacer los cables para los botones y los ejes que ya tengo: el gatillo, los dos del pulgar, los ejes X, Y y Z y el acelerador:

25 Cables nuevos Yombstick


Para pasar los cables por el centro del joystick lo he tenido que desmontar entero, es bastante intrincadillo…


26 Desmontando el interior Yombstick


Aquí con los cables ya pasados por la pieza interior:


27 Desmontando el interior 2 Yombstick


Montado el palo central en la base, con los cables ya saliendo:


28 Cables sacados Yombstick


Aquí con todos los conectores ya soldados (los potenciómetros ya tenían conectores pero no eran de paso estándar y los he sustituido todos):


29 Cables sacados 2 Yombstick


Y aquí finalmente el trasto ya listo para probar, puesto que si monto la base no me llegan los cables hacia el prototipo de la electrónica, y además éste no cabe en la base.


30 Preparado para probar 30


Lo voy a dejar aquí por hoy. En la próxima entrega la prueba de lo que has visto hasta ahora, y en las siguientes, el circuito con esquemático y el firmware.


Como comentario final, decir que me gusta bastante este joystick por lo modular y customizable que es.


¡Hasta la próxima!