Estoy trabajando en un proyecto personal que consiste en un teclado que también sirve como hub para conectar más teclados. Por ejemplo, podría tener el teclado principal con las letras y los símbolos y adjuntar a éste otro que tenga los números. Otro ejemplo podría ser un teclado dividido en dos piezas: izquierda y derecha. La pieza izquierda estará conectada al ordenador y la pieza derecha a la pieza izquierda. Sé que la mayoría de la gente hace teclados divididos usando el bus I2C pero yo preferiría usar el USB para una mejor flexibilidad. El primer reto que tengo que resolver es cómo pasar la señal de la derecha a la izquierda. He pensado utilizar un controlador USB HUB por lo que cada pieza tendrá un micro Arduino cuya salida se conectará a una entrada del controlador USB HUB y luego la salida del controlador HUB será la salida del teclado. El resto de los puertos se utilizarán para conectar otras piezas de teclado u otros periféricos.
simular este circuito - Esquema creado con CircuitLab
Por supuesto, todos los módulos de teclado se construirán de la misma manera para que pueda conectar 3 de ellos en serie y sólo el último al ordenador. Me gustaría tener una entrada y una salida en cada lado del teclado para no liar tanto los cables:
El problema de esta solución es que necesitaría muchos puertos USB tipo C y alguien que no esté acostumbrado a este teclado podría conectar salida a salida por ejemplo. La solución ideal sería tener sólo un USB en cada lado que se pueda utilizar como entrada o salida. Así que mi pregunta es: ¿hay alguna manera de hacer que un puerto USB sea de entrada o de salida dependiendo de si está dando energía o recibiéndola? Estaba pensando en utilizar el controlador FE2.1 USB HUB y algún tipo de interruptor USB pero no estoy seguro de que esto sea posible. Cualquier sugerencia será agradecida.
PD: Mi experiencia en electrónica es bastante baja, así que perdón por todas las tonterías que he dicho.Si algo está mal o es difícil de entender sólo házmelo saber y lo editaré.
EDITAR 1
He elegido el USB C porque es muy delgado (el teclado necesita ser portátil), no le importa en qué dirección intentes conectar el cable y, por lo que sé, se supone que es más duradero que el puerto micro USB.
El teclado lo haré yo, no es un teclado adaptado por lo que se utilizará el Arduino para manejar la matriz de botones. Todos los módulos de teclado serán hechos por mí de la misma manera por lo que todos ellos tendrán un Arduino y un HUB USB.
Es un proyecto personal y creo que es más elegante usar sólo un USB por lado (voy a gastar algo de dinero y mucho tiempo en este proyecto así que quiero que sea tan bueno como sea capaz). Usar dos tipos diferentes de puertos USB en cada lado es una solución pero, si puedo, me gustaría tener sólo uno en cada lado.
EDITAR 2
Creo que la mejor solución sería este :
Yo recomendaría buscar un kit de desarrollo para un chip hub usb tipo-c o un chipset que sea capaz de cambiar automáticamente los puertos de subida o de bajada, entonces puedes dejar todos los detalles sangrientos de usb-c a ellos y seguir con la construcción de tu periférico usb.
Y si no soy capaz de encontrar un controlador usb como ese o es demasiado caro este :
sólo hay que proporcionar conectores en todos los lados y hacer que cambien de tipo de host/dispositivo dependiendo de dónde venga la energía. (utilizar chips de conmutación USB)
Sólo quiero que el conector sea USB C, me da igual el protocolo que corra por debajo. Está pensado solo para conectar teclados así que cualquier cosa debería estar bien.