아두이노 우노 R3 자이로스코프 센서 MPU6050 값 읽어보자.
오늘은 아두이노 센서 중에서 '자이로스코프 MPU6050'이라는 녀석을 다뤄볼 생각인데요. 그동안 이름은 알고 있었지만 정확히 어떤 원리인지는 몰라서 지식백과를 찾아서 읽어봤는데 말이 참 어렵네요. ㅎㅎ '문과' 출신인 제가 이해할 수 있는 수준은 '항상 일정한 방향과 수평을 유지하려는 성질을 가진 것'이라는 정도인데 구입한 아두이노 키트 중에 아주 작은 자이로스코프 센서 MPU6050이 있길래 아두이노 우노 R3와 연결해서 어떤 값들을 전달하는지 확인해보려고 합니다.
(많은 분들이 이미 정리해놓으신 예제를 보면서 따라 하는 수준이라서 내용은 허접하지만 초보 나름대로 이것저것 익혀보는 과정입니다.)
▲ 오늘 예제를 만들어볼 아두이노 우노 R3와 자이로스코프 센서 MPU6050인데요. 자이로 센서의 크기가 상당히 작죠? 좀 더 확대해서 살펴볼게요.
▲ 이렇게 작은 센서 위에 선명하게 X, Y, Z의 값을 출력한다고 표시가 되어 있는데 그림만 봐서는... 어떻게 움직였을 때 그 값들이 변하는지 저 같은 초보는 한눈에 이해하기는 좀 어렵네요. ㅎㅎ 후다닥 아두이노와 연결해서 직접 움직여보면서 값의 변화를 살펴봐야겠습니다.
이 녀석에게서 데이터를 받아오기 위해서는 I2Cdev와 MPU6050 라이브러리가 필요한데 파일은 아래와 같습니다.
이걸 받아서 압축을 풀면 아래 그림과 같이 여러 개의 파일이 들어 있는데요.
▲ 이 중에서 I2Cdev와 MPU6050 폴더를 복사해서 아두이노 라이브러리에 복사해서 추가하면 되네요.
▲ 이렇게 두 녀석을 추가 해놓고요. 아두이노 우노 R3와 자이로스코프 센서를 연결하겠습니다.
▲ 자이로스코프 센서의 VCC와 GND를 아두이노 보드 각각에 연결을 했고요. SDA는 아날로그 4번에 SCL은 아날로그 5번으로 각각 연결을 했습니다.
다음 과정으로 첨부했던 파일 중에서 i2CScanner 소스 코드를 아두이노 보드에 업로드해서 자이로 센서를 제대로 인식하는지부터 확인해봅니다.
▲ 이처럼 Scanning... 하면서 장치를 찾았다는 메시지가 나오네요. 다음은 라이브러리에 추가한 예제 파일을 실행해서 값들을 읽어볼게요.
▲ [파일 > 예제 > MPU6050 > Examples > MPU6050_raw] 예제를 선택하고 업로드했습니다. (calibration이나 DMP6는 제가 뭘 잘못 설정했는지 실행이 안되네요.ㅠ.ㅠ 그래도 일단 이 센서가 제 역할을 하는지 확인해보고자 실행되는 예제만 사용해보기로 했습니다.)
▲ 그렇게 업로드하고 시리얼 모니터를 확인하니.... 엄청난 속도로 출력이 되는데 글자가 다 깨져 보여서 깜짝 놀랐네요. ㅎ 원인을 보니 이 예제는 보드레이트를 38400으로 설정해야 하는군요.
▲ 그래서 보트레이트를 그림처럼 38400 bps로 바꾸고... 출력되는 속도가 너무 빨라서 소스 코드에 delay(1000)을 넣어서 값의 변화를 천천히 살펴보기로 했습니다. 실제로 사용할 때는 이렇게 빠르게 읽어 들이는 게 유리할 거 같지만 처음 접하는 오늘은 값의 변화를 천천히 살펴봤고요.
프로그램을 업로드하고 자이로스코프 센서를 아래 영상처럼 여러 방향으로 움직여서 결과를 확인해봤습니다.
이렇게 들어오는 값을 어떻게 활용해야 할지는 좀 더 공부를 해야겠지만 오늘은 이 센서를 처음 접하는 과정만을 정리해봤습니다.