산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

ThimbleKrox: 아두이노 마이크로와 MPU-6050을 이용한 손가락 장착형 마우스 컨트롤

부품 및 소모품

ThimbleKrox: 아두이노 마이크로와 MPU-6050을 이용한 손가락 장착형 마우스 컨트롤Arduino Micro×1
ThimbleKrox: 아두이노 마이크로와 MPU-6050을 이용한 손가락 장착형 마우스 컨트롤SparkFun 트리플 축 가속도계 및 자이로 브레이크아웃 - MPU-6050×1

필요한 도구 및 기계

ThimbleKrox: 아두이노 마이크로와 MPU-6050을 이용한 손가락 장착형 마우스 컨트롤3D 프린터 (선택 사항)

앱 및 온라인 서비스

ThimbleKrox: 아두이노 마이크로와 MPU-6050을 이용한 손가락 장착형 마우스 컨트롤Arduino IDE

프로젝트 소개

안녕하세요, 제 첫 프로젝트인 ThimbleKrox를 소개합니다. 검지손가락(또는 아무 손가락)에 착용해 손가락 움직임으로 마우스 포인터를 제어할 수 있는 골무 형태의 장치입니다.

1단계: 필요한 재료 및 도구

재료:

도구:

2단계: 연결

아두이노 핀과 MPU-6050 핀을 연결합니다:

ThimbleKrox: 아두이노 마이크로와 MPU-6050을 이용한 손가락 장착형 마우스 컨트롤

3단계: 3D 프린팅 (선택 사항)

골무를 예쁘게 만들고 싶고 3D 프린터가 있다면 골무 본체를 프린트하세요.

두 가지 버전으로 만들었습니다: 서포트가 필요 없는 투명 버전(부피가 크지 않음)과 스팀펑크 스타일 버전(서포트 필요, 색칠하면 더 예쁨). 둘 다 아래쪽 두 돌기 부분이 바닥을 향하게 프린트해야 합니다.

ThimbleKrox: 아두이노 마이크로와 MPU-6050을 이용한 손가락 장착형 마우스 컨트롤
ThimbleKrox: 아두이노 마이크로와 MPU-6050을 이용한 손가락 장착형 마우스 컨트롤

4단계: 조립

3D 프린트 골무 사용 시

배선 후 MPU-6050을 골무 상단 공간에 넣고 케이블은 하단 공간에 넣습니다.

3D 프린트 골무 없이

관심 있는 손가락 끝마디에 MPU-6050을 놓고 테이프나 고무줄로 고정합니다.

5단계: 코드 및 캘리브레이션

먼저 필요한 라이브러리를 설치하세요: Wire.h, I2Cdev.h, MPU6050.h, Mouse.h

ThimbleKrox 캘리브레이션 코드를 업로드하고, 골무를 착용한 뒤 시리얼 모니터(Ctrl+Shift+M)를 여세요.

다음과 같은 출력이 나타납니다:

right | gx = 3165 gy = 469 gz = -1055 | ax = 15232 ay = 2064 az = -4496

방향과 캘리브레이션에 필요한 값들이 표시됩니다.

코드에서 // calibration line으로 표시된 줄의 숫자 값을 수정해 올바른 방향이 나오도록 조정하세요. (값 변경 후 매번 아두이노에 재업로드 필요)

예시:

시리얼 모니터에 left | gx = 3165 gy = 469 gz = -1055 | ax = 5232 ay = 2064 az = -4496이라고 뜨지만 right로 나오길 원한다면, 코드의 if (ax >= 15000)를 if (ax >= 5000)로 변경합니다. 시리얼 모니터의 ax 값(5232)이 코드의 조건값보다 크도록 조정하는 것입니다.

캘리브레이션 코드의 모든 줄을 조정해 정상 작동하면, 메인 코드의 해당 값들도 동일하게 수정하세요.

이제 메인 코드를 업로드합니다.

6단계: 프로젝트 완성

이제 골무를 착용하고 마우스를 조작해보세요!

코드

ThimbleKrox 메인 코드
// 손가락 움직임으로 마우스 포인터 제어
// 캘리브레이션은 "ThimbleKrox calibration code" 실행 후 https://www.hackster.io/projects/dd8881/ 튜토리얼 참조
// 캘리브레이션이 필요한 줄에는 "//calibration line" 표시
// 작성자: 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); } // calibration line
  if (gy <= -20000) { Mouse.click(MOUSE_LEFT); delay(100); }  // calibration line
  */
  delay(10);
}
ThimbleKrox 캘리브레이션 코드
// ThimbleKrox 캘리브레이션용 코드
// 이 코드를 실행하고 https://www.hackster.io/projects/dd8881/ 튜토리얼 따라하기
// 캘리브레이션이 필요한 줄에는 "//calibration line" 표시
// 작성자: 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); } // calibration line
  if (gy <= -20000) { leftclick(); delay(100); }  // calibration line
  */
  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 GitHub

https://github.com/Magform/ThimbleKrox

커스텀 부품 및 인클로저

ThimbleKrox 3D 프린팅 모델

Thingiverse에서 모델 다운로드 가능 서포트 필요: 투명 버전은 서포트 불필요

회로도

ThimbleKrox: 아두이노 마이크로와 MPU-6050을 이용한 손가락 장착형 마우스 컨트롤

제조공정

  1. 아두이노 & 라즈베리 파이로 인터넷 제어 영상 스트리밍 로봇 만들기
  2. 알렉사(Alexa)로 천장 선풍기 제어하기 - 단계별 가이드
  3. 스마트 저금통 만들기: 아두이노 나노로 동전 인식기 제어하기
  4. 아두이노 파워 컨트롤 센터: N-FET, P-FET, 릴레이 & RTC 키트
  5. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  6. 아두이노 릴레이 제어 가습기 자동화 – 고전압 안전 설계
  7. 아두이노 나노와 조이스틱으로 2개 스테퍼 모터 제어하기 – 비주이노(Visuino) 튜토리얼
  8. 윈도우 10 코타나와 블루투스로 아두이노 LED 제어하기 (UWP 앱)
  9. 아두이노 IoT 클라우드로 알렉사와 TV 제어하기: 단계별 가이드
  10. 아두이노 우노로 25kHz 4핀 PWM 팬 제어하기 - 제작, 코드 및 테스트