코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2015-04-07 19:03:39
HID 기기로 인식하게 만드는 아두이노 레오나르도와 자이로/가속도 센서 mpu-6050 을 사용하여 에어마우스를 만든 프로젝트입니다.
준비물
아두이노 레오나르도
MPU-6050
Jumper Cable
배치
회로도는 간단합니다. 아두이노 레오나르도와 Mpu-6050을 연결하기만 하면 됩니다.
Mpu-6050 을 손가락에 고정시키든 각자의 아이디어로 만들면 됩니다.
코드
아두이노스토리 카페에 있는 MPU-6050 예제를 변형시켜 사용하였습니다. http://cafe.naver.com/arduinostory/18039
아래는 zip 파일 내의 AirMouse.ino 파일의 소스입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#include <Wire.h>
#include "Kalman.h"
int16_t gyroX, gyroZ;
int Sensitivity = 600;
int delayi = 3;
uint32_t timer;
uint8_t i2cData[14]; // Buffer for I2C data
void setup() {
Serial.begin(9600);
Wire.begin();
i2cData[0] = 7; // Set the sample rate to 1000Hz - 8kHz/(7+1) = 1000Hz
i2cData[1] = 0x00; // Disable FSYNC and set 260 Hz Acc filtering, 256 Hz Gyro filtering, 8 KHz sampling
i2cData[3] = 0x00; // Set Accelerometer Full Scale Range to ±2g
while(i2cWrite(0x19,i2cData,4,false)); // Write to all four registers at once
while(i2cWrite(0x6B,0x01,true)); // PLL with X axis gyroscope reference and disable sleep mode
while(i2cRead(0x75,i2cData,1));
if(i2cData[0] != 0x68) { // Read "WHO_AM_I" register
Serial.print(F("Error reading sensor"));
while(1);
}
delay(100); // Wait for sensor to stabilize
/* Set kalman and gyro starting angle */
while(i2cRead(0x3B,i2cData,6));
timer = micros();
Mouse.begin();
}
void loop() {
/* Update all the values */
while(i2cRead(0x3B,i2cData,14));
gyroX = ((i2cData[8] << 8) | i2cData[9]);
gyroZ = ((i2cData[12] << 8) | i2cData[13]);
gyroX = gyroX / Sensitivity / 1.1 * -1;
gyroZ = gyroZ / Sensitivity * -1;
Serial.print("\t");
Serial.print(gyroX);
Serial.print(gyroZ);
Mouse.move(gyroZ, gyroX);
Serial.print("\r\n");
delay(delayi);
}
|
cs |
감도를 제어하려면 맨위의 Sensivity 값을 변경하면 됩니다. 작으면 감도가 빨라지는 대신 정확도가 작아지고, 크면 감도가 작아지는 대신 센서를 크게 움직여야 됩니다.
결과
손가락에 고정후 사용해봤습니다. 마우스 클릭을 위하여 임시로 마우스를 잡고 올린 상태에서 그리기를 했습니다. 왼쪽 마우스클릭을 구현해 볼 방법을 찾고 있습니다..
유시온