• Foros
  • Inicio
  • Biblio
  • Vuelos
  • Buscar
    Buscar
  • Entrar
  • General
  • Presentaciones
  • Academia
  • Reactores
  • Helicópteros
  • Históricos
  • Av Comercial
  • Espacio
  • Videojuegos
  • Hardware
Hardware

Construccion de panel con Arduino y MMJoy2

User avatar
Angel
Invitado

Construccion de panel con Arduino y MMJoy2

hace 6 meses

Construccion de panel con Arduino y MMJoy2

hace 6 meses
Hola de nuevo, pensaba que ya habia cerrado la trilogia de contruccion de paneles con Leo Bodnar , con Arduino + DCS Bios y con Arduino y la libreria Joystick pero acabo de conocer otro método muy recomendable usar MMJoy2 firmware y software compatible con placas Arduino (con soporte usb) como Arduino Leonardo y pro micro.

Acabo de empezar a usarlo y todavía estoy abrumado por la cantidad de opciones de calibración, filtrado y componentes compatibles que tiene este software, no obstante quiero explicar de manera muy simple los primeros pasos y que podemos hacer con esta aplicación.

¿Que es MMJoy2?
Podríamos decir que son dos cosas, un "Firmware" que podemos instalar en una placa Arduino y un software para configurar y calibrar los pines (para botones y ejes) de esta.

Gracias a MMJoy2 podemos olvidarnos de programar pues a partir de entonces la activación y calibración de los distintos puertos de la placa se hace con un programa.Solo tenemos que elegir si vamos a configurar eje o un boton y en que pin.

Image
Quizá conozcáis este programa pues sirve para calibrar cualquier tipo de joystick

¿Que ventajas tiene usar esta combinación de placa y software?

Primero el precio, los clones de Arduino Leonardo se pueden encontrar por solo 10€, segundo no hace falta programar nada todo se hace mediante un programa ,tercero y mas importante es compatible con todo tipo de componentes ademas de los básicos como botones y potenciómetros permite usar y calibrar ENCODERS, sensores HALL y hasta sensores magnéticos de 360º como el TLE510.

¿Como instalo el firmware de MMJoy2 en mi placa Arduino?

Lo primero a tener en cuenta es que no sirven todas las placas tienen que ser Arduino con soporte usb ,concretamente estas entre otras Arduino Leonardo plus o Arduino pro micro

Yo he realizado el proceso con una Arduino pro micro, en la wiki teneis mas información.En el caso de esta placa hay que puentear (hacer contacto) en los pines GND y RST (esta placa no tiene boton de reset) un toque reinicia la placa después dos seguidos hace que aparezca el modo bootloader durante 8 segundos.

En primer lugar debéis conectar la placa y abrir "el administrador de dispositivos de windows" allí en la sección de "Puertos COM y LPT" veréis que hay un puerto de comunicaciones abierto (COM1 por ejemplo), cuando realicéis el proceso del reseteo doble (hay practicar un rato para pillarle el punto) veréis que aparece también otro puerto el"Bootloader" apuntad el numero de puerto que lo necesitareis.

Tambien lo he realizado con una Arduino Leonardo plus en cuyo caso es mucho mas sencillo ya que solo hay que pulsar el boton de "reset" en la placa y ya aparece en el administrador de dispositivos el puerto COM del Bootloader, mucho mejor!
Image

Vereis algo asi.
Image

Cuando ya tengáis pillado el truco a esto del reseteo y apuntado el puerto COM del bootloader abrir el software MMJoySetup ponedlo en ingles e ir a la sección "Firmware"

En "Firmware file" tenéis que escoger este ---> Firmware_lufa_[MMJOY2_ATMEGA32U4].hex
En "Chip" este ---> atmega32u4
En "port Arduino" poner el puerto del Bootloader

Ahora con esto abierto volvéis a resetear la placa hasta que salga el Bootloader (solo dura 8 segundos) y cuando lo tengáis rápidamente pulsar en el MMJoySetup el botón "Upload firmware"Si todo sale bien se cargara el firmware de MMJoy2 en la placa.

Image

Windows aun no reconoce la placa como un joy aun debemos ir a las secciones "Joystick axes" o "joystick buttons" y configurar algún botón.

---CONTINUARA--
  • Citar
User avatar
Angel
Invitado

Construccion de panel con Arduino y MMJoy2

hace 5 meses

