- Star Citizen es un juego con una funcionalidad y iteractividad complejas y muy rica.
- Cada nave en Star Citizen puede desempeñar uno o varios roles.
- Cada jugador en Star Citizen puede jugar uno o varios roles.
- Cada rol tiene una forma particular de interactividad.
- Cada jugador tiene una forma distinta de jugar.
Por lo tanto cada jugador necesita un cockpit único adaptado a su forma de jugar. Se necesita un cockpit para Star Citizen modular, abierto y adaptable.
- Debe ser modular.
- La estética debe ser una combinación de:
- The Warthog Project
- Y de las naves SC. Por ejemplo de la Terrapin y la Freelancer.
- Los dispositivos de entrada deben ser identificables.
- Teclas que se puedan marcar.
- Los otros dispositivos se identifican marcándolos en el panel.
- Al ancho máximo de la botonera debe ser de unos 82 cms que corresponde con el ancho de un monitor de 34'' QHD.
- El numero total de keybindings en SC es de 502, según Número de teclas en Star Citizen, Por lo que la botonera debe facilitar el uso de este gran número de entradas.
El "Modular Cockpit" tiene una arquitectura modular, obviamente. Y un módulo debe cumplir con lo siguiente:
- Cada módulo debe funcionar independientemente, para funcionar no debe necesitar de otros módulos u otros elementos, con excepción del computador.
- Un módulo agrupa varias funciones relacionadas.
- Un módulo está construido con varios componentes.
- Todos los módulos deben cumplir con los criterios de compatibilidad (estos son definidos más adelante).
Marco : Este es una estructura creada con Makerbeam de 10x10 mm y tiene una altura de 120 mm. Para ello se usa Beams verticales de 100 mm de largo y se unen a los Beams horizontales con MakerBeam Corner Cube. En los Beams horizontales se introducen varios T-slot nuts, que es donde se atornillan los Módulos con pernos M3. Se puede usar cualquier otro sistema compatible. Por ejemplo el siguiente es un Marco de 220 mm.
- Cada módulo solo debe tener una conexión USB.
- Un módulo debe poder atornillarse al Marco.
- Power Module
- Camera Module
- Camera Module
- Emotes Module
- Cockpit Module
- Radar and Scanning Module
- Torret Module
- Shields Module
- Countermeasures Module
- Missiles Module
- Docking Module
- Targeting Module
Tendrá varios tipos de dispositivos de entrada.
Teclas de teclado mecánico : Las teclas de teclado mecánico se usan para la mayoría de los keybindings de SC, esto es por que SC esta diseñado usando teclas.
Encoders : Para los casos que se tienen dos teclas en la que una es de incrementar y otra de decrementar cambiando una misma cantidad, por ejemplo incrementar o decrementar la energía de los escudos.
Toggle Switch (ON/OFF) : Estos se usan cuando se tienen dos teclas, una de prender y otra de apagar, por ejemplo prender y apagar escudos. Pero para poder usarlo en SC es necesario hacer una programación que aunque este permanentemente en ON mande solo una tecla de ON en el momento que se cambia a esta posición, al igual que con el OFF.
Estos son dispositivos de entrada en los hay que hacer pruebas lógicas y de usabilidad conectándose a SC, y teniendo en cuenta sus limitaciones de este para saber si sirven.
Potenciómetro líneal : Estos sirven para aquellos casos en los que SC tiene asociados ejes (axis). El problema es con los keybindings que no sean ejes y que por su naturaleza deberían serlo (como incrementar o decrementar la potencia de los escudos), por que los potenciómetros dan mediadas absolutas y no incrementos y esto último es como funciona SC, oprimiendo varias veces una tecla para incrementar o decrementar una cantidad.
Joystick : Aparte de los casos obvios en el cual se usan los joystick hay keybinding que por su naturaleza deberían controlarse con joystick, por ejemplo las rotaciones de algo. Pero un joystick en realidad son (por lo menos) dos potenciómetros ortogonales, por lo que tiene el mismo problema de estos con los keybindings que no sean ejes y que por su naturaleza deberían serlo (como el desplazamiento angular de la cámara).
GlidePoint® Circle Trackpads (el del Steam Controler) : Este trackpad funciona muy parecido a un joystick análogo por lo que puede usarse en lo mismo, pero también tiene el mismo problema de dar valores absolutos y no incrementos que es lo que necesita SC.
Se tienen dos posibilidades:
Sparkfun Pro Micro : Este microcontrolador es como un Arduino pero puede funcionar como si fuera un teclado o un joystick.
Teensy® : Este es como el Sparkfun Pro Micro o un Arduino también puede funcionar como un Teclado y un joystick con la diferencia que tiene un procesador mas potente, más memoria y muchos más pines de entrada/salida por lo que se le pueden conectar más dispositivos de entrada y tener un firmware mas grande.
Hay dos posibilidades:
Arduino con keypad.h, joystick.h y keyboard,h : Hay que programar casi todo desde cero, lo cual es una ventaja y una desventaja al mismo tiempo. Una ventaja por que se tiene un control sobre todo, pero es una desventaja por que hay que hacer mucho.
QMK Firmware : Muchas de las cosas que se necesitan están presentes en QMK y no abría que programar desde cero.
El usar el uno o el otro depende de:
- Se puedan programas todos los dispositivos de la forma en que se quieren usar.
- Facilidad de programación.
- Que se pueda usar joystick y keyboard al mismo tiempo. Esto para sobrepasar la limitación de las 32 teclas del joystick tanto en Arduino como en QMK.
Si se pone la siguiente línea en un programa con joystick antes de los #include
#define JOYSTICK_SIZE 64 // 12 = normal, 64 = extreme joystick
Entonces el saca un error como el siguiente:
/home/aztlek/Documentos/ModularCockpit/modules/PowerModule/src/firmware/firmware.ino:30: warning: "JOYSTICK_SIZE" redefined
30 | #define JOYSTICK_SIZE 64 // 12 = normal, 64 = extreme joystick
|
In file included from /home/aztlek/.arduino15/packages/teensy/hardware/avr/1.58.0/cores/teensy4/usb_serial.h:33,
from /home/aztlek/.arduino15/packages/teensy/hardware/avr/1.58.0/cores/teensy4/WProgram.h:52,
from /tmp/arduino/sketches/B19FFDD5866611D7F05A07723232A08F/pch/Arduino.h:6:
/home/aztlek/.arduino15/packages/teensy/hardware/avr/1.58.0/cores/teensy4/usb_desc.h:318: note: this is the location of the previous definition
318 | #define JOYSTICK_SIZE 12 // 12 = normal, 64 = extreme joystick
|
Opening Teensy Loader...
Memory Usage on Teensy 4.0:
FLASH: code:23976, data:6284, headers:8648 free for files:1992708
RAM1: variables:8544, code:22248, padding:10520 free for local variables:482976
RAM2: variables:12608 free for malloc/new:511680
Por lo que se puede inferir de donde toma el Arduino Ide
las librerías de
Teensy. En este caso:
.arduino15/packages/teensy/hardware/avr/1.58.0/cores/teensy4/
Para el Teensy 4
. Por lo que un comando bash para averiguar donde modificar
sería:
cd .arduino15/packages/teensy/hardware/avr/1.58.0/cores/teensy4/
egrep -Rn '#define[ ]+JOYSTICK_SIZE' *
- Sparkfun: Rotary Potentiometer - Linear (10k ohm)
- Sparkfun: Slide Pot - Small (10k Linear Taper)
- Sparkfun: Slide Pot - X-Large (10k Linear Taper)
- Teensy symbol library for KiCAD La librería de simbolos de Teensy para KiCAD
- Keyboard PCB Guide
- Designing a keyboard from scratch - Part 1
- KRSTEC-keyboard: Teclado diseñado de cero:
- KRSTEC-keyboard Github del teclado donde están los foodprint del teclado, entre esos los del switch de reset.
- Diseño de Teclado KrsTec - creando el PCB
- Teclado KrsTec - Montaje de las partes
- KrsTec Programado y Prueba de Sonido
- Montaje de plates
- Keyboard layout editor Editor del mapa de teclado.
- Keyboard Firmware Builder Produce el código fuente para QMK del teclado.
- Modificando el PCB Krstec añadiendo un Encoder + Crear archivos Gerber
Generando los archivos gerber.
- Modificando el equemático.
- Modificando el PCB
- Generando y comprimiendo los archivos Gerber para JLCPCB
- Mandar a fabricar en JLCPCB.
- Teclado Krstec - Generando Archivos QMK
- Como generar los archivos para mandar a cortar los acrilicos
- Teensy® 4.1 Development Board
- Teensy® 4.0 Development Board
- Teensy® 3.6 Development Board No está en stock:
- Amazon: Teensy 3.5 (Without Pins)
Para trabajar con el IDE de Arduino se necesitan al menos tres partes:
- Teensyduino La extensión del IDE de Arduino para Teensy.
- Using USB Keyboard Libraría
para simular un teclado con Teensy.
- Using USB Joystick Librería para sinular un joystick con Teensy. No sirve parque sólo maneja 32 botones.
- Keypad Library Librería para leer una matriz de teclas.
- Encoder Library Libreria para leer los encoders.
Si se usa el Teensy QMK en el archivo rules.mk
hay que poner el microcontrolador, el MCU.
- Building Your First Firmware Explica como crear un nuevo keymap.
- QMK_Teensy_2.0_Tutorial Tutorial que explica como poner el firmware en un Teensy 2.0. Funciona mejor en Linux.
- Using The Teensy Loader on Ubuntu Linux Complementario al anterior explica como quemar desde Linux (Ubuntu).
- Keycodes Overview
- Rotary Encoder En encoder sensillo
de 12 pasos de Sparkfun.
- Rotary Encoder 318-ENC130175F-12PS El datasheed del encoder.
- Black Metal Knob - 14x24mm La perilla del (knob) encoder. Negra de metal y para 6mm.
- Clear Plastic Knob Otra perilla para el encoder, pero transparente. Esta sería mejor para el encoder que tiene RGB.
- uxcell 5pcs, Potentiometer Control Knobs For Encoder Code Switch Knobs Acrylic Volume Tone Knobs Black D type 6mm Perilla para concoder plana.
- Rotary Encoder - Illuminated (RGB)
Un encoder 24 pasos y RGB de Sparkfun.
- Clear Plastic Knob Otra perilla para el encoder, pero transparente. Esta sería mejor para el encoder que tiene RGB.
- AliExpress: 100 step encoder Encoders de 100 pasos en Aliexpress.
- Amazon: 5V 60MM Ultra-Thin Hand Wheel Pulse Encode
- Amazon: Busqueda cnc rotary encoder
Un Encoder de 100 pasos como los de Aliexpress pero en Amazon.
- 100PPR 6 Terminal Electronic Hand Wheel Manual Pulse Encoder for CNC System (Black) Otro encoder de 100 pasos mejor documentado.
- Encoders: Documentación de QMK Parece estar muy bien exlicado, supone que se sabe que son las líneas A y B.
- How can I use a rotary encoder? Explica como usar un rotaty encoder wn QMK con eejemplo específicos como control de audio, scrolling, moviemiento de ventanas, tabbing, etc.
- QMK Encoder Setup Explica como configurar un escoder de cien pasos (de los que se consiguen en Aliexpress)
- Hub16 Encoder Configuration Como configurar dos encoder con QMK y los codigos de teclado de QMK.
- Using multiple encoders in QMK by wiring them up to your matrix rows Explica como conectar varios encoders.
- xkeys: Printable Legend Templates Una plantilla para imprimir las etiquetas de la teclas de xkeys. Archivo local: SingleKeyLegendTemplate.pdf
- Toggle Switch (On/OFF) Plástico Negro
- Switch On Switch On/Off, en posición ON, plástico negro. Nombre archivo local: ToggleSwitch_ON-OFF_PlasticoNegro-On.svg
- switch on/off
Switch On/Off, en posición OFF , plástico negro. Archivo local: ToggleSwitch_ON-OFF_PlasticoNegro-Off.svg
- Faders from mixing board Petenciometro líneal. Archivo local: faders.svg
- metallic shine Lo que parece ser un knob metálico. Archivo local: metallic-shine.svg
- Joystick Un joystick pequeño y muy esquemático. Archivo local: JoyStick.svg
- DPST micro push button switch Un switch pequeño como para protoboard. Archivo local: JoyStick.svg
- Blank Generic Keyboard Teclado en blanco. Archivo local: Blank-Generic-Keyboard-Remix-by-Merlin2525.svg
- Non-linear video editing system 1 Una consola de edición no lineal de vídeo. Se pueden sacar de aquí los knobs y otros openclipart de dispositivos. Archivo local: [Non-linear video editing system 1.svg](images/openclipart/Non-linear video editing system 1.svg)
- Industrial Toggle Switch Un knb de multi-selector o de potenciometro. Archivo local: TwoPosToggle.svg
- Mixer knobs Unos knobs de mezcladora. Se pueden sacar de aquí la imagen de knobs de encoders. Archivo local: odaibanet-Mixer-knobs.svg
- Power Button Icon Una tecla de apagado. Se puede usar para construir las teclas de xkeys. Archivo local: Power-Button-Icon.svg
- qwerty keyboard Un teclado tipo mac. Se puede usar para construir las teclas de xkeys. Archivo local: qwerty-keyboard.svg
- Keyboard Keys Alguna teclas de teclado. Se puede usar para construir las teclas de xkeys. Archivo local: Simanek-Keyboard-Keys-2.svg