Скица за тестване на комбиниран сензор ARDUINO GY87
Въведение
Ако сте запален производител или ентусиаст по роботика, вие сте попаднали на този малък, но мощен модул. Ако сте запален производител или ентусиаст по роботика, вие сте попаднали на този малък, но мощен модул барометър BMP085. Модулът GY-87 IMU е чудесен начин да добавите отчитане на движение към вашите проекти, като самобалансиращ се робот или квадрокоптер.
Но преди да можете да започнете да експериментирате с GY-87 IMU модула, трябва да знаете как да го свържете с вашата платка Arduino. Ето къде идва този блог! В следващите параграфи ще разгледаме основите на модула GY-87 IMU, как да го настроим и как да напишем кода на Arduino за четене на данните от сензора. Ще предоставим и някои съвети и ресурси за отстраняване на често срещани проблеми.
Така че, ако сте готови да започнете, нека се потопим и научим за взаимодействието на модула GY-87 IMU с Arduino!
Какво е GY-87 IMU MPU6050
Модулите на инерционни измервателни единици (IMU) като GY-87 комбинират много сензори в един пакет, като акселерометър/жироскоп MPU6050, магнитометър HMC5883L и сензор за барометрично налягане BMP085. Следователно GY-87 IMU MPU6050 е 9-осов модул за проследяване на движението "всичко в едно", който съчетава 3-осов жироскоп, 3-ос акселерометър, 3-ос магнитометър и цифров процесор за движение. Използва се много в роботизирани проекти, като квадрокоптери и други безпилотни летателни апарати (UAV), защото може точно да измерва и проследява ориентацията и движението. Използва се и в други приложения, като навигация, игри и виртуална реалност.
Хардуерни компоненти
Ще ви е необходим следният хардуер за свързване на GY-87 IMU MPU6050 HMC5883L BMP085 модул с Arduino.
Компоненти | Стойност | Кол |
Arduino UNO | – | 1 |
MPU6050 Модул на сензора | GY-87 | 1 |
Бредборд | – | 1 |
Джъмпърни проводници | – | 1 |
GY-87 с Arduino
Сега, след като разбрахте GY-87, време е да се свържете с Arduino. За да направите това, следвайте След като разбрахте GY-87, е време да се свържете с Arduino. За да направите това, следвайте
Схематичен
Направете връзки според електрическата схема, дадена по-долу
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoОкабеляване/Връзки
Ардуино | Сензор MPU6050 |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Инсталиране на Arduino IDE
Първо, трябва да инсталирате софтуера Arduino IDE от неговия официален webсайт Arduino. Ето едно просто ръководство стъпка по стъпка за „Как да инсталирам Arduino IDE.“
Инсталиране на библиотеки
Преди да започнете да качвате код, изтеглете и разархивирайте следните библиотеки в /Program Files (x86)/Arduino/Библиотеки (по подразбиране), за да използвате сензора с платката Arduino. Ето едно просто ръководство стъпка по стъпка за „Как да добавяте библиотеки в Arduino IDE.“
- MPU6050
- Adafruit_BMP085
- HMC5883L_Прост
Код
Сега копирайте следния код и го качете в софтуера Arduino IDE.
#include “I2Cdev.h” #include “MPU6050.h” #include #включи MPU085 accelgyro; Adafruit_BMP5883 bmp; HMC6050L_Прост компас; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = false; void setup() { Serial.begin(16); Wire.begin(); // инициализиране на устройства Serial.println(“Инициализиране на I13C устройства…”); // инициализиране на bmp9600 if (!bmp.begin()) { Serial.println(“Не може да се намери валиден сензор BMP2, проверете (!bmp.begin()) { Serial.println(“Не може да се намери валиден сензор BMP085, проверете Serial.println(accelgyro.testConnection()? „Връзката с MPU085 е неуспешна“); 085, 'E'); Compass.SetSamplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // конфигуриране на Arduino LED за проверка на дейността pinMode(LED_PIN, OUTPUT); } void loop() {
Serial.print(“Температура = “); Serial.print(bmp.readTemperature());
Serial.println(” *C”); Serial.print(“Налягане = “);
Serial.print(bmp.readPressure()); Serial.println(” Pa”); // Изчисляване на надморска височина, приемайки „стандартно“ барометрично // налягане от 1013.25 милибара = 101325 Pascal 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(заглавие); // мига светодиод, за да покаже активност blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState); забавяне (500); }
Нека го тестваме
След като качите кода, е време да тествате веригата! Кодът в програмата Arduino се свързва със сензорите, използвайки техните библиотеки, което му позволява да чете данни от сензори и да задава различни конфигурации на сензорите. След това отпечатва данните от сензора през серийния порт. Светодиодът се използва, за да покаже, че веригата прави нещо. Това означава, че светодиодът мига всеки път, когато се изпълнява функцията за цикъл, което показва, че кодът активно чете стойности на сензора.
Работно обяснение
Кодът е основното нещо, на което се базира работата на веригата. И така, нека разберем кода:.
- Първо, той включва няколко библиотеки за взаимодействие със сензорите:
- „I2Cdev.h“ и „MPU6050.h“ са библиотеки за 6050-осов акселерометър/жироскоп сензор MPU6
- “Adafruit_BMP085.h” е библиотека за сензора за барометрично налягане BMP085.
- “HMC5883L_Simple.h” е библиотека за сензора за магнитометър HMC5883L.
- След това създава глобални обекти за трите сензора: MPU6050 accelgyro, Adafruit_BMP085 bmp и HMC5883L_Simple Compass.
- След това дефинира някои променливи за съхраняване на стойности на сензора, като ax, ay и az за акселерометъра на MPU6050 и за насочване към магнитометъра на HMC5883L. И дефинира LED_PIN константа и blinkState променлива.
- Функцията setup() стартира серийна комуникация и започва I2C комуникация. След това инициализира трите сензора:
- Сензорът BMP085 се инициализира чрез извикване на метода begin(). Ако това върне false, което показва, че сензорът не може да бъде намерен, програмата влиза в безкраен цикъл и отпечатва съобщение за грешка през серийния порт.
- Сензорът MPU6050 се инициализира чрез извикване на метода initialize() и проверка дали работи правилно. И зададе I2C байпаса, активиран за MPU6050.
- Сензорът HMC5883L се инициализира чрез извикване на някои функции, като SetDeclination, SetSamplingMode, SetScale и SetOrientation, за задаване на различни конфигурации за сензора.
- Във функцията loop() кодът чете данни от трите сензора и ги отпечатва през серийния порт:
- Той отчита температура, налягане, надморска височина и налягане на морското равнище от сензора.
- Той чете сурово ускорение и измервания на жироскоп от сензора MPU6050.
- Той чете посоката от сензора HMC5883L, което е ъгълът между посоката, в която е насочен сензорът, и посоката, в която лежи магнитният север.
- Накрая, светодиодът мига, за да покаже активност и изчаква момент, преди да преразчете сензорите.
Документи / Ресурси
![]() |
Скица за тестване на комбиниран сензор ARDUINO GY87 [pdf] Ръководство за потребителя GY87 Комбинирана тестова скица на сензора, GY87, Комбинирана тестова скица на сензора, Тестова скица на сензора, Тестова скица |