亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

ThimbleKrox:基于 Arduino Micro 与 MPU-6050 的指戴式鼠标控制器

组件与物料清单

组件数量
Arduino Micro1
MPU-6050 六轴加速度计/陀螺仪模块1

所需工具

软件工具

项目简介

ThimbleKrox 是一个指戴式设备,通过手指动作控制鼠标指针。这是我的首个项目,旨在提供一种直观的无接触鼠标交互方式。

第一步:材料与工具准备

材料:

工具:

第二步:电路连接

Arduino Micro 与 MPU-6050 引脚对应连接:

第三步:3D 打印外壳(可选)

提供两款外壳模型:

两款模型均需将带有两个内凸起的一面朝下打印。

第四步:组装

使用 3D 打印外壳: 连接完成后,将 MPU-6050 放入外壳上部腔体,导线置于下部腔体。
不使用外壳: 将 MPU-6050 固定在手指末节,用胶带或松紧带绑定。

第五步:代码烧录与校准

需安装库:Wire.h、I2Cdev.h、MPU6050.h、Mouse.h。

校准流程:

  1. 上传校准代码,佩戴指戴,打开串口监视器
  2. 观察输出格式:right | gx=3165 gy=469 gz=-1055 | ax=15232 ay=2064 az=-4496
  3. 根据串口输出修正代码中标记 // calibration line 的阈值
  4. 将校准后的阈值同步至主程序代码
  5. 上传主程序代码

校准示例: 若串口显示 "left" 但代码判定为 right,需调整对应轴的阈值使判定方向一致。

第六步:完成项目

佩戴指戴即可体验手指控制鼠标的乐趣!

核心代码

主程序

// 通过手指动作控制鼠标指针
// 校准方法请运行 "ThimbleKrox calibration code" 并参考教程
// 需校准的行标记为 "//calibration line"
// 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;  // 灵敏度调节

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
  
  // 右键/左键功能(开发中)
  /* 
  if (gy >= 20000) { Mouse.click(MOUSE_RIGHT); delay(100); }
  if (gy <= -20000) { Mouse.click(MOUSE_LEFT); delay(100); }
  */
  
  delay(10);
}

校准程序

// ThimbleKrox 校准程序
// 运行此代码并参考教程进行校准
// 需校准的行标记为 "//calibration line"
// 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) 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);
}

3D 打印模型

Thingiverse 模型地址:ThimbleKrox 3D 打印模型

原理图

电路连接图请参考项目附件。

制造工艺

  1. Arduino与树莓派构建互联网控制视频流机器人完整指南
  2. 用 Alexa 控制吊扇:分步指南
  3. 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
  4. Arduino 电源控制中心:N-FET/P-FET/继电器/RTC 多功能扩展板
  5. Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
  6. DIY Arduino 加湿器控制器:继电器安全控制高压电路
  7. Arduino Nano + 摇杆控制双步进电机:Visuino 图形化教程
  8. Windows 10 Cortana 蓝牙控制 Arduino LED:UWP 应用开发全流程
  9. 通过 Arduino IoT Cloud 用 Alexa 控制电视:分步指南
  10. 1Sheeld + Arduino 手机无线控制家庭灯光系统
  11. DIY Arduino 蟑螂控制系统 —— 30 美元以内自制指南
  12. Arduino Uno 控制 25kHz 4 针 PWM 风扇 - 硬件、代码与测试