0

我有一个项目要完成,它是关于“使用传感器控制 PC 鼠标光标”的,其中我必须使用 Java、Arduino 和 MPU-6050 作为传感器。

我打算使用下面的代码来移动鼠标光标

public void moveRight() throws AWTException {
  PointerInfo a = MouseInfo.getPointerInfo();
  Point b = a.getLocation();
  int x = (int) b.getX();
  int y = (int) b.getY();
  Robot r = new Robot();
  r.mouseMove(x+10, y );}

我计划为鼠标光标移动创建 moveRight(),moveLeft()moveUP(),moveDown() 函数。此功能将在 MPU-6050 传感器移动的基础上调用。

但我不知道如何将 MPU-6050 的原始数据转换为可用于光标移动的数据。

4

1 回答 1

0

MPU6050有一个加速度计和一个陀螺仪(也是一个温度传感器)。您需要的是设备的方向,为此您可以计算Euler角度。
MPU6050 会提供原始加速度计和陀螺仪值,您必须将Euler angles其转换为可以通过任何串行总线发送到您的 PC 的值。其余的你的 Java 代码将负责。

如何开始
1. 使用 arduino 库在
此处此处获取原始读数(这是一个著名且编写良好的库)
2. 使用补充过滤器(使用Madgwick的,您只需要 acc 和 gyro)到“传感器fuse”(谷歌:sensor fusion)计算偏航、俯仰、横滚(欧拉角)的两个读数。这些是您在 3D 平面中的方向。
3. 将这些计算传递给 PC,您可以在其中根据方向分配鼠标行为。如果我们有更高的倾斜度,就像鼠标指针的移动速度更快。

为什么所有的麻烦?
您的应用程序需要通过说您如何移动您的手来控制鼠标。我们可以仅使用加速度计读数来计算倾斜角度,但您的手不是静止的物体,并且可以影响传感器具有的不仅仅是“重力加速度”。
因此,建议您使用互补滤波器(或扩展卡尔曼,it.sa 很好读,但可能对您的应用程序来说有点过分)来计算角度。

我链接的每个存储库都有示例代码和资源来帮助您入门。祝你好运!

于 2018-07-25T05:29:00.037 回答