Cómo construir un ratón

main-qimg-cd963832294f04cf71a19df7b636f43c

Un ratón de ordenador tiene un componente de software y otro de hardware. El software tendrá que comunicarse a través del puerto USB con el sistema operativo del ordenador mientras que el hardware tendrá que registrar comandos específicos y enviarlos al ordenador. Una simple placa Arduino debería ser suficiente como procesador principal para el software de su ratón y ser capaz de enlazar el hardware con el sistema.

En https://www.instructables.com/id/PC-Mouse-Made-With-Arduino-Uno-and-Joystick/ encontrará algún ejemplo de cómo hacerlo funcionar pero tiene un grave defecto ya que depende de una aplicación Java extra que se ejecuta en el ordenador como "controlador del ratón". Pero esto se debe principalmente a que el Arduino Uno carece de un buen soporte USB. Esta versión del ratón no es un verdadero ratón HID.

En Arduino - JoystickMouseControl encontrarás un ejemplo mejor que utiliza la placa Arduino Leonardo, Micro o Due, que sí tienen soporte USB. Estas utilizan una librería de ratón y también puedes adjuntar una librería de teclado para que tu placa pueda simular ser tanto un ratón como un teclado. Estos generarían ratones HID y, por lo tanto, serían reconocidos sin ningún software adicional en tu ordenador.

Si quieres algo más pequeño que una placa Arduino entonces lo más pequeño que podrías usar sería un procesador ATTiny85. Es sólo un procesador con 8 pines por lo que habrá retos para conectar el hardware de tu ratón a él. Y como el procesador carece de soporte USB, necesitarías algo como el emulador de software V-USB en el procesador para fingir que sigue siendo un dispositivo USB. Hay componentes de hardware que se pueden añadir para añadir este soporte USB, pero haría que todo el esquema de hardware fuera más complejo. O utiliza el procesador ATmega32U4 en su lugar, ya que tiene soporte USB incorporado. (Ten en cuenta que termina con U4, ya que hay muchos procesadores ATmega32 diferentes y no todos soportan USB!)

Cuando se utiliza un procesador raw, también tendrás que utilizar un cristal ya que los procesadores raw son lentos por sí mismos. Esto no es muy práctico con un ATtiny ya que sólo tiene 8 pines y la alimentación, el reset y el cristal se comerían 5 pines. La conexión USB también necesitaría 2 pines por lo que sólo te quedaría un pin... Así que ATmega32U4 es la mejor opción con un cristal de 16MHz, ya que tiene 44 pines que puedes utilizar.

Además del software, necesitarías un hardware que pueda responder a las acciones del usuario. Necesitarías algo para los movimientos izquierdo y derecho del ratón y algo para los movimientos arriba y abajo, además de los botones del ratón. Añadir la funcionalidad de la rueda de desplazamiento también podría estar bien, lo que se hace con la función mouse.Move() de la biblioteca Arduino Mouse.

Entonces, ¿qué tipo de hardware necesitarías? Muchos sólo utilizan un simple controlador de joystick y/o pulsadores. También puedes usar ruedas giratorias y otras técnicas. Todo depende de cómo quieras que el usuario interactúe con el ratón. Algunas técnicas serán más complejas que otras, sin embargo.