Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Ratón Bluetooth Controlado por Smartphone: Crea tu Propio Joystick Virtual

Componentes y suministros

Componente Cantidad
Arduino UNO 1
Módulo Bluetooth HC-05 1
Cables jumper (genéricos) 1 set

Aplicaciones y servicios en línea

Sobre este proyecto

Este proyecto es similar a un trabajo anterior donde usé un joystick físico para controlar el cursor del PC. La diferencia clave es que aquí he creado una aplicación para smartphone con dos joysticks virtuales que mueven el cursor, hacen scroll y realizan clic izquierdo y derecho, igual que un trackpad convencional.

Funcionamiento

La aplicación en el smartphone envía por Bluetooth (HC-05) los datos de los ejes X e Y de los joysticks, estado de scroll y de clics izquierdo/derecho al Arduino UNO. El Arduino procesa estos datos para calcular la nueva posición del cursor. El resultado, junto con el estado de botones y scroll, se envía por puerto serie a un script Python que ejecuta las acciones del ratón usando la librería mouse.

Ratón Bluetooth Controlado por Smartphone: Crea tu Propio Joystick Virtual

Sobre la aplicación

La app se creó con MIT App Inventor. La pantalla principal muestra dos joysticks virtuales y botones para clics y scroll.

Ratón Bluetooth Controlado por Smartphone: Crea tu Propio Joystick Virtual

Protocolo de envío de datos (cada 20 ms):

  1. Enviar byte 255 (inicio de trama)
  2. Enviar 1 byte: valor eje X del joystick
  3. Enviar 1 byte: valor eje Y del joystick
  4. Enviar 1 byte: estado de clic izquierdo, clic derecho y scroll

Lado Arduino

El Arduino recibe los bytes vía HC-05. Mantiene las coordenadas actuales del cursor (X: 0–1279, Y: 0–799, obtenidas con mouse.get_position() en Python). Según los datos del joystick, actualiza la posición sumando/restando los valores recibidos. Luego imprime por puerto serie la secuencia:

Ancho:Alto:Clics

Ratón Bluetooth Controlado por Smartphone: Crea tu Propio Joystick Virtual

Esta secuencia es leída por el programa Python para ejecutar las acciones. Se requieren los módulos mouse y pyserial (ver instalación abajo).

Programación en Python

Requisitos: Python 3 instalado (python.org).

Pasos en Windows (Símbolo del sistema):

  1. cd <ruta_donde_está_python>
  2. py -m pip install --upgrade pip
  3. py -m pip install mouse
  4. py -m pip install pyserial

El módulo mouse ejecuta acciones de ratón; pyserial gestiona la comunicación serie con Arduino.

Ratón Bluetooth Controlado por Smartphone: Crea tu Propio Joystick Virtual

Ratón Bluetooth Controlado por Smartphone: Crea tu Propio Joystick Virtual

Ratón Bluetooth Controlado por Smartphone: Crea tu Propio Joystick Virtual

Ejecución

  1. Instala la app Bluetooth Mouse Control en tu smartphone.
  2. Sube el sketch a Arduino UNO y cablea según el esquemático.
  3. Lado Python:
    1. Copia el código Python en un bloc de notas, cambia el puerto COM al de tu Arduino UNO y guárdalo como .py.
    2. Abre el archivo en IDLE de Python.
    3. Ejecuta el script (F5).

Ratón Bluetooth Controlado por Smartphone: Crea tu Propio Joystick Virtual

Ratón Bluetooth Controlado por Smartphone: Crea tu Propio Joystick Virtual

Ratón Bluetooth Controlado por Smartphone: Crea tu Propio Joystick Virtual

  • Abre la app en el smartphone, conecta al módulo Bluetooth HC-05 y verás el cursor moverse al inclinar los joysticks virtuales.
  • Código

    Código Arduino

    int datareceived[5] = {0,0,0,0,0};
    int in_byte = 0;
    int array_index = 0;
    int l_prev = 0, r_prev = 0;
    
    void setup() {
      Serial.begin(9600);
    }
    
    int height = 0, width = 0;
    
    void loop() {
      int clicks = 0;
      int sensitivity = 20; // Ajusta sensibilidad
      int xpos = 0, ypos = 0;
    
      if (Serial.available() > 0) {
        in_byte = Serial.read();
        if (in_byte == 255) array_index = 0;
        datareceived[array_index] = in_byte;
        array_index++;
    
        // Mapeo joystick X (valores aprox 1-255)
        if (datareceived[1] >= 110) xpos = map(datareceived[1], 110, 172, 0, sensitivity);   // Derecha
        if (datareceived[1] <= 70)  xpos = map(datareceived[1], 60, 1, 0, -sensitivity);      // Izquierda
        // Mapeo joystick Y
        if (datareceived[2] >= 110) ypos = map(datareceived[2], 110, 255, 0, sensitivity);   // Abajo
        if (datareceived[2] <= 60)  ypos = map(datareceived[2], 70, 1, 0, -sensitivity);      // Arriba
    
        // Detección flancos botones (byte 3: 1=izq, 2=der, 3=scroll down, 4=scroll up)
        if (datareceived[3] == 1 && l_prev == 0) clicks = 1;
        else if (datareceived[3] == 2 && r_prev == 0) clicks = 2;
        else if (datareceived[3] == 3 || datareceived[3] == 4) clicks = datareceived[3];
        l_prev = datareceived[3];
        r_prev = datareceived[3];
    
        if (xpos != 0 || ypos != 0 || clicks != 0) {
          height += ypos;
          width  += xpos;
          height = constrain(height, 0, 799);
          width  = constrain(width, 0, 1279);
          Serial.print(width);
          Serial.print(":");
          Serial.print(height);
          Serial.print(":");
          Serial.println(clicks);
          clicks = 0;
        }
      }
    }
    

    Código Python

    import mouse, sys, time, serial
    
    mouse.FAILSAFE = False
    ArduinoSerial = serial.Serial('COM3', 9600)  # Cambia COM3 a tu puerto
    time.sleep(1)
    
    while True:
        data = str(ArduinoSerial.readline().decode('ascii')).strip()
        if not data: continue
        x, y, z = data.split(":")
        x, y = int(x), int(y)
        mouse.move(x, y)
        if '1' in z: mouse.click(button="left")
        elif '2' in z: mouse.click(button="right")
        elif '3' in z: mouse.wheel(delta=-1)  # Scroll down
        elif '4' in z: mouse.wheel(delta=1)   # Scroll up
    

    Esquemáticos

    Ratón Bluetooth Controlado por Smartphone: Crea tu Propio Joystick Virtual

    Proceso de manufactura

    1. Construya un robot Raspberry Pi controlado por Bluetooth con retroalimentación de audio
    2. Lámpara de mesa RGB controlada por gestos – Iluminación interactiva y sin manos
    3. Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
    4. Controla LEDs con Alexa mediante Raspberry Pi – Guía paso a paso fácil
    5. Transforma un viejo coche RC en un vehículo controlado por joystick con Arduino
    6. Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
    7. Brazo Robótico de 6 Grados de Libertad Controlado por Nunchuk con Arduino
    8. Construye un robot controlado por voz con Arduino Nano
    9. MobBob: Robot Arduino Impreso en 3D, Controlado por Smartphone Android
    10. Electrodomésticos activados por voz: Control Bluetooth con Google Assistant
    11. PiBot: Robot Pianista con Arduino para Interpretación Musical de Precisión