Construccion de panel con Arduino y MMJoy2

hace 5 meses
Seguimos haciendo pruebas ,ahora con el programa de configuracion de MMJoy2 (muy completo)

La seccion de ejes (joystick axes) funciona perfectamente.
Un eje por fila configurado de esta manera...
Image
En "source" ponemos "IntSensor"
En "MCU port" el pin de arduino (segun lo nombra MMjoy2 ver esquema de equivalencias)
En "Assignement" el nombre de eje que le dara windows ,"slider" "X" "Y" "Z"

El resto lo dejamos como esta, nos aseguramos que esta seleccionado el MMJoy2-20161101... y pulsamos "save to device".
Con esto ya tenemos el eje funcionando hay muchas mas opciones como auto-calibracion. precision, invertir que podeis explorar.

La seccion de botones (joystick buttons) que pareceria que es mas simple me esta dando algunos quebraderos de cabeza.

Al parecer esta pensada no para conectar directamente los botones o switches sino para usar sistemas (matrices o registros) para ampliar el numero de botones que trae Arduino ( usando una matriz de 10x10 cables obtendriamos 100 conexiones para botones)

La buena noticia es que se pueden usar botones conectandolos directamente con limitaciones en numero (solo una fila nos da 10 botones) o interferencias si pulsamos 3 o mas simultaneamente (no lo he probado y no parece que sea un caso muy usual)

Primer paso activar los botones en windows en la seccion de la derecha tal y como se ve en la imagen, tambien podemos escoger su comportamiento (boton normal, invertido, switch on o off... es muy completo ya os lo dije) al activarlos ya aparecen en "dispositivos de juego" windows pero aun no funcionan.
Image

Ahora vamos a la seccion "button matrix" y la configuramos asi..

En la fila "rows" seleccionamos un pin (que no podremos usar)
En la fila "columns" seleccionamos los pines que queramos usar (10 maximo)

Image
Soluconado! Con eso ya tenemos 10 pines digitales funcionando!

Me quedan probar muchas mas cosas interesantes como los encoders, pero primero vamos a hacer funcionar lo basico.

p.d.
Esquema de pines de Arduino Leonardo ,entre [corchetes] como los nombra MMJoy2
Image
Last edited by Angel hace 5 meses, edited 1 time in total.
  • Citar
User avatar
Dimoni
Cadete

Construccion de panel con Arduino y MMJoy2

hace 5 meses

Construccion de panel con Arduino y MMJoy2

hace 5 meses
Gracias por la currada Angel, como siempre te digo, estos posts en un momento dado, si decide uno meterse en fregaos, valen su peso en oro :wink:

S!
Fem por o fugim ?
  • Citar
User avatar
Angel
Invitado

Construccion de panel con Arduino y MMJoy2

hace 5 meses

Construccion de panel con Arduino y MMJoy2

hace 5 meses
De nada hombre, me viene bien para acordarme tambien yo de lo que he hecho.

Este sistema de flashear la placa Arduino y convertirla en un "joystick programable" mediante una aplicacion me ha sorprendido gratamente.Es como tener una Leo bodnar por 10€!

A ver si me aclaro con los botones y encoders, lo bueno es que despues del flasheo hasta los pines Rx, Tx y 13(led) quedan disponibles para entradas.

Lo malo que no tengan soporte para Arduino Due (equivalente USB de la Mega) y haya que montarse matrices o registros para sacar mas botones.

saludos!

p.d.
Solucionado (con limitaciones) lo de los botones, actualizado el post.
10 botones y 6 ejes altamente configurables funcionando!
  • Citar
User avatar
Angel
Invitado

Construccion de panel con Arduino y MMJoy2

hace 3 meses

Construccion de panel con Arduino y MMJoy2

hace 3 meses
Hola de nuevo, voy ampliando informacion acerca de mmjoy2.

Habia quedado logrando que funcionaran 8 ejes y 10 botones (una matriz de 1 fila y 10 columnas)
Este firmware esta pensado no para conectar los botones directamente (de ahi esa limitacion que encontre) sino mediante un par de sistemas.

Las opciones son ...

"button matrix"
(esta no la he probado) ,esto es un conjunto de botones unidos en una matriz de filas y columnas ( por ejemplo con 4 filas y 4 columnas tendriamos 16 botones)
Image
En algunos esquemas vereis que añaden diodos para evitar pulsaciones fantasmas al apretar varios botones a la vez.

