Tabla de contenido:

[Ratón portátil] Controlador de ratón portátil basado en Bluetooth para Windows 10 y Linux: 5 pasos
[Ratón portátil] Controlador de ratón portátil basado en Bluetooth para Windows 10 y Linux: 5 pasos

Video: [Ratón portátil] Controlador de ratón portátil basado en Bluetooth para Windows 10 y Linux: 5 pasos

Video: [Ratón portátil] Controlador de ratón portátil basado en Bluetooth para Windows 10 y Linux: 5 pasos
Video: UBUNTU 20.04 vs WINDOWS 10 20H1 / El MEJOR Sistema OPERATIVO 2020 | Comparativa 2024, Mes de julio
Anonim
Image
Image
Acelerómetro de interfaz con Raspberry Pi
Acelerómetro de interfaz con Raspberry Pi

Hice un controlador de mouse basado en Bluetooth que se puede usar para controlar el puntero del mouse y realizar operaciones relacionadas con el mouse de PC sobre la marcha, sin tocar ninguna superficie. El circuito electrónico, que está incrustado en un guante, se puede usar para rastrear los gestos de las manos a través de un acelerómetro y eso se puede traducir en el movimiento del puntero del mouse. Este dispositivo también está interconectado con un botón que replica el clic del botón izquierdo. El dispositivo se puede conectar en serie a la PC (a través de USB) o de forma inalámbrica a través de una conexión Bluetooth. Bluetooth proporciona una comunicación inalámbrica robusta y universal entre el dispositivo anfitrión y este mouse portátil. Como Bluetooth está ampliamente disponible y viene integrado con casi todas las computadoras portátiles personales, el caso de uso de un dispositivo portátil de este tipo es amplio. El uso de Raspberry Pi, que es una plataforma de desarrollo de uso común para varios proyectos, la interconexión de diferentes sensores y el desarrollo de dicho dispositivo es fácil y escalable. El guante se puede sustituir por cualquier otro wearable para que su aplicación sea más amplia.

Como precaución contra el COVID-19, es aconsejable evitar tocar superficies que puedan ser compartidas entre diferentes personas, y una computadora portátil con pantalla táctil o un mouse pueden estar entre esas superficies comunes. El uso de un dispositivo portátil de este tipo ayuda a mantener la higiene y a mantener desinfectadas las superficies de uso común:)

Suministros

  • Raspberry Pi 3 Modelo B V1.2
  • Desglose del acelerómetro de triple eje SparkFun - MMA8452Q
  • Cable de puente macho a hembra
  • Un guante
  • Cinta adhesiva
  • Tijeras
  • Cable micro-USB
  • Cable HDMI (para depurar a través de Raspberry Pi)

Paso 1: Acelerómetro de interfaz con Raspberry Pi

Acelerómetro de interfaz con Raspberry Pi
Acelerómetro de interfaz con Raspberry Pi

Usé un acelerómetro de triple eje MMA8542Q de Sparkfun que usa el protocolo de comunicación I2C para hablar con los pines GPIO de Raspberry Pi y enviar los datos de los ejes. Este sensor proporciona varios modos de operación con velocidad de datos configurable, modos de suspensión, rango de aceleración, modo de filtro, etc. Encontré que el código de Pibits fue muy útil en mi configuración inicial del sensor y lo probé con mis gestos con las manos. Es mejor colocar primero el sensor en una superficie plana y realizar inclinaciones deterministas mientras se observan los valores brutos del sensor. Esto es particularmente útil para comprender cómo reacciona este sensor con varios gestos con las manos y cómo podemos configurar umbrales para nuestra aplicación. Una vez que el acelerómetro se interconecta con éxito, puede ver los datos de los ejes sin procesar en la pantalla del terminal de Pi.

Paso 2: Interfaz del pulsador con Raspberry Pi

Interfaz de pulsador con Raspberry Pi
Interfaz de pulsador con Raspberry Pi

En este dispositivo portátil, conecté un botón que puede funcionar como el botón izquierdo del mouse para poder hacer clic en los íconos de la pantalla. Los 2 extremos del botón se conectan a 2 pines GPIO del Pi. Uno de los pines emite un alto lógico y el otro pin lee ese valor. Cuando se presiona el botón, el circuito se cierra y el pin de entrada puede leer un valor lógico alto, que luego es procesado por el script que escribí para emular el clic izquierdo del mouse. Debido a la falta de soldador, utilicé cinta adhesiva para conectar los puentes con el botón.

Paso 3: desarrollo de la secuencia de comandos de Python para controlar en serie el puntero del mouse

Usé la biblioteca Python de Pyautogui para controlar el puntero del mouse. La razón para usar esta biblioteca es que funciona tanto en Linux como en la plataforma Windows. Para controlar el puntero del mouse en mi Raspberry Pi, primero conecté mi Pi a una pantalla. Luego, utilicé las siguientes API proporcionadas por la biblioteca para controlar el puntero del mouse:

  1. pyautogui.move (0, 200, 2) # mueve el mouse hacia abajo 200 píxeles durante 2 segundos
  2. pyautogui.click () # haga clic con el mouse

