En todo este tiempo, he estado peleando para configurar el sistema WEMOS, tiras LEDS, LEDWIZ, DOF. He llegado a comprar hasta 3 wemos. La mala suerte de haber recibido los 2 primeros con problemas. Me he vuelto loco, hasta recibir uno en buen estado.
Tengo la suerte de participar en un grupo de Telegram donde nos ayudamos y aprendemos en la creación de Pinballs virtuales. En el pasado cree uno micro.
Mis compañeros Gustavo A Lara y Shiryu55 recopilaron toda la información en un PDF.
Aprovecho para compartir el canal de Gustavo, que es un autentico genio y comparte sus habilidades con la comunidad a un nivel muy alto.
https://youtube.com/@gustavoalarah?si=Wat1kwb0E_XjDkvE
En esta guía vamos a tratar de explicar todos los pasos para poder instalar y configurar nuestras tiras LED RGB para ofrecer efectos en nuestros pinballs virtuales a traves del Framework de DirectOutput (DOF). Asumimos que la instalación de VisualPinball está realizada (a través de Popper o similares) y que disponemos de nuestra ruta de instalación en C:\vPinball
1 ¿Qué es DOF?
(extraído de mjrnet.org)
DOF es un software independiente que puedes instalar en tu sistema para controlar dispositivos de retroalimentación (feedback). En realidad, no es un programa completamente separado; es más bien un complemento que funciona junto con Visual Pinball y otros programas. DOF gestiona las comunicaciones entre el software de pinball y tus dispositivos controladores de salida. Cumple dos funciones principales.
Primero, DOF maneja las comunicaciones con varios tipos diferentes de controladores de salida: LedWiz, PacLed, placas de relés SainSmart, Pinscape y más. Antes de que existiera DOF, un programa que quisiera acceder a múltiples controladores de salida debía ser programado específicamente en el lenguaje de cada controlador. DOF ofrece una interfaz común que VP puede usar para acceder a cualquiera de estos dispositivos sin necesidad de conocer sus detalles.
Segundo, DOF traduce entre los elementos de juego simulados de VP y las conexiones físicas de los dispositivos de los controladores de salida. VP piensa en términos de los elementos de la mesa de pinball simulada: flipper izquierdo, bumper central, lanzador derecho, etc. Los controladores de salida, en cambio, no saben nada de pinball. Solo saben de dispositivos genéricos conectados a sus “puertos de salida” numerados: puerto 1, puerto 2, puerto 3, etc. Cada puerto de salida en un controlador es básicamente una conexión por cable a un dispositivo físico como un solenoide o una luz intermitente. Pero los controladores de salida no saben nada sobre qué está conectado; solo saben que hay algo cableado a cada puerto.
DOF actúa como un intérprete que traduce entre el modelo orientado al juego de VP y la lista de dispositivos físicos del controlador de salida. DOF logra esto utilizando un archivo de configuración que tú proporcionas, el cual le indica el “significado” de cada puerto de salida físico.
2 Instalación de DirectOutput
Como ya se ha comentado anteriormente, antes de instalar DOF, primero debemos instalar Visual Pinball y el programa B2S Backglass, si vamos a usar PinballX como el sistema de menú para seleccionar juegos, también hay que instalarlo primero.
Una vez que VP, B2S y PinballX estén instalados, ya estás listo para instalar DOF.
La url con los últimos paquetes es la siguiente. http://mjrnet.org/pinscape/dll-updates.html#GranderUnifider
y la versión actual es del 1 de Julio de 2025, la cual tenéis aquí directamente:
http://mjrnet.org/pinscape/downloads/DirectOutput-mjr-x86-release-20250701.msi
http://mjrnet.org/pinscape/downloads/DirectOutput-mjr-x64-release-20250701.msi
Veréis que hay un enlace para x64 y otro para x86. SON NECESARIOS LOS DOS, ya que podemos encontrar tablas que aún usan la versión x86 de Visual Pinbal o que algunos otros emuladores/juegos de Pinball siguen usando la x86. En cualquier caso, en ambas versiones deberemos dar la misma ruta de instalación:

Yo, personalmente, y por tener todo organizado, prefiero tener DirectOutput dentro de la carpeta vPinball junto el resto de componentes. Muy importante NO METER ESPACIOS en la ruta ni en el nombre de las carpetas.

Una vez instalada una de las versiones, repetiremos el proceso con la otra. Al finalizar la instalación deberemos tener esto en nuestra carpeta vPinball\DirectOutput:

