Тестовий ескіз комбінованого датчика 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-осьовий магнітометр і цифровий процесор руху. Він часто використовується в роботах, таких як квадрокоптери та інші безпілотні літальні апарати (БПЛА), оскільки він може точно вимірювати та відстежувати орієнтацію та рух. Він також використовується в інших програмах, таких як навігація, ігри та віртуальна реальність.
Апаратні компоненти
Для підключення модуля 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Електропроводка / З'єднання
Arduino | Датчик MPU6050 |
5V | VCC |
GND | GND |
A4 | ПДР |
A5 | SCA |
Встановлення Arduino IDE
По-перше, вам потрібно встановити програмне забезпечення Arduino IDE з офіційного сайту webсайт Arduino. Ось простий крок за кроком посібник «Як інсталювати Arduino IDE».
Встановлення бібліотек
Перш ніж почати завантажувати код, завантажте та розпакуйте наступні бібліотеки в /Program Files (x86)/Arduino/Libraries (за замовчуванням), щоб використовувати датчик із платою Arduino. Ось простий покроковий посібник «Як додати бібліотеки в Arduino IDE».
- MPU6050
- Adafruit_BMP085
- HMC5883L_Простий
Код
Тепер скопіюйте наступний код і завантажте його в програмне забезпечення Arduino IDE.
#include “I2Cdev.h” #include “MPU6050.h” #include #включити прискорювач MPU085; 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 успішне» : «З’єднання MPU085 не вдалося”); accelgyro.setI6050CBypassEnabled(true);amplingMode(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 Паскаль Serial.print(“Altitude = “); 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); // відображення значень accel/gyro 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, Ескіз комбінованого тестування датчика, Ескіз тестування датчика, Ескіз тестування |