Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Smartphone-gesteuerte Bluetooth-Maus: Eigenen virtuellen Joystick bauen

Komponenten und Zubehör

Arduino UNO 1
HC-05 Bluetooth-Modul 1
Jumper-Kabel (generic) 1 Set

Apps und Online-Dienste

Über dieses Projekt

Dieses Projekt ähnelt meiner früheren Arbeit, bei der ich einen Joystick zur Steuerung des PC-Cursors verwendete. Der entscheidende Unterschied: Hier habe ich eine Smartphone-App erstellt, die zwei virtuelle Joysticks enthält – einen für die Cursorbewegung, einen für Scrollen – sowie Links- und Rechtsklick, genau wie ein Trackpad.

Funktionsweise

Die Smartphone-App sendet per Bluetooth (HC-05) die X/Y-Achsenwerte beider Joysticks, Scroll-Status und Klick-Status an den Arduino Uno. Dieser berechnet daraus die neue Cursorposition und gibt die Daten seriell aus. Ein Python-Skript auf dem PC liest diese Daten ein und führt die Mausaktionen über das mouse-Modul aus.

Smartphone-gesteuerte Bluetooth-Maus: Eigenen virtuellen Joystick bauen

Die Smartphone-App (MIT App Inventor)

Die App wurde mit dem MIT App Inventor erstellt. Der Hauptbildschirm zeigt zwei virtuelle Joysticks und Buttons für Klick/Scroll.

Smartphone-gesteuerte Bluetooth-Maus: Eigenen virtuellen Joystick bauen

Datenprotokoll (alle 20 ms):

  1. Start-Byte: 255 (Sync)
  2. 1 Byte: Joystick 1 X-Achse
  3. 1 Byte: Joystick 1 Y-Achse
  4. 1 Byte: Status (Links/Rechts-Klick, Scroll)

Arduino-Seite

Der Arduino empfängt die Bytes über den HC-05. Er hält die aktuelle Cursorposition (X: 0–1279, Y: 0–799 – basierend auf mouse.get_position() in Python). Empfangene Joystick-Daten werden auf Bewegungsempfindlichkeit gemappt und zur aktuellen Position addiert/subtrahiert. Das Ergebnis wird als X:Y:Klick über Serial ausgegeben.

Smartphone-gesteuerte Bluetooth-Maus: Eigenen virtuellen Joystick bauen

Python-Programmierung

Voraussetzung: Python 3 (von python.org).

Unter Windows:

  1. Python installieren, Installationspfad kopieren.
  2. Eingabeaufforderung öffnen:
    cd 
    py -m pip install --upgrade pip
    py -m pip install mouse
    py -m pip install pyserial
    

Module: mouse (Mausaktionen), pyserial (Serielle Kommunikation).

Ausführung

  1. App installieren: „Bluetooth Mouse Control“ auf dem Smartphone installieren.
  2. Arduino flashen: Arduino-Sketch hochladen, Schaltung gemäß Schaltplan aufbauen.
  3. Python-Seite:
    • Python-Code in Notepad kopieren, COM-Port anpassen (z. B. COM3), als .py speichern.
    • In IDLE öffnen und ausführen (F5).
  4. Verbinden: Smartphone-App starten, mit HC-05 koppeln. Cursor bewegt sich bei Joystick-Bewegung.

Smartphone-gesteuerte Bluetooth-Maus: Eigenen virtuellen Joystick bauen Smartphone-gesteuerte Bluetooth-Maus: Eigenen virtuellen Joystick bauen Smartphone-gesteuerte Bluetooth-Maus: Eigenen virtuellen Joystick bauen

Code

Arduino-Code

int datareceived[5] = {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; // Empfindlichkeit einstellbar
  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++;

    // X-Achse (Joystick 1)
    if (datareceived[1] >= 110) xpos = map(datareceived[1], 110, 172, 0, sensitivity);   // rechts
    if (datareceived[1] <= 70)  xpos = map(datareceived[1], 60, 1, 0, -sensitivity);     // links

    // Y-Achse (Joystick 1)
    if (datareceived[2] >= 110) ypos = map(datareceived[2], 110, 255, 0, sensitivity);   // runter
    if (datareceived[2] <= 60)  ypos = map(datareceived[2], 70, 1, 0, -sensitivity);     // hoch

    // Klick/Scroll Erkennung (Flankenerkennung)
    if (datareceived[3] == 1 && l_prev == 0) clicks = 1;          // Linksklick
    else if (datareceived[3] == 2 && r_prev == 0) clicks = 2;     // Rechtsklick
    else if (datareceived[3] == 3 || datareceived[3] == 4) clicks = datareceived[3]; // Scroll

    l_prev = datareceived[3];
    r_prev = datareceived[3];

    // Nur senden, wenn Bewegung oder Klick
    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;
    }
  }
}

Python-Code

import mouse, sys, time, serial

mouse.FAILSAFE = False
ArduinoSerial = serial.Serial('COM3', 9600)  # Richtigen COM-Port eintragen!
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

Schaltplan

Smartphone-gesteuerte Bluetooth-Maus: Eigenen virtuellen Joystick bauen

Herstellungsprozess

  1. Bluetooth-gesteuerter Raspberry Pi Roboter mit Audio-Feedback bauen
  2. Gesteuerter RGB-Tischlampe – Interaktive, berührungslose Beleuchtung
  3. Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
  4. LEDs mit Alexa über Raspberry Pi steuern – Einfache Schritt-für-Schritt-Anleitung
  5. Altes RC-Auto per Xbox-Controller & Arduino zum Joystick-Fahrzeug umbauen
  6. LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
  7. Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung
  8. Sprachgesteuerter Roboter mit Arduino Nano bauen
  9. MobBob: Eigenen Arduino-Roboter bauen, per Android-Smartphone steuern
  10. Sprachgesteuerte Haushaltsgeräte: Bluetooth-Steuerung mit Google Assistant