ThimbleKrox: Vingergemonteerde Muizenbesturing met Arduino Micro & MPU-6050
Onderdelen en Benodigdheden
| Arduino Micro | × | 1 |
| SparkFun MPU-6050 Versnellingsmeter/Gyroscoop Breakout | × | 1 |
Benodigde Tools en Machines
- 3D Printer (optioneel)
Apps en Online Diensten
- Arduino IDE
Over dit Project
Hallo allemaal, hier is mijn eerste project: ThimbleKrox, een vingertop waarmee je de muisaanwijzer kunt besturen via bewegingen van je wijsvinger (of een andere vinger).
Stap 1: Materialen en Tools
Materialen:
- Arduino Micro
- MPU-6050
- Micro USB naar USB kabel
- Jumper kabels (voor verbinding Arduino-MPU)
- Elastiek (optioneel, voor bevestiging aan hand)
Tools:
- Computer met Arduino IDE
- Solderbout (alleen als Arduino geen headers heeft)
- 3D Printer (optioneel, voor mooie behuizing)
Stap 2: Aansluiting
Verbind de pinnen van de Arduino met de MPU-6050:
- VCC → VCC
- GND → GND
- Pin 2 → SDA
- Pin 3 → SCL
Stap 3: 3D Printen (Optioneel)
Er zijn twee versies: een transparante (geen supports nodig, minder voluminieus) en een steampunk-stijl (wel supports nodig, beter met verf). Beide worden geprint met de uitstulpingen naar beneden.
Stap 4: Montage
Met 3D-geprinte vingertop: Plaats de MPU-6050 in de bovenste kaviteit, kabels in de onderste.
Zonder 3D-print: Bevestig de MPU-6050 op de laatste falange met tape of elastiek.
Stap 5: Code en Kalibratie
Installeer de benodigde bibliotheken: Wire.h, I2Cdev.h, MPU6050.h, Mouse.h.
Laad de kalibratiecode, dra de vingertop en open de Seriële Monitor. Je ziet richtingen (links/rechts/omhoog/omlaag) en ruwe sensorwaarden. Pas de drempelwaarden in de code aan (gemarkeerd met "// calibration line") tot de richtingen kloppen. Herhaal voor alle vier richtingen. Vervolgens kopieer de gekalibreerde waarden naar de hoofdcode en upload deze.
Stap 6: Project Afronden
Dra je vingertop en geniet van muisbesturing met je vinger!
Code
Hoofdcode (ThimbleKrox)
// Muisaanwijzer besturing via vingermoving
// Kalibratie: draai "ThimbleKrox calibration code" en volg tutorial
// Regels met "//calibration line" moeten worden aangepast
// Geschreven door 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; // Gevoeligheid instellen
void setup() {
Serial.begin(9600);
Wire.begin();
mpu.initialize();
if (!mpu.testConnection()) { while (1); }
}
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
// Optioneel: klikken via gyroscoop (work in progress)
/* if (gy >= 20000) { Mouse.click(MOUSE_RIGHT); delay(100); }
if (gy <= -20000) { Mouse.click(MOUSE_LEFT); delay(100); } */
delay(10);
}
Kalibratiecode
// Kalibratiecode voor ThimbleKrox
// Volg tutorial op hackster.io
#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("Foute verbinding nummer: ");
Serial.println(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.println(az);
delay(5000);
}
GitHub: https://github.com/Magform/ThimbleKrox
3D-Print Modellen
Beschikbaar op Thingiverse: transparante versie (geen supports) en steampunk versie (met supports).
Schema
Aansluitschema beschikbaar in de originele documentatie.
Productieproces
- Bouw een Internet-gecontroleerde Video-streamende Robot met Arduino & Raspberry Pi
- Je plafondventilator bedienen met Alexa: Stap-voor-stap handleiding
- Slimme spaarpot bouwen: Muntenacceptor besturen met Arduino Nano
- Arduino Power Control Center: N-FET, P-FET, Relais & RTC Kit
- Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
- DIY Arduino Luchtbevochtiger Controller met Relais – Veilige Hoogspanningsopstelling
- Twee Stappenmotors Sturen met Arduino Nano & Joystick – Simpele Tutorial
- Een Arduino LED besturen met Cortana via Bluetooth op Windows 10
- Je TV bedienen met Alexa via Arduino IoT Cloud – stapsgewijze handleiding
- Naadloze Smartphone-besturing van Huisverlichting met 1Sheeld
- 25 kHz 4-pins PWM-ventilatorbesturing met Arduino Uno – Bouw, Code & Test