Para filtrar los datos de error provenientes del acelerómetro, utilicé promedios y otros métodos de filtrado que se pueden entender fácilmente a través del código adjunto. La API pyautogui.move (0, y) se usó de tal manera que el puntero del mouse puede ir de arriba a abajo o de izquierda a derecha a la vez. Esto se debe a que el acelerómetro informa ejes en la dirección X, Y y Z, pero la API solo toma 2 argumentos, los ejes X e Y. Por lo tanto, este enfoque fue muy adecuado para mi acelerómetro y para mapear los gestos en la pantalla.

Paso 4: desarrollo de la secuencia de comandos de Python para controlar el puntero del mouse a través de Bluetooth

Desarrollo de un script de Python para controlar el puntero del mouse a través de Bluetooth
Desarrollo de un script de Python para controlar el puntero del mouse a través de Bluetooth

Esta parte es una aplicación avanzada en la que cualquier computadora portátil con capacidad Bluetooth puede comunicarse con Raspberry Pi en un modelo de comunicación servidor-cliente y transmitir datos de coordenadas del mouse de forma inalámbrica. Para configurar una computadora portátil con Windows 10 de 64 bits para permitir la comunicación Bluetooth, debemos seguir los pasos a continuación:

Windows 10:

  1. Cree un puerto COM de Bluetooth entrante.
  2. Empareje el Bluetooth de Pi con el Bluetooth de la computadora portátil haciendo que Pi sea reconocible.
  3. Instale Python en Windows.
  4. Instale pip en Windows. Pip se usa para instalar bibliotecas en una máquina Linux o Windows.
  5. Instale pyautogui en Windows usando: pip install pyautogui
  6. Una vez que pyautogui esté instalado en el dispositivo, instale Pybluez en Windows usando el siguiente comando en la terminal de Windows usando: pip install PyBluez-win10. PyBluez habilita la comunicación Bluetooth en PC con Windows y Linux.
  7. Para desarrollar una aplicación en una computadora portátil con Windows 10, necesitamos instalar Microsoft Visual Studio (se requieren 15-20 GB de espacio) y sus herramientas de compilación. Por lo tanto, junto con PyBluez, debemos seguir las instrucciones a continuación,

    1. Descargue y ejecute "Visual Studio Installer":

    2. Instale "Visual Studio Build Tools 2017", marque "Herramientas de compilación de Visual C ++" y "Herramientas de compilación de la Plataforma universal de Windows".
    3. clon de git
    4. cd pybluez
    5. instalación de python setup.py

  8. Si se siguen correctamente las instrucciones anteriores, ejecutar Python en la terminal de Windows e importar pyautogui y el módulo Bluetooth deberían funcionar sin errores, como se muestra en la imagen de arriba.
  9. En la biblioteca pybluez instalada en la máquina con Windows, navegue hasta: pybluez-master / examples / simple / rfcomm-server.py y ejecute usando python rfcomm-server.py. Si el terminal entra en un estado de espera sin errores, vaya a la siguiente sección para configurar Bluetooth en Pi. Si hay errores al instalar pybluez, consulte Problemas de GitHub para la depuración.

Raspbian en Raspberry Pi:

  1. Instalar PyBluez en Pi
  2. Ejecute el ejemplo del servidor en Windows. Luego, en Pi, navegue hasta pybluez-master / examples / simple / rfcomm-client.py y ejecute. Si los dos dispositivos han comenzado a comunicarse, Bluetooth ahora está configurado en ambos dispositivos. Para comprender más sobre cómo funciona la comunicación de socket con Python, consulte este enlace del MIT.

Se requerirá un análisis de datos adicional para enviar datos de ejes desde Pi a la PC, ya que los datos se envían en bytes. Consulte el código adjunto para obtener más información sobre la comunicación de datos entre el cliente y el servidor.

Paso 5: Incrustación del acelerómetro y el botón en el guante

Incrustación de acelerómetro y botón en el guante
Incrustación de acelerómetro y botón en el guante
Incrustación de acelerómetro y botón en el guante
Incrustación de acelerómetro y botón en el guante

Una vez que el acelerómetro está bien interconectado, el sistema de esqueleto se ve como la primera imagen en este paso.

Como la superficie del guante no es plana, utilicé una tarjeta de crédito falsa que llega a mi buzón de vez en cuando. Según la segunda imagen de este paso, adjunté la tarjeta de crédito ficticia en la superficie superior de mi guante con cinta adhesiva. Sobre la tarjeta, adjunté mi acelerómetro. Esta configuración fue lo suficientemente robusta como para mantener estable mi acelerómetro y poder rastrear mis gestos con precisión.

Recomendado: