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

ThimbleKrox : Contrôle Souris au Doigt avec Arduino Micro et MPU-6050

Composants et Fournitures

Arduino Micro×1
MPU-6050 (Accéléromètre/Gyroscope 3 axes SparkFun)×1

Outils Nécessaires

Logiciels

À Propos du Projet

Voici mon premier projet, ThimbleKrox : un dé à coudre permettant de contrôler le curseur de la souris par les mouvements de l'index (ou tout autre doigt).

Étape 1 : Matériel et Outils

Matériel : Arduino Micro, MPU-6050, câble micro-USB, fils de connexion, élastique (pour fixation sur la main).
Outils : Ordinateur avec Arduino IDE, fer à souder (si broches non pré-soudées), imprimante 3D (optionnel).

Étape 2 : Connexions

Étape 3 : Impression 3D (Optionnel)

Deux versions du dé à coudre : version transparente (sans support, compacte) et version steampunk (avec supports, plus volumineuse, meilleure avec peinture). Les deux s'impriment avec les ergots internes vers le bas.

Étape 4 : Assemblage

Avec dé 3D : Insérer le MPU-6050 dans la cavité supérieure, câbles dans la cavité inférieure.
Sans dé 3D : Fixer le MPU-6050 sur la dernière phalange avec ruban adhésif ou élastique.

Étape 5 : Code et Calibration

Installer les bibliothèques : Wire.h, I2Cdev.h, MPU6050.h, Mouse.h.

Charger le code de calibration, ouvrir le moniteur série (Ctrl+Maj+M). Ce dernier affiche la direction détectée et les valeurs brutes (ax, ay, az, gx, gy, gz).

Procédé de calibration :

  1. Observer la direction affichée (ex: « left »)
  2. Modifier les seuils dans les lignes marquées « // calibration line » pour correspondre aux valeurs lues
  3. Recharger le code, vérifier que la direction affichée est correcte
  4. Répéter pour les 4 directions (haut, bas, gauche, droite)
  5. Reporter les valeurs calibrées dans le code principal

Exemple : Si le moniteur affiche « left » avec ax = 5232 mais que le code teste if (ax >= 15000), changer le seuil à 5000.

Étape 6 : Finalisation

Charger le code principal, enfiler le dé à coudre et utiliser !

Codes Sources

Code Principal

// Contrôle souris par mouvement du doigt
// Calibration : voir "ThimbleKrox calibration code" et tutoriel sur hackster.io
// Lignes à calibrer marquées "//calibration line"
// Par Magform

#include <Wire.h>
#include <I2Cdev.h>
#include <MPU6050.h>
#include <Mouse.h>

MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int vx, vy;
int sensibility = 10; // Sensibilité du curseur

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu.initialize();
  if (!mpu.testConnection()) {
    while (1); // Arrêt si pas de connexion
  }
}

void up() { Mouse.move(0, -sensibility); }
void down() { Mouse.move(0, sensibility); }
void left() { Mouse.move(-sensibility, 0); }
void right() { Mouse.move(sensibility, 0); }

void loop() {
  mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  
  if (ax >= 15000) { right(); }      // calibration line
  if (ax <= -9000) { left(); }       // calibration line
  if (ay <= -8000) { up(); }         // calibration line
  if (ay >= 10000) { down(); }       // calibration line

  // Clic droit/gauche par mouvement brusque (en développement)
  /* if (gy >= 20000) { Mouse.click(MOUSE_RIGHT); delay(100); }
     if (gy <= -20000) { Mouse.click(MOUSE_LEFT); delay(100); } */

  delay(10);
}

Code de Calibration

// Code calibration ThimbleKrox
// Tutoriel : https://www.hackster.io/projects/dd8881/
// Lignes à calibrer : "//calibration line"
// Par Magform

#include <Wire.h>
#include <I2Cdev.h>
#include <MPU6050.h>
#include <Mouse.h>

MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int vx, vy;
int Nwrong = 1;

void setup() {
  Nwrong = 1;
  Serial.begin(9600);
  Wire.begin();
  mpu.initialize();
  while (Nwrong != 0) {
    if (!mpu.testConnection()) {
      Serial.print("Wrong connection number: ");
      Serial.print(Nwrong);
      Nwrong++;
      delay(1000);
    } else {
      Nwrong = 0;
    }
  }
}

void up() { Serial.print(" up "); }
void down() { Serial.print(" down "); }
void left() { Serial.print(" left "); }
void right() { Serial.print(" right "); }
void rightclick() { Serial.print(" RightClick "); }
void leftclick() { Serial.print(" LeftClick "); }

void loop() {
  mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  
  if (ax >= 15000) { right(); }      // calibration line
  if (ax <= -9000) { left(); }       // calibration line
  if (ay <= -8000) { up(); }         // calibration line
  if (ay >= 10000) { down(); }       // calibration line

  /* if (gy >= 20000) { rightclick(); delay(100); }
     if (gy <= -20000) { leftclick(); delay(100); } */

  Serial.print(" | gx= "); Serial.print(gx);
  Serial.print(" gy= "); Serial.print(gy);
  Serial.print(" gz= "); Serial.print(gz);
  Serial.print(" | ax= "); Serial.print(ax);
  Serial.print(" ay= "); Serial.print(ay);
  Serial.print(" az= "); Serial.print(az);
  Serial.print("\n");
  delay(5000);
}

Ressources : GitHub | Modèles 3D Thingiverse

Schéma de Câblage

ThimbleKrox : Contrôle Souris au Doigt avec Arduino Micro et MPU-6050

Processus de fabrication

  1. Construire un robot piloté par Internet avec streaming vidéo Arduino & Raspberry Pi
  2. Contrôler votre ventilateur de plafond avec Alexa : Guide étape par étape
  3. Construire une Tirelire Intelligente : Contrôler un Accepteur de Pièces avec Arduino Nano
  4. Centre de contrôle d'alimentation Arduino : N-FET, P-FET, Relais et RTC
  5. Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
  6. Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée
  7. Contrôler 2 moteurs pas-à-pas avec Arduino Nano et joystick – Tutoriel Visuino
  8. Contrôler une LED Arduino avec Cortana via Bluetooth sur Windows 10
  9. Contrôle de ventilateur PWM 4 broches 25 kHz avec Arduino Uno – Construction, code et test