3 Configuración de DirectOutput
Una vez instalado DirectOutput, necesitamos configurar sus rutas y los archivos de configuración que vamos a utilizar. Para ello ejecutamos el GlobalConfigEditor.exe que podemos encontrar tanto en la versión x64 como en la x86:

Una vez ejecutado debemos asegurarnos que la ruta donde se guardarán los INIs de las configuraciones están en la ruta C:\vPinball\DirectOutput\

Pulsamos el botón File y salvamos la configuración. Yo normalmente lo guardo como GlobalConfig_B2SServer.xml en C:\vPinball\DirectOutput\Config

4 Configuración Plugin de Visual Pinball
Ahora necesitamos que Visual Pinball sepa “hablar” con DOF, para eso tenemos que realizar el siguiente procedimiento.
En la carpeta C:\vPinball\VisualPinball\Tables, si no existen, debemos crear las subcarpetas Plugins y Plugins64
Una vez creadas, entraremos en cada una de ellas y tenemos que crear un acceso directo llamado DirectOutput que apunte a la ruta de cada versión. Es decir,
el acceso directo de Plugins64 debe apuntar a C:\vPinball\DirectOutput\x64
y el de Plugins debe apuntar a C:\vPinball\DirectOutput\x86
Al final debe quedar algo así en cada una de las subcarpetas:

Ahora toca activar el plugin. Para ello, tenemos que lanzar una Tabla de VPX que tenga asociada un backglass, para que también se levante el servicio de B2S que será el encargado de establecer la comunicación con el plugin.
Una vez lanzada la tabla, nos situaremos con el ratón sobre el backglass y pulsaremos el botón derecho para que aparezca la siguiente ventana emergente, en la que debemos asegurarnos que la casilla “Activate Plugins” está activa y “Error Messages Without Backglass” desactivada

Si está todo correcto, el botón “Plugin Settings” puede pulsarse y al hacerlo nos debe mostrar esta pantalla:
Volvemos atrás, pulsamos “Save Settings” y ya estaría configurado DOF con Visual Pinball. Con esto ya tenemos preparado el sistema para que luego entienda nuestros “juguetes”.
5 Puesta en marcha de tiras LED direccionales
A continuación, vamos a ver todo lo necesario para montar nuestras tiras leds en nuestro pinball virtual.
5.1 Lista de materiales necesarios
Esta sería una lista de los materiales mínimos que necesitamos para montar nuestro sistema de tiras LED:
Una o varias tiras LED direccionales WS2812B, pueden ser de diversas densidades, resistencia al agua, anchura, etc. Yo personalmente prefiero las de 144 LEDs/m de densidad
Varios ejemplos de Aliexpress:
https://es.aliexpress.com/item/1005007822620971.html
https://es.aliexpress.com/item/2036819167.html
Placa ESP8266 Wemos D1 Mini Pro o Lolin Wemos D1 Mini con chip CP210x, CH910x o CH340, recomendable de 16Mb, aunque las hay de 4 y 8Mb
https://es.aliexpress.com/item/1005008680645393.html
Cables con o sin Dupont, estaño, soldador, depende de cómo hagáis la conexiones
Utilidades de Arnoz para poder instalar el firmware en la placa y generar el archivo de configuración necesario para DOF (si el chip es el CP210x, CH910x o CH340)
https://shop.arnoz.com/laboratoire/2022/10/14/arnoz-tiny-tools-dl/
Si el chip es el CH340 también se pueden usar las herramientas de Cleveland
https://github.com/philipellisis/wemos-configurator/releases/latest/download/CSDAddressableControllerTool.exe
5.2 Instalación del software de Arnoz Tiny Tools
Instalaremos las utilidades de Arnoz. Como ya os comenté, me gusta tener todo organizado, así que tengo una carpeta dentro de vPinball con las utilidades necesarias:

Pulsamos, NEXT, luego NEXT y ya están instaladas las utilidades
Tendremos que tener algo así:

Importante señalar las carpetas wemos y teensy, porque en ellas disponemos de los drivers de las placas soportadas por este sistema. Cuando conectemos nuestro Wemos por primera vez, es posible que necesitemos los drivers, así que tened presente esas carpetas para buscar los drivers en ellas
5.3 Instalación del software de Cleveland
Este es más fácil de instalar, simplemente descargamos el ejecutable y ya lo podemos ejecutar:
5.4 Instalación del firmware en la placa (Arnoz)
A continuación, conectaremos nuestra placa Wemos D1, Lolin Wemos (o Teensy) por el cable USB a nuestro ordenador, si en el administrador de dispositivos aparece como un dispositivo desconocido, actualizaremos los drivers utilizando las rutas que resalté en el punto anterior en el caso de chip CP210x, CH910x y los siguientes drivers en el caso de CH340.
https://sparks.gogo.co.nz/assets/_site_/downloads/CH34x_Install_Windows_v3_4.zip
Una vez estén instalados los drivers, deberemos ver la placa en el Administrador de dispositivos en la Sección de puertos COM y LPT

