ThimbleKrox: Kontrol Mouse Berbasis Jari dengan Arduino Micro & MPU-6050
Tentang Proyek
Halo semua, ini adalah proyek pertama saya, ThimbleKrox yang merupakan cap jari yang memungkinkan Anda mengontrol pointer mouse melalui gerakan telunjuk (atau jari mana pun).
Langkah 1: Bahan dan Alat yang Diperlukan
Bahan yang diperlukan:
Arduino Micro
MPU-6050
Kabel untuk menghubungkan Arduino dan PC (micro USB ke USB)
Kabel jumper (untuk menghubungkan Arduino dan MPU-6050)
Saret karet (jika ingin memasang Arduino di tangan Anda)
Alat yang diperlukan:
Komputer dengan Arduino IDE yang terinstal (untuk memuat kode ke Arduino)
Paku solder (hanya jika Arduino tidak memiliki konektor pin yang terpasang terlebih dahulu)
Printer 3D (jika ingin cap jari Anda terlihat keren)
Langkah 2: Koneksi
Hubungkan pin Arduino ke pin MPU-6050:
pin VCC Arduino ke pin VCC
pin GND ke GND
pin 2 ke SDA
pin 3 ke SCL.
Langkah 3: Cetak 3D (Opsional)
Jika ingin cap jari Anda terlihat bagus, dan jika Anda memiliki printer 3D, Anda dapat mencetak cap jari fisik.
Saya melakukannya dalam dua versi, satu bening yang oleh karena itu tidak memerlukan struktur pendukung untuk dicetak dan tidak terlalu tebal, versi kedua yang saya coba buat dalam gaya steampunk tanpa membuatnya terlalu tebal (masih lebih tebal dari yang bening), tetapi yang ini memerlukan struktur pendukung untuk dicetak dan hanya menghasilkan hasil terbaik jika diwarnai (untuk PLA saya berhasil dengan cat tempera). Keduanya memerlukan untuk dicetak dengan bagian yang memiliki dua prong internal di bawah
Langkah 4: Rangkai
Dengan cap jari cetak 3D
Untuk memasang semuanya dengan cap jari yang dicetak, setelah membuat koneksi, perlu memasukkan MPU-6050 ke dalam ruang atas perumahan cap jari dengan menempatkan kabel di ruang bawah
Tanpa cap jari cetak 3D
Dalam hal ini, rangkaian dilakukan dengan cara amatur, yaitu dengan memosisikan MPU-6050 di falang terakhir jari yang bersangkutan dan memblokirnya dengan lem kertas atau saret karet.
Langkah 5: Kode dan Kalibrasi
Pertama yang harus dilakukan untuk menjalankan kode adalah menginstal perpustakaan yang diperlukan yaitu Wire.h, I2Cdev.h, MPU6050.h dan Mouse.h
Setelah melakukan ini, saya menyarankan untuk memuat kode kalibrasi ThimbleKrox, memakai cap jari dan membuka serial monitor (Ctrl + Shift + M).
Anda sekarang akan melihat sesuatu seperti ini:
right | gx = 3165 gy = 469 gz = -1055 | ax = 15232 ay = 2064 az = -4496
Di mana ditunjukkan arah yang, jika dengan benter kalibrasi, Anda ingin pointer pergi dan kemudian beberapa nilai yang diperlukan untuk kalibrasi.
Sekarang Anda harus membuka kembali kode dan pergi ke baris yang ditandai dengan “// calibration line” dan mengubah nilai numerik sampai Anda mendapatkan arah yang benar. (Setiap kali Anda mengubah nilai dalam kode Anda perlu memuat ulang ke Arduino)
Contoh:
Serial monitor:
left | gx = 3165 gy = 469 gz = -1055 | ax = 5232 ay = 2064 az = -4496
Kode kalibrasi:
if (ax> = 15000) { // calibration line right (); }
Serial monitor menandai “left” tetapi kita ingin baris ini ditandai “right” jadi kita perlu mengubah nilai “15000” menjadi “5000”. Ini karena, dalam hal ini, kita harus memastikan bahwa “ax” yang terdeteksi lebih besar dari nilai dalam kode. Kami memahami bahwa itu harus lebih besar karena dalam kode ada tanda lebih besar dan kita harus melihat “ax” dari serial monitor karena dalam kode ada “ax”. (hanya nilai numerik dalam kode yang perlu diubah)
Setelah memuat ulang kode ke Arduino kita akan memiliki:
Serial monitor:
right | gx = 3165 gy = 469 gz = -1055 | ax = 5232 ay = 2064 az = -4496
Kode kalibrasi:
if (ax> = 5000) { // calibration line right (); }
Ketika semua baris kalibrasi dalam kode kalibrasi telah disesuaikan dan versi kalibrasi cap jari berfungsi, nilai kode utama harus disesuaikan untuk cocok dengan kode kalibrasi.
Contoh:
Kode Kalibrasi:
if (ax> = 5000) { // calibration line right (); }
Kode utama:
if (ax> = 15000) { // calibration line right (); }
Kode utama harus diubah menjadi:
if (ax> = 5000) { // calibration line right (); }
Sekarang saatnya untuk memuat kode utama
Langkah 6: Selesaikan Proyek
Sekarang saatnya untuk memakai cap jari Anda dan bermain dengannya!
Kode
Kode ThimbleKrox
Kode kalibrasi ThimbleKrox
Kode ThimbleKroxArduino
Kode utama untuk ThimbleKrok
//Code to control the mouse pointer through the movement of a finger //To calibrate the device run "ThimbleKrox calibration code" and follow the tutorial found at https://www.hackster.io/projects/dd8881/ //The lines that need to be changed for calibration have "//calibration line" //code write by 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; //Change this value to change the sensitivity of the device void setup() { Serial.begin(9600); Wire.begin(); mpu.initialize(); if (!mpu.testConnection()) { //check connection with the MPU-6050, if there is no connection stop to work 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){ //calibration line right(); } if(ax<=-9000){ //calibration line left(); } if(ay<=-8000){ //calibration line up(); } if(ay>=10000){ //calibration line down(); } //uncomment the following lines to set the right click with a sprint up and the left click with a sprint down (Work in progress part) /* if(gy>=20000){ //calibration line Mouse.click(MOUSE_RIGHT); delay(100); } if(gy<=-20000){ //calibration line Mouse.click(MOUSE_LEFT); delay(100); } */ delay(10); }
Kode kalibrasi ThimbleKroxArduino
Kode untuk kalibrasi ThimbleKrox
//Code to calibrate the ThimbleKrox //To calibrate the device run this code and follow the tutorial found at https://www.hackster.io/projects/dd8881/ //The lines that need to be changed (as the other code) for calibration have "//calibration line" //code write by 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){ //calibration line right(); } if(ax<=-9000){ //calibration line left(); } if(ay<=-8000){ //calibration line up(); } if(ay>=10000){ //calibration line down(); } //uncomment the following lines to set the right click with a sprint up and the left click with a sprint down (Work in progress part) /* if(gy>=20000){ //calibration line rightclick(); delay(100); } if(gy<=-20000){ //calibration line 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); }
ThimbleKrox
https://github.com/Magform/ThimbleKrox
Bagian dan Enclosure Kustom
Model cetak 3D ThimbleKrox
Bagi yang suka mengambil model dari ThingiverseFile CAD di thingiverse.com Struktur pendukung diperlukanTidak perlu struktur pendukung