Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Souris Bluetooth pilotée par smartphone : construisez votre propre joystick virtuel

Composants et fournitures

Composant Quantité
Arduino UNO 1
Module Bluetooth HC-05 1
Fils de câblage (jumper wires) 1 lot

Applications et services en ligne

À propos de ce projet

Ce projet ressemble à mon précédent travail où j'utilisais un joystick physique pour contrôler le curseur de la souris. La différence clé : j'ai créé une application smartphone avec deux joysticks virtuels pour déplacer le curseur, faire défiler l'écran, et effectuer clic gauche/droit comme un trackpad classique.

Fonctionnement

L'application smartphone envoie via Bluetooth (vers l'Arduino Uno + module HC-05) :

L'Arduino reçoit ces données, calcule la nouvelle position du curseur (coordonnées X 0–1279, Y 0–799, obtenues via mouse.get_position() en Python), et renvoie sur le port série : position X, position Y, code d'action (clic/scroll). Un script Python lit ce flux série et exécute les actions souris via le module mouse.

L'application smartphone

Créée avec MIT App Inventor (inspiré du tutoriel Tabletop Robotics). L'écran principal affiche deux zones de joystick virtuel et des boutons pour clics/scroll.

Protocole de transmission (toutes les 20 ms) :

  1. Octet de départ : 255
  2. 1 octet : valeur X joystick
  3. 1 octet : valeur Y joystick
  4. 1 octet : état boutons (clic gauche, clic droit, scroll)

Côté Arduino

L'Arduino reçoit les octets via le HC-05. Il maintient les coordonnées actuelles du curseur. Selon les valeurs reçues (seuils ~70 et ~110 pour détecter le mouvement), il incrémente/décrémente X et Y avec une sensibilité réglable (par défaut 20). Les clics sont détectés sur front montant (évite les répétitions). Le résultat est envoyé sur le port série au format : X:Y:action (ex: 640:400:1).

Programmation Python

Prérequis : Python 3 installé (python.org).

Sous Windows :

  1. Ouvrez l'invite de commandes (cmd)
  2. cd <chemin_vers_python>
  3. py -m pip install --upgrade pip
  4. py -m pip install mouse
  5. py -m pip install pyserial

Le module mouse pilote la souris, pyserial gère la communication série avec l'Arduino.

Exécution

  1. Installez l'application « Bluetooth Mouse Control » sur votre smartphone.
  2. Téléversez le sketch Arduino sur l'Uno, câblez selon le schéma.
  3. Côté Python :
    • Copiez le code Python dans un fichier .py, modifiez le port COM (ex: COM3).
    • Ouvrez le fichier dans IDLE (Python GUI) et exécutez (F5).
  4. Lancez l'application smartphone, connectez-vous au module HC-05. Le curseur bouge selon les joysticks virtuels.

Code source

Code 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;
  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++;

    if (datareceived[1] >= 110) xpos = map(datareceived[1], 110, 172, 0, sensitivity);
    if (datareceived[1] <= 70)  xpos = map(datareceived[1], 60, 1, 0, -sensitivity);
    if (datareceived[2] >= 110) ypos = map(datareceived[2], 110, 255, 0, sensitivity);
    if (datareceived[2] <= 60)  ypos = map(datareceived[2], 70, 1, 0, -sensitivity);

    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;
    }
  }
}

Code Python

import mouse, sys
import time
import serial

mouse.FAILSAFE = False
ArduinoSerial = serial.Serial('COM3', 9600)  # Adapter le port COM
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)
    elif '4' in z: mouse.wheel(delta=1)

Schéma de câblage

Schéma fourni en image : Arduino Uno ↔ HC-05 (VCC→5V, GND→GND, TX→RX0, RX→TX1 via diviseur de tension).

Processus de fabrication

  1. Construire un robot Raspberry Pi piloté par Bluetooth avec retour audio
  2. Lampe de table RGB à commande gestuelle – Éclairage interactif, mains libres
  3. Construire un Voltmètre Intelligent avec Arduino et Smartphone – Projet DIY Facile
  4. Contrôler des LED avec Alexa via Raspberry Pi – Guide Pas à Pas
  5. Transformez une vieille voiture RC en véhicule piloté au joystick avec Arduino
  6. Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
  7. Bras robotique 6 DoF piloté par Nunchuk Wii – Kit Arduino Mega
  8. Robot commandé par la voix avec Arduino Nano et Bluetooth
  9. MobBob : Construisez votre propre robot Arduino, contrôlé via smartphone Android