ARDUINO GY87 결합 센서 테스트 스케치
소개
열렬한 제작자나 로봇 애호가라면 이 작지만 강력한 모듈을 접했을 것입니다. 열렬한 제작자나 로봇 애호가라면 이 작지만 강력한 모듈인 BMP085 기압계를 접했을 것입니다. GY-87 IMU 모듈은 자체 균형 로봇이나 쿼드콥터와 같은 프로젝트에 동작 감지를 추가하는 좋은 방법입니다.
그러나 GY-87 IMU 모듈로 실험을 시작하기 전에 Arduino 보드와 인터페이스하는 방법을 알아야 합니다. 그것이이 블로그가 들어오는 곳입니다! 다음 단락에서는 GY-87 IMU 모듈의 기본 사항, 설정 방법, 센서 데이터를 읽기 위해 Arduino 코드를 작성하는 방법을 다룰 것입니다. 또한 일반적인 문제를 해결하기 위한 몇 가지 팁과 리소스를 제공합니다.
따라서 시작할 준비가 되었으면 GY-87 IMU 모듈과 Arduino의 인터페이스에 대해 자세히 알아보십시오!
GY-87 IMU MPU6050은 무엇입니까
GY-87과 같은 관성 측정 장치(IMU) 모듈은 MPU6050 가속도계/자이로스코프, HMC5883L 자력계 및 BMP085 기압 센서와 같은 많은 센서를 단일 패키지에 결합합니다. 따라서 GY-87 IMU MPU6050은 9축 자이로스코프, 3축 가속도계, 3축 자력계 및 디지털 모션 프로세서를 결합한 올인원 3축 모션 추적 모듈입니다. 방향과 동작을 정확하게 측정하고 추적할 수 있기 때문에 쿼드콥터 및 기타 무인 항공기(UAV)와 같은 로봇 프로젝트에서 많이 사용됩니다. 내비게이션, 게임 및 가상 현실과 같은 다른 응용 프로그램에서도 사용됩니다.
하드웨어 구성 요소
Arduino와 GY-87 IMU MPU6050 HMC5883L BMP085 모듈을 인터페이스하려면 다음 하드웨어가 필요합니다.
구성 요소 | 값 | 수량 |
아두이노 우노 | – | 1 |
MPU6050 센서 모듈 | GY-87 | 1 |
브레드보드 | – | 1 |
점퍼 와이어 | – | 1 |
GY-87 아두이노
이제 GY-87을 이해했으므로 Arduino와 인터페이스할 시간입니다. 그렇게 하려면 GY-87을 이해했으므로 이제 Arduino와 인터페이스할 시간입니다. 그렇게 하려면 다음을 따르십시오.
개략도
아래 주어진 회로도에 따라 연결하십시오.
GY-87 IMU MPU6050 HMC5883L BMP085 아두이노배선 / 연결
아두이노 | MPU6050 센서 |
5V | (주)비씨씨 |
접지 | 접지 |
A4 | 재림교회 |
A5 | 에스에이(SCA) |
아두이노 IDE 설치
먼저 공식 사이트에서 Arduino IDE 소프트웨어를 설치해야 합니다. web사이트 아두이노. 다음은 "Arduino IDE 설치 방법"에 대한 간단한 단계별 가이드입니다.
라이브러리 설치
코드 업로드를 시작하기 전에 /Program에서 다음 라이브러리를 다운로드하고 압축을 풉니다. Files(x86)/Arduino/Libraries(기본값) Arduino 보드와 함께 센서를 사용하기 위해. 다음은 "Arduino IDE에서 라이브러리를 추가하는 방법"에 대한 간단한 단계별 가이드입니다.
- MPU6050
- Adafruit_BMP085
- HMC5883L_단순
암호
이제 다음 코드를 복사하여 Arduino IDE 소프트웨어에 업로드합니다.
#포함 "I2Cdev.h" #포함 "MPU6050.h" #포함 #포함하다 MPU085 가속 자이로; Adafruit_BMP5883 bmp; HMC6050L_간단한 나침반; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 부울 깜박임 상태 = 거짓; 무효 설정() { Serial.begin(16); Wire.begin(); // 장치 초기화 Serial.println("I13C 장치 초기화 중..."); // 초기화 bmp9600 if (!bmp.begin()) { Serial.println(“유효한 BMP2 센서를 찾을 수 없습니다. 확인하십시오(!bmp.begin()) { Serial.println(“유효한 BMP085 센서를 찾을 수 없습니다. check Serial.println(accelgyro.testConnection() ? “MPU085 연결 성공” : “MPU085 연결 실패”); accelgyro.setI6050CBypassEnabled(true); // 게이트웨이의 바이패스 모드를 hmc6050L로 설정 // hmc2l 초기화 Compass.SetDeclination(5883, 5883, 'E');나침반.세트Samp링모드(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // 활동 확인을 위해 Arduino LED 구성 pinMode(LED_PIN, OUTPUT); } 무효 루프() {
Serial.print("온도 = "); Serial.print(bmp.readTemperature());
Serial.println(” *C”); Serial.print("압력 = ");
Serial.print(bmp.readPressure()); Serial.println("Pa"); // '표준' 기압을 가정하여 고도 계산 // 기압 1013.25밀리바 = 101325 파스칼 Serial.print("고도 = "); Serial.print(bmp.readAltitude()); Serial.println("미터"); Serial.print("해수면 압력(계산됨) = ");
Serial.print(bmp.readSealevelPressure()); Serial.println("Pa");
Serial.print("실제 고도 = "); Serial.print(bmp.readAltitude(101500));
Serial.println("미터"); // 장치 accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz)에서 원시 가속/자이로 측정값 읽기; // 탭으로 구분된 가속/자이로 x/y/z 값 표시 Serial.print(“a/g:\t”); Serial.print(ax);
Serial.print("\t"); Serial.print(ay); Serial.print("\t"); Serial.print(az);
Serial.print("\t"); Serial.print(gx); Serial.print("\t"); Serial.print(gy);
Serial.print("\t"); Serial.println(gz); 플로트 표제 =
Compass.GetHeadingDegrees(); Serial.print("제목: \t"); Serial.println( 제목 ); // 활동을 나타내기 위해 LED를 깜박임 blinkState = !blinkState;
digitalWrite(LED_PIN, 깜박임상태); 지연(500); }
그것을 테스트하자
코드를 업로드하면 회로를 테스트할 시간입니다! Arduino 프로그램의 코드는 라이브러리를 사용하여 센서와 인터페이스하므로 센서 데이터를 읽고 센서의 다양한 구성을 설정할 수 있습니다. 그런 다음 직렬 포트를 통해 센서 데이터를 인쇄합니다. LED는 회로가 무언가를 하고 있음을 나타내는 데 사용됩니다. 즉, 루프 기능이 실행될 때마다 LED가 깜박이며 코드가 센서 값을 적극적으로 읽고 있음을 나타냅니다.
작업 설명
코드는 회로 작동의 기반이 되는 주요 항목입니다. 이제 코드를 이해해 봅시다.
- 첫째, 센서와 인터페이스하기 위한 여러 라이브러리가 포함되어 있습니다.
- "I2Cdev.h" 및 "MPU6050.h"는 MPU6050 6축 가속도계/자이로스코프 센서용 라이브러리입니다.
- "Adafruit_BMP085.h"는 BMP085 기압 센서용 라이브러리입니다.
- “HMC5883L_Simple.h”는 HMC5883L 자력계 센서용 라이브러리입니다.
- 그런 다음 MPU6050 accelgyro, Adafruit_BMP085 bmp 및 HMC5883L_Simple Compass의 세 가지 센서에 대한 전역 객체를 생성합니다.
- 다음으로 MPU6050의 가속도계에 대한 ax, ay, az와 같은 센서 값을 저장하고 HMC5883L의 자력계에 대한 향하는 몇 가지 변수를 정의합니다. 그리고 LED_PIN 상수와 blinkState 변수를 정의합니다.
- setup() 함수는 직렬 통신을 시작하고 I2C 통신을 시작합니다. 그런 다음 세 개의 센서를 초기화합니다.
- BMP085 센서는 begin() 메서드를 호출하여 초기화됩니다. 이것이 센서를 찾을 수 없음을 나타내는 false를 반환하면 프로그램은 무한 루프에 들어가 직렬 포트를 통해 오류 메시지를 인쇄합니다.
- MPU6050 센서는 initialize() 메서드를 호출하고 올바르게 작동하는지 확인하여 초기화됩니다. 그리고 MPU2에 대해 활성화된 I6050C 바이패스를 설정합니다.
- HMC5883L 센서는 SetDeclination, SetS와 같은 일부 함수를 호출하여 초기화됩니다.amplingMode, SetScale 및 SetOrientation - 센서에 대해 다른 구성을 설정합니다.
- loop() 함수에서 코드는 세 개의 센서에서 데이터를 읽고 직렬 포트를 통해 출력합니다.
- 센서에서 해수면의 온도, 압력, 고도 및 압력을 읽습니다.
- MPU6050 센서에서 원시 가속도 및 자이로스코프 측정값을 읽습니다.
- 센서가 가리키는 방향과 자북이 있는 방향 사이의 각도인 HMC5883L 센서에서 방향을 읽습니다.
- 마지막으로 LED를 깜박여 활동을 표시하고 센서를 다시 읽기 전에 잠시 기다립니다.
문서 / 리소스
![]() |
ARDUINO GY87 결합 센서 테스트 스케치 [PDF 파일] 사용자 매뉴얼 GY87 결합 센서 테스트 스케치, GY87, 결합 센서 테스트 스케치, 센서 테스트 스케치, 테스트 스케치 |