Una vez nos hemos asegurado de que la placa Wemos está correctamente instalada, procederemos a instalar en ella el firmware necesario para la gestión de las tiras LEDs direccionales. En la herramienta en el desplegable superior seleccionamos “Select Your Tiny Tool: Firmware Flashers”


1. Primero deberemos indicar en el cuadro desplegable el tipo de placa que tenemos, en este caso la Wemos
2. Podemos indicar el puerto Serie de la placa directamente aquí, si no, la herramienta intentará detectarlo automáticamente
3. Seleccionaremos el firmware. Aquí vamos a encontrar dentro de la carpeta Wemos\firmwares o teensy\firmwares los firmwares creados para estas placas. En concreto, y para el caso de la Wemos, encontraremos 4 tipos de Firmware, relacionados con el el tipo de tiras LED que vamos a utilizar
En mi caso, con los LEDs que yo he usado -los de los enlaces de AliExpress- utilicé el tercer firmware de la lista, el WS2812B_GRB. Tenemos que indicar también la cantidad de memoria del Wemos (4, 8 o 16MB)

4. Estos tres checks es importante conocer su utilidad. Si marcamos el primero, perdemos el Pin D4 del Wemos, ya que comparten BUS y pueden interferir entre ellos. Dado que el Wemos va a quedar oculto en el Pinball, mejor desmarcarlo. El segundo check hace que cada vez que se resetea el Wemos, haga un test de luces unos segundos. Y el tercer check nos permite realizar el test pulsando un botón conectado al Pin D0
5. Una vez, marcadas las opciones deseadas, pulsamos el botón Upload Firmware, el cual hará aparecer una ventana de consola mostrando el proceso de actualización del Firmware en la placa.

Una vez ha finalizado, al resetearse la placa, se mostrará un pequeño test en donde los LEDs cambiarán de color 3 veces y ya se queda a la espera
5.5 Instalación del firmware en la placa (Cleveland solo Lolin Wemos D1)
Conectaremos nuestra placa Lolin Wemos D1 por el cable USB a nuestro ordenador, si en el administrador de dispositivos aparece como un dispositivo desconocido, actualizaremos los drivers del chipset CH340 utilizando el paquete de
https://sparks.gogo.co.nz/assets/_site_/downloads/CH34x_Install_Windows_v3_4.zip
Una vez estén instalados los drivers, deberemos ver la placa en el Administrador de dispositivos en la Sección de puertos COM y LPT:

Ahora ejecutamos el software de Cleveland, el cual nos muestra la siguiente pantalla. En ella seleccionaremos Version: Wemos D1 Mini y en COM Port el puerto serie que le ha asignado Windows

Pulsamos el botón de Update Firmware y procederá a instalar el firmware correspondiente. Aparecerá la pantalla de instalación del firmware de la misma manera que en el caso de utilizar la herramienta de Arnoz.
Una vez ha finalizado, al resetearse la placa, se mostrará un pequeño test en donde los LEDs cambiarán de color 3 veces y ya se queda a la espera
5.6 Realización de test de funcionamiento
La herramienta de Cleveland nos permite realizar pruebas en cualquiera de los dos tipos de placa. En ambos casos indicaremos en Version que es la Wemos D1 Mini, seleccionaremos el puerto correspondiente y pulsaremos el botón Connect

Al hacer esto, se activarán los apartados superiores, los cuales nos permiten realizar pruebas sobre los LEDs conectados a la placa. La herramienta los identifica como canales del 1 al 10. La correspondencia entre los GPIO y estos canales la tenéis en la siguiente tabla e imagen:

Primero indicaremos la longitud de los LEDs que hay conectados en el canal/GPIO correspondiente y pulsaremos Send Strip Lenghts. Una vez hecho eso, podemos indicar el Canal (Channel), Color y Brillo Brightness que queremos dar para la prueba, pulsamos Send Ouput Data y la tira se iluminará
5.7 Generación de la configuración para DOF
Para la realización de la configuración, en el desplegable superior seleccionamos “Select Your Tiny Tool: : The amazing Cacabinet Generator” (Entre penes y cacas, la interfaz es muy “divertida”)
A continuación, en el árbol de opciones, tenemos que ir seleccionando y configurando cada uno de los parámetros necesarios para generar el archivo de configuración.