En la pestaña "joystick buttons" vereis la seccion "Button matrix" donde debereis seleccionar los numeros de los pines de filas y columnas que usaisteis para la matriz.
En este video explican muy bien el proceso...


Aprovecho para comentarle a Pablon que anduvo peleandose para conectar un teclado numerico de Arduino.Estos teclados numericos son precisamente una matriz que puede conectarse a mmjoy configurando filas y columnas.

La otra manera es...
"Shift register"
Registros de desplazamiento,en la que estoy trabajando, estos son unos "chips" con una pequeña memoria que nos permiten multiplicar las entradas (MISO ,para tener mas botones) o salidas (MOSI para manejar mas diodos led por ejemplo) de nuestro arduino.

Cada chip MISO (como el 74HC165 o CD4021) nos dara 8 entradas mas pudiendose conectar varios en serie para aumentarlas.

Estareis pensando que soldar estos componentes no sera facil y tendreis razon ,aunque hay algunos que ya vienen soldados en una PCB os recomiendo comprar una placa con varios incorporados como estas que compre en aliexpress
Image
Como veis estas tienen 3 chips lo que nos da 24 puertos mas cada una (son dos por menos de 10 €)

Yo estoy usando la version de mmjoy 20161101 ,para conectar esta placa de registros necesitais conectar 5 cables.

De la parte de la placa de registros, estos cables salen del puerto "IN" y tiene 5 pines MISO,5V,CS,SCK Y GND (lo indican por la parte de atras)
Image

Vista delantera de la placa de registros de desplazamiento,podeis ver el conector IN que va a la placa Arduino/mmjoy (el OUT espara conectar otra placa mas en serie y tener mas puertos)

Image
Los conectores numerados de 5 pines son para 4 botones y tierra

Conexion de la placa de expansion a mmjoy2

Bueno pues despues de romperme la cabeza un tiempo aqui teneis el esquema para la conexion de esta placa de registros, esto es para la ultima (actualmente) version de mmjoy (20161101) ,en las ultimas versiones la pestaña de "shift register" permite seleccionar los pines de arduino que queremos usar para CS y MISO (hay esquemas por internet de versiones anteriores en los que se debia de usar obligatoriamente otros pines ojo!)

Image

Y este es el esquema para la conexion de botones o switches, como veis van en grupos de 4 con un pin de tierra comun.

Image
Last edited by Angel hace 3 meses, edited 1 time in total.
  • Citar
User avatar
Angel
Invitado

Construccion de panel con Arduino y MMJoy2

hace 3 meses

Construccion de panel con Arduino y MMJoy2

hace 3 meses
Bueno pues va avanzando la cosa...

Image

Una pareja de switchs on-off-on , otro on-off y el ultimo on-on funcionando en el shift register.
Por otro lado un teclado de matriz funcionando configurado en su seccion de matrix board.

El unico problema o mas bien "feature" de esta placa de expansion es que tiene organizados los conectores en bloques de 4 pines+GND lo que obliga a cablear de esa manera.

Si alguien se pregunta si dado que los chips de registro como el 74hc165 tienen un solo pin de GND para 8 pines de entrada se puede saltar una conexion de tierra..tengo que hacer mas pruebas

ACTUALIZACION

Acabo de conectar 13 pines (cabeza de mi proyecto de colectivo Huey) con un solo GND.
Al parecer los GND de la placa estan conectados, he usado pines de 4 conectores de la placa con un solo cable de GND conectado a uno de ellos, lo que reduce el cableado.
Image

p.d.
Menos mal porque tenia cableado el colectivo con un solo GND y no me apetecia volver a desmontarlo.
Last edited by Angel hace 3 meses, edited 1 time in total.
  • Citar
User avatar
Angel
Invitado

Construccion de panel con Arduino y MMJoy2

hace 3 meses

Construccion de panel con Arduino y MMJoy2

hace 3 meses
Mas pruebas y mas conclusiones...

En el programa de configuracion de mmojy2 se puede configurar un "button matrix" (matriz de botones) y un "shift register" (la placa con los chips de registros que uso) al mismo tiempo e incluso el programa vemos como reconoce las pulsaciones tanto en la matriz como en el registro.

Image

No obstante...OJO! al abrir la configuracion de Windows estando conectadas los dos metodos solo reconoce la matriz de botones.

