본문 바로가기

[아두이노] GY-86 모듈로 FreeIMU 사용하기

by rudals.kim 2021. 7. 11. 댓글 개
반응형

GY-86 모듈은 10-DOF(10 Degrees of Freedom) IMU(Inertial measurement unit : 관성측정장치) 센서 보드로 MPU6050(3축 자이로 + 3축 가속도) + HMC5883L(3축 자계) + MS5611(대기 압력) 센서의 조합으로 9축의 Pitch, Roll, Yaw 데이터와 고도계(대기 압력) 데이터를 제공되어 이러한 데이터를 사용하여 멀티위/멀티콥터 등의 자세 제어 목적으로 많이 사용되고 있습니다.

 

GY-86 모듈 보드의 간략한 특징은 아래와 같습니다.

  10DOF modules (3축 자이로 + 3축 가속도 + 3축 지자계 + 대기압력)
  Sensor : MPU6050 + HMC5883L + MS5611
  gyroscope range: ±250, ±500, ±1000, and ±2000°/sec
  Acceleration range: ±2g, ±4g, ±8g, ±16g
  HMC5883L: Measuring range: ± 1~8 Gauss.
  Power supply :3-5v 
  Interface : I2C
  Weight: 1.46g
  Size: 22 x 17mm

자세한 내용은 아래는 관련 부품의 데이터 시트입니다.

MPU6050 : https://invensense.tdk.com/wp-content/uploads/2015/02/MPU-6000-Datasheet1.pdf
HMC5883L : https://media.digikey.com/PDF/Data%20Sheets/Honeywell%20PDFs/HMC5883L.pdf
MS5611 : https://www.amsys-sensor.com/downloads/data/MS5611-01BA03-AMSYS-datasheet.pdf

 

HMC5883L.pdf
0.75MB
MPU-6000-Datasheet1.pdf
1.56MB
MS5611-01BA03-AMSYS-datasheet.pdf
1.09MB

아래와 같은 외형을 가지고 있으며 아두이노 보드와 I2C 통신을 위한 2개의 라인과 전원(+5V, GND) 2개의 라인 총 4개의 라인만 연결시키면 간단히 테스트가 가능합니다.

쉽게 사용하기 위해서 아래와 같은 서브 보드를 만들었습니다.

이런 식으로 ISP 포트에 꽂아서 사용합니다. (ISP 포트를 사용하는 것이 아니고 단지 꽂아서 사용하는 용도로 이용합니다.)

아래 FreeIMU 사이트에서 FreeIMU-20121122_1126.zip 파일을 다운로드 받습니다.

 

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

FreeIMU is an ongoing research project which aims to design Open Hardware 9/10 DOM/DOF Inertial Measurement Units as well as easy to use Orientation and Motion Sensing libraries, built on top of the Arduino platform. The goal of the FreeIMU Framework is to

www.varesano.net

다운로드한 zip 파일을 압축을 해제하면 arduino 관련 라이브러리와 processing 관련 GUI 예제가 제공됩니다.

아래 아두이노 관련 라이브러리를 아두이노 IDE에 설치합니다.

라이브러리 설치하는 방법은 여기를 참고하시면 됩니다.

라이브러리 설치가 완료되었으면 FreeIMU에서 제공되는 FreeIMU_serial 예제를 불러온 후 아두이노 보드에 업로드를 합니다.

processing 설치는 아래 게시글을 참고해 주시기 바랍니다.

 

[Processing] 프로세싱 시작하기

위키백과에 보면 프로세싱에 대해서 아래와 같이 설명하고 있습니다. 프로세싱(Processing)은 컴퓨터 프로그래밍의 본질을 시각적 개념으로 프로그래머가 아닌 사람들에게 교육할 목적으

rudalskim.tistory.com

processing을 실행하여 FreeIMU에서 제공되는 FreeIMU_cube.pde 예제를 불러옵니다.

불러온 예제 파일에서 아두이노 ide에서 사용하는 COM 포트로 변경 후 실행해 봅니다.

/* 아래와 같이 수정합니다. */
//final String serialPort = "/dev/ttyUSB9"; 
final String serialPort = "COM9"; /* 아두이노 IDE에서 사용하는 COM 포트 */

 

아래와 같은 에러가 발생됩니다.

 

제공된 예제가 구버전이라서 에러가 발생되는데 아래와 같이 수정후 재실행해 봅니다.

/* 아래와 같이 수정합니다.*/
//size(VIEW_SIZE_X, VIEW_SIZE_Y, OPENGL); 
size(800, 600, P3D);

 

정상적으로 실행이 되며 GY-86에서 제공되는 데이터를 읽어 들여 3D 큐브 형태로 보여줍니다.

아래는 아두이노 UNO와 GY-86 모듈을 사용하여 FreeIMU를 테스트한 동영상입니다.

반응형

댓글