1. Pulsamos dos veces e indicamos el nombre de nuestro Pinball (meramente informativo)
2. Aquí veréis en la pantalla de la derecha que nos aparecen una serie de parámetros. Los que tenemos que cambiar son el ComPortName al puerto COM por el que es detectada la placa en nuestro Pinball, el CardType a Wemos en este caso y el Name, donde pondremos un nombre identificativo para este controlador
3. Ahora tenemos que configurar los pines a los que vamos a conectar nuestras tiras LEDs (Controller Outputs), esta es la parte más importante y es la que tenemos que tener más clara.
Veremos que hay hasta 8 Outputs, los cuales están mapeados a los nombres de los Pines GPIO de la placa [D1 a D8]. El número de Output no nos interesa, ya que no tiene ninguna relación con los números de puertos que usa DOF.
Para configurar un Output, nos situaremos encima de él, y pulsaremos el botón derecho del ratón para agregar un nuevo juguete (Add new adressable toy)

Esto nos mostrará la pantalla de la derecha de la imagen que veis a continuación, donde deberemos indicar cada uno de los parámetros en cada una de las secciones:

Antes de pasar a los parámetros tenemos que comprender la disposición en las que podemos configurar nuestras tiras LEDs interconectadas entre ellas, generando “matrices”.
Lo fácil es pensar en una única tira LED “de seguido“ conectada a un Pin de nuestra placa, tal que así:

Pero la realidad es que podemos hacer cosas así (alternando las tiras)

O así, donde las situamos en paralelo

Una vez comprendido esto, y teniendo claro como vamos a colocar nuestras tiras en el Pinball, es momento de traspasar eso al plano “lógico” en la configuración
Apartado Dimensions
Width: Esto es el largo de cada tira que tenemos conectada a ese pin, es decir si tenemos una solo de seguido, es fácil, es su longitud en LEDs, pero si tenemos varias en paralelo o alternas como se explicó en
los dibujos anteriores, entonces es la longitud de cada una, no el total. Evidentemente todas deben tener la misma longitud en LEDs
Height: Este es más sencillo, es el número de tiras en paralelo o alternadas que tenemos en total. 1, 2, 3 o 20…
Split: Este caso es un poco más complicado y está relacionado con el DofOutPort que veremos en la siguiente sección. Significa que la tira LED está dividida en varios puertos físicos que se verán como un único puerto para el DOF, con lo cual tenemos que nombrar a todas las tiras en Split con el mismo nombre y que apunten al mismo puerto de DOF
Apartado DoF Config
DoFOutputPort: Este es el puerto que reconoce DOF y el que tendremos que usar para configurarlo en la herramienta web DOF Configuration que veremos más adelante
Apartado Leds
LedArrangement: Este punto está muy relacionado con cómo tenemos interconectadas las tiras LEDs entre sí conectadas a un mismo puerto según lo que expliqué anteriormente, y que se detalla en este esquema:

La columna de la izquierda indica la disposición de nuestras tiras en el Pinball y entre ellas. El punto blanco indica donde empieza la tira (básicamente la parte de donde salen los cables a la placa), el primer par de direcciones indican la dirección y sentido de las tiras, y el segundo par hacia donde las estamos agrupando.
Ejemplos:
BottomUpRightLeft nos indica que tenemos las tiras puestas en vertical y en sentido abajo-hacia arriba y se van agrupando desde la derecha a la izquierda, siendo la primera tira la de la derecha
BottomUpAlternateRightLeft, es exactamente igual al anterior salvo que las tiras LED van haciendo zig-zag entre ellas
ColorOrder: El orden de color de nuestra tira, en mi caso las que tengo son GRB.
FadingCurve: El algoritmo utilizado para la atenuación de los LEDs al apagarse o encenderse. Yo lo dejo con el algoritmo por defecto (SwissLizardsLedCurve)
Brightness: El brillo de los LEDs, muy útil si no utilizamos atenuadores y queremos bajar la intensidad de estos para no deslumbrarnos
Apartado Misc
Name: El nombre que le damos a este juguete de tiras LEDs
Un ejemplo de configuración sería el mostrado en la siguiente imagen

Una terminada la configuración de los LEDs que vamos a asignar a los pines, podemos guardar la configuración en el formato que entiende la herramienta por si queremos modificarla a posteriori pulsando el botón “Save Cacabinet”. Sin embargo, para DOF lo que necesitamos es exportar la configuración en el formato XML que éste entiende. Para ellos pulsaremos el botón “Export to Cabinet.xml”
Deberemos guardar el archivo con el nombre Cabinet.xml dentro de la carpeta Config de DirectOutput, ya que le servira al DOF para saber “hablar” con la placa y enviar los efectos de luz