Si queremos usar el shift register debemos desconectar el button matrix.No admite ambos metodos simultaneos.
  • Citar
User avatar
Angel
Invitado

Construccion de panel con Arduino y MMJoy2

hace 3 meses

Construccion de panel con Arduino y MMJoy2

hace 3 meses
Nuevos avances hoy...

ENCODERS.



Los encoders o codificadores rotatorios son esos mandos giran sin fin hacia ambos lados (usados para seleccionar frecuencias en las radios), ademas suelen traer un pulsdor tipo boton (apretando el mando hacia dentro)

Podemos encontrarlos en una placa pcb o sueltos como este...

Image
Los tres pines de la derecha son los que hacen funcionar el encoder.En mmjoy solo tenemos que poner "Out A" y "Out B" en unos pines y GND en tierra.

Los pines "switch" y "GND" de la izquierda son los del boton pulsador, irian a otro pin y tierra.

Ahora vamos al programa de mmjoy y girando el encoder veremos que se iluminan dos numeros de pines (sera un poco caotico al no estar configurado) ,los apuntamos (en mi caso eran el 21 y el 22)

En la seccion "ENCODERS"
Ponemos los numeros de pin que se iluminan.
#1 |21 | 22|

Al no estar configurados windows no los detecta (creo que la info de giro es demasiado rapida) asi que le tenemos que meter un retardo.

En la seccion "TIMER"
Configuramos un retardo ( 40ms suele estar bien)
#1 | delay 40ms |

En la seccion "BUTTONS" (la de la derecha)
Configuramos los botones como encoder y seleccionamos el "timer 1" (el retardo de 40ms que configuramos)

Guardamos los cambios "save sets to device" y seleccionamos la placa mmjoy de nuevo (debe estar en azul)
Ahora podemos abrir la configuracion de joystick de windows (desde el boton windows joysticks) y veremos que el encoder ya funciona.

Image

Si queremos usar el pulsador del switch solo debemos conectarlo a la placa y funcionara al momento como cualquier otro boton o interruptor.
  • Citar
User avatar
Angel
Invitado

Construccion de panel con Arduino y MMJoy2

hace 2 meses

Construccion de panel con Arduino y MMJoy2

hace 2 meses
Troubleshooting (o como arreglo esto)

Bueno pues aqui relato algunos problemas que me he encontrado, no son cosas dificiles de solucionar pero a veces te hacen perder mucho tiempo.

-Seguramente os deis cuenta es que para configurar el dispositivo mmjoy debe de estar seleccionado en la lista superior y el icono del joystick en azul (al cargar una nueva configuracion se vuelve rojo y hay que volver a seleccionarlo)

-Un problema que he encontrado (uso la version 20161101) es que teniendo seleccionado el dispositivo no me deja configurar los numeros de los botones (aparece siempre el mismo numero y no funciona el teclado)
La solucion es simple seleccionamos otro dispositivo y ya podemos configurar los botones.Cuando acabemos volvemos a seleccionarlo y cargamos la configuracion.

-En la configuracion de encoders vemos los botones que se iluminan cuando los giramos y los configuramos en sus correspondientes secciones (encoders/timer delay y buttons) ,cuando guardamos la configuracion NO se vuelven a iluminar.Esto es normal, para ver si funcionan podemos abrir la ventana "VKB Button Tester" o en "Windows joystick"
Esto puede hacernos perder un monton de tiempo buscando un fallo que no existe.

MAS FUNCIONES

ENCODERS CONFIGURACION
En la configuracion de Encoders un delay o retraso de 40ms suele funcionar bien.
A la derecha hay un desplegable con las opciones (---/ ON+OFF/ ON)

Si queremos configurar un ajuste fino paso a paso podemos poner un retraso corto y ON+OFF

Si por el contrario queremos una radio y aprovechar la velocidad de giro del encoder ponemos un retraso de 120ms y ON, asi al girar rapido el dial quedara dando vueltas luego ajustamos la frecuencia dando pasos mas lentos.

CAMBIO DE NOMBRE DE DISPOSITIVO
En la casilla "USB NAME" podemos ponerle el nombre que queramos a nuestro dispositivo lo cual nos aclara cual es en las configuraciones de los simuladores.Tambien podemos cambiar el PID (id de producto) para que aparezca antes o despues en la lista de dispositivos usb en windows)

Image
  • Citar
Hardware
Rioku

diseño: Luis Glez 'Orleans'