

|
IOCards paso a paso
por Claude Kieffer http://www.simucockpit.com Traducción : Michel Alcantara |
|
|
|
|
|
|
|
El diseño IOCards es un
conjunto de tarjetas electrónicas cuyo objetivo es de gestionar las
funciones de una cabina : controlar el Flight Simulator por medio de
interruptores, pulsadores, encoders rotativos, etc...mostrar en los displays
las frecuencias que se usan en vuelo y los parámetros del piloto automático,
control de servo-motores o de motores paso a paso, emulador de teclado,
etc...
IOCards es un diseño no comercial. Fue posible su desarrollo gracias a Manuel Vélez, el principal y benévolo diseñador. Se puede hacer el pedido de las placas IOcards en kit, o montadas y testeadas, en la pagina Web de Opencockpits . Se venden todas las tarjetas a precio de costo sin lucro... Este
tutorial no dispensa la lectura preceptiva de los anexos que se
pueden bajar en la página Web de OpenCockpits. Sobre todo los anexos I
y II.
|
|
|
|
La placa Master es el
corazón del sistema IOCards. Proporciona entradas, a las que se pueden
conectar cualquier tipo de interruptores, y también salidas que pueden
encender Leds testigos o mostrar información en los displays.
Inicialmente, solo podía funcionar la placa Master si se conectaba al puerto paralelo del ordenador. Esto aun es posible... a la condición de que su ordenador lleve todavía ese tipo de puerto. La verdad es que el puerto paralelo va siendo cada vez más escaso desde que las impresoras llevan todas el USB. Hoy en día resulta mejor conectar la placa Master en el puerto USB. Por eso se necesita una placa adicional pero merece la pena por cantidad de razones.
|
|
|
|
Por
supuesto, para el montaje de la placa USB seguiremos exactamente las mismas
fases que para la placa Master.
|
Empezaremos soldando los componentes los mas pequeños : las resistencias, los condensadores, y luego los zócalos de los integrados. Se acuerde que el condensador C1 que lo dan para 220 nF (o 0,2 µF) en la nomenclatura esta proporcionado para O,1 µF. El valor correcto es este último. |
|
|
|
|
|
|
La placa
Display II
|
La tarjeta
emuladora de teclado USB Keys
|
|
|
|
Cada uno tiene su método
para evitar de hacerse un lió con la multitud de cables que salen de las
placas IOCards. Yo personalmente, recurro a cables planos de 40 hilos que
van distribuidos por toda la cabina. Cada panel del cockpit (así como el del
tren de aterrizaje, el EFIS, etc.…) debe ser independiente y fácilmente
desmontable. Así pues, los hilos de los interruptores, de los leds así como
de los displays de cada panel deberán ser reunidos y engarzados en un
conector macho HE10 de 2 x 20 pines (es muy fácil conseguirlos en las
tiendas de electrónica). Mi método es el siguiente : la placa Master proporciona los conectores HE10 machos J3 y J4. En cada uno, conecto un cable plano de 40 hilos con un conector hembra. Uno va hacia la parte derecha del cockpit y otro hacia la izquierda. Al llegar el cable plano cerca de un modulo (por ejemplo el del tren de aterrizaje), se le conecta con una pinza de grimpar un conector HE10 hembra. Entonces como los hilos del panel del tren de aterrizaje están soldados en un conector HE10 macho pues solo falta que conectarlo al conector hembra que hemos grimpado. Bueno, tengan en cuenta que solo se utilizaran 10 hilos del cable plano para este módulo. Los demás siguen mas lejos, por ejemplo hasta el EFIS que necesita él 15 hilos. Y así seguimos puesto que se pueden grimpar varios conectores HE10 hembras al cable plano. Cada conector hembra corresponde a un panel. Esta manera de proceder tiene varias ventajas : queda claro el cableo. También así es más fácil modificarlo y extenderlo. Digamos que el inconveniente es que hay que grimpar los conectores y es mejor tener una pinza especial para ello. También le puede dar a uno la impresión de derroche puesto que llevan pocos hilos algunos conectores. Pero, resultan baratos los conectores HE10. Con estas fotos resulta mas explícito : |
|
|
|
|
|
|
Bueno, ya tenemos montadas
nuestras placas, y listos los cables. Primero tendremos que comprobar que
todo funciona correctamente. Para eso, necesitamos una alimentación de 5 V
cc. Se remitan al "Anexo I", pagina16, si quieren utilizar una fuente de
alimentación de ordenador. Hay mas soluciones. Deben de tener en cuenta de
que las placas IOCards consumen poca corriente. Lo que mas corriente
consumen son los Leds y los displays que se pueden conectar. Un Led consume
aproximadamente 10 miliamperios, un display de 7 segmentos (solo una "cifra"
para mostrar una frecuencia por ejemplo) puede consumir 10 veces más. Para
estar cómodos, una alimentación de 5 V 2 amperios será suficiente.
Cuidado : algunas alimentaciones tienen una "corriente de fuga " bastante elevada y eso puede dañar algunos integrados. Para evitar ese riesgo, siempre hay que utilizar un enchufe con toma de tierra para conectar esas alimentaciones a la red. El "Controlador". El programa "Controlador" que forma parte del conjunto del software IOCards, pues como parece lógico, nos va a servir para comprobar el correcto funcionamiento de la placa Master y también para localizar las entradas y las salidas. Parece interesante reunir los programas y los ficheros en una carpeta única, por ejemplo en Program Files \IOCards. Antes de todo, ejecuten el fichero Controlador.ini que se encuentra en la carpeta IOCards. A continuación pueden ver lo que debe mostrarnos. Si algunas líneas son diferentes, modifíquelas :
[ fichero de configuración
para el programa CONTROLADOR ]
[ Uso de Expansión USB ]
[ Múltiples USBs ]
[ Número de periférico para
el USB ]
[ Activar en modo SIMULADOR
yes/no]
[ Numero de tarjetas Master
inter-conectadas ]
Ahora vamos a ejecutar el "Controlador".. Hacemos un clic en el botón COMENZAR : el programa muestra la pantalla tal y como sigue. Solo nos interesa por el momento la parte rodeada de rojo :
Nada debe de aparecer en la casilla Entradas. Ni tampoco en la subventana blanca. Si sale alguna serie de cifras en dicha subventana puede significar que hay un cortocircuito en las entradas de la placa Master o un cable de conexión defectuoso. Activamos ahora una entrada. Prepare un trozo de cable plano de 40 pines de 30 centímetros. En un extremo del cable, grimpe un conector HE10 2 x 20 hembra. Cuidado con el hilo de color (el n°1) que debe de encontrarse del lado del triangulo chiquitín grabado en el HE10). Al otro extremo del cable desprenda los 10 primeros hilos, pele los y conecte un interruptor de bascula entre el hilo de color (n°1) y el hilo n°10. Para activar la entrada n°1, conecte el HE10 en el conector J3 de la placa Master (abajo, en la izquierda), y cierre el interruptor : inmediatamente aparecerá el 001 en la casilla entradas y 001- en negro en la subventana blanca. ¡ Perfecto ! La entrada n° 1 funciona. Deje soldado el interruptor con los hilos que nos hará falta mas tarde. Vamos a comprobar ahora el correcto funcionamiento de las 8 entradas siguientes. Tengan en cuenta el aspecto práctico que ya hemos comentado en la página 15 del anexo I : las entradas físicas o pines no corresponden siempre numéricamente con las entradas lógicas. A continuación exponemos un diagrama con las correspondencias : Conector J3:
Conector J4:
Como ya lo pueden ver, las entradas van por grupos de 9. La primera entrada lleva el numero 000. En total, los dos conectores J3 y J4 proporcionan 72 entradas. Se activan las entradas al unir uno de los pines de un mismo grupo con el pin de tierra (GND) del mismo grupo. Hemos descubierto que se activaba la entrada 001 al unir con un interruptor el pin 1 con el pin 10 del conector J3. Igualmente, se activara la entrada 009 uniendo los pines 17 y 20, etc... Ahora podemos testearlas entradas 000 a 008 uniendo los hilos pelados de nuestro cable plano de 40 hilos con el hilo de masa n°10. Si todo funciona, es decir si cada entrada esta localizada correctamente en la subventana blanca lo demás también funcionara bien. Por supuesto nada nos impide que hagamos lo mismo con el conector J4. De momento solo haremos esto con el Controlador. |
|
|
|
Config IOCard Lo mismo que el programa anterior, ConfigIOCard tiene un fichero de configuración : ConfigIOCard.ini Este fichero es muy importante y debe mostrarnos lo siguiente. Modifíquenlo si es necesario :
[ fichero de configuración
para el programa IOCARD ]
[ Múltiples USBs ]
[ Número de periférico para
el USB ]
[ Número de A/D a usar de la
placa de Expansión USB ]
[ Dirección IP local para el
protocolo IOCP (UDP) ]
window = "a.txt - Bloc de notas"
La pantalla inicial al ejecutarlo es la siguiente :
Este programa es el que utilizamos para crear todas las instrucciones de programación que vamos a usar. Iremos despacito. Nos vamos a plantear un primer objetivo muy modesto : seleccionar el mando del tren de aterrizaje. Nada más. Para su funcionamiento interno, el Flight Simulator utiliza "variables". Todas las funciones del simulador, y no solo las que tratan del vuelo, se refieren a una variable. Peter Dowson ha conseguido desmenuzar el código de Flight Simulator y ha sacado la lista de esas variables. De este modo, un software tal como IOCard puede gestionarlas y por mediación de FSUIPC se podrán enviar a FS. Solo se les da una dirección…¡ Y allá van ! La lista de las variables de Flight Simulator van incluidas en la documentación de IOCards, en el anexo IV, y también en la web de Peter Dowson. Hay centenas (el anexo IV consta de 43 páginas), pero tranquilos porque si dejamos de lado las variables que tratan del servicio meteorológico, de las coordenadas geográficas, o de las características físicas de un avión, lo que compone realmente una cabina es bastante menos importante.
Volvemos a Config IOCards. En la pestaña "Variables" podemos ver las columnas siguientes :
NOMBRE : aquí pondremos el nombre que queremos darle a la primera VARIABLE que nos interesa. Para el tren de aterrizaje, podremos llamarla TREN o GEAR por ejemplo. Este nombre se va a asignar a una dirección y a partir de ahora se podrá utilizar únicamente para definir la función retraer o sacar el tren de aterrizaje, y nada mas. Por eso es importante elegir un nombre suficientemente representativo. Por ejemplo, si llamamos a una variable FRENO, es cierto que no vamos a saber al cabo de un poco tiempo si se trata del freno izquierdo, del derecho o del freno de parking. En la columna NOMBRE, pondremos GEAR por ejemplo. Acabamos de definir un nombre de VARIABLE. DIRECCIÓN : La dirección que debemos utilizar para la variable que hemos definido nos la proporciona Peter Dowson en la lista de offsets fsuipc (Anexo IV). No podemos poner la que queramos, nos tenemos que remitir a las definidas en las fsuipc. En la lista, podemos ver "Gear Control". Pues esa es la que necesitamos.
Nos tenemos que remitir a la dirección 0BE8. Pero todavía falta algo : tenemos siempre que anteponer el signo $ a cada dirección. Entonces en la columna DIRECCIÓN, pondremos : $0BE8 LONGITUD : es el número de "bytes" que tiene cada variable (es decir el nombre de "palabras" de 8 bits). Confiamos en la palabra de Peter Dowson y pondremos la longitud que nos da y que en este caso para el tren de aterrizaje será 4. De momento dejaremos de lado las dos columnas siguientes : Entonces
tenemos : Para nuestro mando del tren de aterrizaje, vamos a utilizar un interruptor "normal" de tipo micro-switch, con una posición Cerrado y una posición Abierto. Hacemos un clic en la pestaña SW-NORMAL.
NOMBRE : No debemos de confudirlo con el NOMBRE anterior. Aquí vamos a darle un nombre al interruptor del tren de aterrizaje y no a la variable del tren. Por ejemplo tomaremos GEAR_SW, o INTER_TREN. ENTRADA : Pues nada más informaremos aquí el número de la entrada de la placa Master sobre la cual conectaremos el interruptor del tren de aterrizaje. Puede ser la primera, la que lleva el numero 0, o la entrada n°1. Pongamos el n° 1 por ejemplo. VARIABLE : Aquí volvemos a encontrar de nuevo el nombre de la VARIABLE que hemos definido en la pestaña anterior. No hay que cambiarlo. Habíamos elegido GEAR, pues pondremos GEAR en esa columna. Consejo : para evitar errores cuando recopiamos el nombre de la variable, porque sin lugar a dudas, sería causa para no ser reconocida, hagan un doble clic en la columna Variable. Entonces, saldrá la lista de las variables que ya hemos utilizado y solo tendremos que escoger. VALOR_ON y VALOR_OFF : esta parte sí que es interesante. Aquí tenemos que indicar que valor debe tomar la variable cuando el interruptor este cerrado (Valor_ON/Key) y cuando este abierto (Valor_OFF/Key). Tenemos varias opciones, según el tipo de control. Ya veremos algunos ejemplos luego. Para el tren de aterrizaje, la solución más sencilla consiste en poner ON=1 y OFF=0, entonces interruptor cerrado = tren de aterrizaje sacado, y interruptor abierto = tren de aterrizaje retraído. Nada más. El programa entiende perfectamente lo que significa 0 y 1. Es su lengua materna. Bueno, también podemos tratar esto de forma diferente. Fijense de nuevo en la linea de la Offset de Peter Dowson : ¿ Y que vemos ? Gear Control: 0=UP, 16383=Down. Es otra manera de llegar al mismo resultado, porque de hecho no lo sabemos, pero cuando retraemos el tren de aterrizaje con OFF=0, la variable ella misma, sin decirnos nada, toma el valor 0. Y curiosamente, cuando sacamos el tren de aterrizaje, con ON=1, esa variable "Tren" toma el valor 16383. Entonces podríamos en vez de poner 1 en la columna Valor_ON y 0 en la columna valor_OFF, poner 16383 en la primera y 0 en la segunda. Sucedería exactamente lo mismo. Al haber definido una variable y un mando por medio de un interruptor, acabamos de programar la primera entrada en la placa Master. Ahora tenemos que hacer dos cosas muy importantes : 1° Acaba de recibir el programa Config IOCard las informaciones de un fichero importante, el ".dat". Ese es el fichero al que el programa principal, IOCard.exe, se va a referir para saber cual es nuestra programacion. Pero antes, hay que grabarlo, porque de momento, como pueden verlo arriba de la ventana de Config IOCard, se llama "sin_nombre.dat". Ejecutamos entonces Ficheros/Guardar como y salvaguardamos ese nuevo fichero.dat con un nombre cualquiera, aeris.dat o... mi_avión.dat . Se guarda este nuevo fichero.dat junto con los demás, que dimos como ejemplos, en la carpeta de IOCard. 2° Muy importante : también debemos informar IOCard.exe que es con este fichero .dat que debe actuar. Para ello ejecutamos de nuevo el fichero ConfigIOCard : al llegar al las últimas líneas de este fichero esta el grupo de líneas siguiente :
[ Nombre y localización del
fichero de configuración ] Cambie la última línea y ponga ConfigFile=.\aeris.dat (o ConfigFile=.\mi_avion.dat) De ahora en adelante IOCard sabe que es ese fichero de configuración al que tendra que referirse. Observe que “\" ante le nombre de vuestro fichero significa que el fichero.dat se encuentra dentro de la misma carpeta que IOCard.exe Solo nos queda que ejecutar el Flight Simulator, y IOCard.exe cuya ventana debe indicarnos que ha encontrado entre otras cosas FS2004 y FSUIPC. Minimice IOCard en la barra de tareas. Cargue un avion con tren retráctil, como el 737. Los hilos 1 y 10 del conector J3 permanecen soldados en el interruptor de las primeras pruebas que hicimos. Cierren el interruptor y entonces van a oír como un chillido. Eso es para recordarnos que no se retracta el tren de aterrizaje de un avión cuando esta en la pista...¡ Perfecto, ya funciona ! Si quiere ser el testigo visual de ese milagro de la informática, ponga la vista exterior. Coloque su avión a 10 000 pies en el modo desplazamiento, y suelte el modo slew : antes de que tome el avión una posición peligrosa, fíjese en el tren de aterrizaje que esta sacado. Ponga el interruptor en la otra posición y... ¡ Se retracta ! En cuatro fases : definir una variable, definir una entrada, grabar un fichero .dat y configurar ConfigIOcard para ese “.dat” hemos programado la primera función del sistema IOCard. A manera de ejemplo, pueden ahora programar el interruptor de la batería. La dirección de su variable es $3102, la longitud 1 y lógicamente el Valor_ON será 1, y el Valor_OFF será 0. Habrán notado que cuando ejecutamos de nuevo el programa ConfigIOCard, nos muestra una página blanca : Hay que abrir el fichero.dat que queremos utilizar en Ficheros \ abrir.¡ Y no olviden de salvaguardarle cada vez que se modifique algo ! La programación del interruptor de la batería es especialmente concluyente : resulta mucho más realista controlarlo con un interruptor que con el teclado o con pulsadores. ¿ Que os parece si añadimos el freno de parking ($0BC8) ? Comentario 1 : algunas funciones exigen activar un pulsador- y no un interruptor de báscula. Por ejemplo para la función SLEW (desplazamiento, Y). Una presión, se le activa, otra presión en el mismo pulsador, se le desactiva. Se informa IOCard de esta modalidad poniendo un P como Pulsador en la columna TIPO de SW_NORMAL. Haga una prueba con $05DC, que es la dirección de SLEW. Comentario 2 : Cuando modificamos algo en el fichero ConfigIocard, siempre hay que salvaguardar ese fichero con Fichero \ Guardar. Pero si esta ejecutándose también IOCard.exe, para que sean efectivas las modificaciones, hay que hacer clic en RECARGAR. Comentario 3 : Algunas veces la ventana de inicio de IOCards nos indica errores, y no puede ejecutarse el programa. Los errores más frecuentes son : “no es un valor entero”: cierren IOCards con SALIR, ejecútelo de nuevo y no haga clic en el botón RECARGAR, sino en EMPEZAR.
También
podemos tener "Variable errónea en la linea de salida". Eso ocurre
principalmente cuando una o varias líneas de programación han sido abiertas
con ADD, pero dejadas en blanco. Supriman las casillas vacías, vuelvan a
ejecutar IOCards y todo volverá a la normalidad. |
|
|
|
Ya hemos visto que algunas variables tienen valores ON-OFF que pasan de 0 a 16383. Así es el ejemplo del tren de aterrizaje. Podría ser lo mismo para los frenos. También es así para el mando de los flaps con la dirección $0BDC (página 14 del anexo IV). Se puede leer : & |