Con este archivo exportado, llega el momento de configurar nuestro DOF para que sepa utilizar la placa acorde a las características que hemos definido
5.8 Configuración en la herramienta DOF
Para configurar los juguetes que vamos a usar en nuestro Pinball, es necesaria la Herramienta DOF. Esta herramienta es una página web donde deberemos darnos de alta:
https://configtool.vpuniverse.com/app/home

Si ya tenemos cuenta, utilizaremos el botón Login, de lo contrario deberemos registrarnos la primera vez utilizando el botón Register y cumplimentando los datos que nos requerirán.
Una vez dentro, iremos al menú Manage de la izquierda:

Aquí crearemos o modificaremos nuestro Pinball o Cabinet, pulsando el botón New Cabinet:

Una vez tengamos creada nuestra Cabinet, la seleccionaremos desde la pantalla anterior:

Una vez seleccionada nuestra Cabinet, nos situaremos en el menú Devices:

En Devices deberemos seleccionar el número de dispositivos para gestionar tiras LEDs que tenemos (WS2811):

Una vez indicado este valor, nos iremos al menú Combine Toys

Aquí lo vamos a generar es un combo de efectos que puede gestionar una o varias tiras LEDs. Para ello en la sección Create New Combo, asignaremos un nombre al combo y en ese momento podremos seleccionar el tipo de Toy que es:

Posteriormente iremos agregando los Toys de efectos que queramos a este combo para sean interpretados por la tira LED a la que se asignará el combo:

En la siguiente tabla tenéis una relación de los nombres de los Toys, su uso y descripción.

Una vez finalizados los combos que necesitemos, iremos al menú Port Assignments

Lo primero será asegurarnos que en el desplegable Device, el WS2811 esté seleccionado. A continuación, seleccionaremos el puerto 001 y le asignaremos el Combo o Efecto que deseemos:

Con esto observaremos que no sólo queda ocupado el puerto de DOF 1 en color rojo, sino que también el 2 y el 3 se quedan marcados en verde y azul:

Esto viene heredado del uso de LEDs RGB, los cuales tienen 3 patas que se asignan a los colores Red (rojo), Green (Verde) y Blue (Azul) y que ocupaban pines físicos reales de las placas. Con lo cual hay que tener en cuenta este detalle porque esto significa que el puerto DofOutput definido en la herramienta de Arnoz como 1, ocupa los puertos DOF 001, 002 y 003, el puerto DofOutput 2 será entonces los puertos de DOF 004, 005 y 006… y así sucesivamente.Teniendo en cuenta esta consideración, llega el momento de guardar la configuración y descargarla para usarla en nuestro DOF.
Pulsaremos el botón Update azul:

y después el botón Generate Config verde

esto nos descargará un zip denominado directoutputconfig.zip, que descomprimiremos en la carpeta Config de DirectOutput, quedando dicha carpeta de esta manera:

Ahora que tenemos todo, hay que volver al configurador de DOF “GlobalConfigEditor.exe”, ya sea el de x64 o x86, ya que debemos asignar el archivo Cabinet.xml que generamos anteriormente

Asignamos el fichero, revisamos que la carpeta IniFiles siga asignada en la primera pestaña y volvemos a salvar el archivo desde el menú File->Save como GlobalConfig_B2SServer.xml
Con esto ya tendríamos nuestro sistema DOF configurado para utilizar nuestras tiras LEDs.
Ahora podemos abrir una tabla de Visual Pinball y comprobar que los efectos se ejecutan en las tiras LED.
También podemos hacer una prueba con la herramienta DirectOutputConfigTester.exe, donde indicaremos el fichero GlobalConfig que generamos anteriormente, seleccionaremos una tabla de Visual Pinball y su ROM asociada (en este caso funciona mejor con tablas que lleven ROM)

Pulsamos ok y ya nuestras luces LED deberían empezar a hacer cosas. Y si no, en la pantalla que nos ha aparecido, podemos ir activando y probando si las luces ejecutan sus efectos

6 ANEXO I: Trucos
En las placas CH340 si tras un reinicio del equipo, veis que hay que estar desconectándola del USB y conectándola de nuevo, en las propiedades del Puerto Serie de esta placa, en el administrador de dispositivos, pulsar el botón “Advanced”:

Esto nos mostrará la siguiente pantalla, en ella marcar la opción “Disable ModemHandShake”

Con esto se soluciona el problema y la placa no se quedará como “colgada” cuando reiniciemos el equipo
SrRubio
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.