簡體   English   中英

如何轉換MPU6050的原始數據來控制鼠標光標?

[英]How to convert raw data of mpu6050 to control mouse cursor?

我有一個項目要完成,該項目涉及“使用傳感器控制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的原始數據轉換為可用於光標移動的數據。

MPU6050具有加速度計和陀螺儀(也是溫度傳感器)。 您需要的是設備的方向,要獲得該方向,您可以計算Euler角。
MPU6050輸入原始的加速度計和陀螺儀值,您必須將其轉換為Euler angles ,然后才能通過任何串行總線將其發送到PC。 其余的Java代碼將處理。

如何開始
1.使用arduino庫獲取原始讀數
在這里這里 (這是一個著名且寫得很好的圖書館)
2.使用互補濾波器(使用Madgwick的濾波器,您只需要acc和陀螺儀)將兩個讀數“融合”(谷歌:傳感器融合)以計算偏航角,俯仰角和側傾角(歐拉角)。 這些是您在3D平面中的方向。
3.將這些計算結果傳遞到PC,您可以在其中根據方向分配鼠標行為。 如果我們有較高的傾斜度,則鼠標指針的移動速度會更高。

為什么所有麻煩?
您的應用程序需要通過說出如何移動手來控制鼠標。 我們本可以僅使用加速度計讀數來計算傾斜角度,但是您的手不是靜止的物體,並且可以影響傳感器,使其具有比“由於重力引起的加速度”更大的作用。
因此,建議您使用一個互補濾波器(或擴展卡爾曼,這是一個很好的閱讀方法,但可能對您的應用來說有些過分了)來計算角度。

我鏈接的每個存儲庫都有示例代碼和資源,可幫助您入門。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM