ThimbleKrox: Control de ratón montado en el dedo con Arduino Micro y MPU-6050
Componentes y materiales
| Componente | Cantidad |
|---|---|
| Arduino Micro | 1 |
| SparkFun Triple Axis Accelerometer and Gyro Breakout - MPU-6050 | 1 |
| Cable micro USB a USB | 1 |
| Jumpers (para conectar Arduino y MPU-6050) | Varios |
| Elástico (opcional, para sujetar el Arduino a la mano) | 1 |
Herramientas necesarias
- Impresora 3D (opcional, para la carcasa del dedal)
- Soldador (solo si el Arduino no tiene los pines preensamblados)
- Computadora con Arduino IDE instalado
Aplicaciones y servicios en línea
- Arduino IDE
Sobre el proyecto
¡Hola a todos! Este es mi primer proyecto: ThimbleKrox, un dedal que permite controlar el puntero del ratón mediante el movimiento del índice (o cualquier dedo).
Paso 1: Materiales y herramientas
Ya listados arriba.
Paso 2: Conexión
Conecta los pines del Arduino al MPU-6050 de la siguiente manera:
- VCC (Arduino) → VCC (MPU-6050)
- GND → GND
- Pin 2 → SDA
- Pin 3 → SCL

Paso 3: Impresión 3D (opcional)
Si deseas una carcasa estética, imprime el modelo del dedal. Hay dos versiones:
- Versión transparente: no requiere soportes, menos voluminosa.
- Versión steampunk: requiere soportes y queda mejor pintada (pintura acrílica o témpera para PLA).


Paso 4: Montaje
Con dedal impreso en 3D
Inserta el MPU-6050 en la cavidad superior del dedal y aloja los cables en la inferior.
Sin dedal impreso
Fija el MPU-6050 en la última falange del dedo con cinta adhesiva o una goma elástica.
Paso 5: Código y calibración
Instala las librerías necesarias: Wire.h, I2Cdev.h, MPU6050.h y Mouse.h.
Sube el código de calibración, abre el monitor serie (Ctrl+Shift+M) y observa valores como:
right | gx = 3165 gy = 469 gz = -1055 | ax = 15232 ay = 2064 az = -4496
La primera palabra indica la dirección detectada. Ajusta las líneas marcadas con // calibration line en el código hasta que la dirección mostrada coincida con el movimiento real del dedo. Cada cambio requiere volver a subir el código.
Ejemplo: Si el monitor muestra "left" pero el código tiene if (ax >= 15000) { right(); }, cambia el valor 15000 por 5000 para que la condición se cumpla con la lectura actual.
Una vez calibrado, copia los valores ajustados al código principal y súbelo al Arduino.
Paso 6: ¡A probarlo!
Ponte el dedal y controla el ratón moviendo el dedo.
Código
Código principal (ThimbleKrox)
// Control del puntero del ratón mediante movimiento del dedo
// Para calibrar usa "ThimbleKrox calibration code" y sigue el tutorial en hackster.io
// Líneas a calibrar marcadas con "//calibration line"
// Autor: 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 sensibilidad = 10; // Cambia para ajustar sensibilidad
void setup() {
Serial.begin(9600);
Wire.begin();
mpu.initialize();
if (!mpu.testConnection()) {
while (1); // Bucle infinito si no hay conexión
}
}
void up() { Mouse.move(0, -sensibilidad); }
void down() { Mouse.move(0, sensibilidad); }
void left() { Mouse.move(-sensibilidad, 0); }
void right() { Mouse.move(sensibilidad, 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
// Click derecho/izquierdo con gestos bruscos (en desarrollo)
/*
if (gy >= 20000) { Mouse.click(MOUSE_RIGHT); delay(100); }
if (gy <= -20000) { Mouse.click(MOUSE_LEFT); delay(100); }
*/
delay(10);
}
Código de calibración
// Calibración de ThimbleKrox
// Sigue el tutorial en hackster.io
// Autor: 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() {
Serial.begin(9600);
Wire.begin();
mpu.initialize();
while (Nwrong != 0) {
if (!mpu.testConnection()) {
Serial.print("Wrong connection number: ");
Serial.println(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.println(az);
delay(5000);
}
Modelos 3D
Archivos disponibles en GitHub y Thingiverse.
Esquemático

Proceso de manufactura
- Construya un robot con streaming de vídeo controlado por Internet con Arduino y Raspberry Pi
- Controla tu Ventilador de Techo con Alexa: Guía Paso a Paso
- Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
- Centro de Control de Potencia Arduino: N-FET, P-FET, Relé y RTC
- Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
- Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
- Controla Dos Motores Paso a Paso con Arduino Nano y Joystick - Tutorial Sencillo
- Controlar un LED de Arduino con Cortana vía Bluetooth en Windows 10
- Controla tu TV con Alexa mediante Arduino IoT Cloud: Guía Paso a Paso
- Control Inalámbrico de Iluminación Doméstica desde Smartphone con 1Sheeld
- Control de Ventilador PWM de 4 Pines a 25 kHz con Arduino Uno – Montaje, Código y Pruebas