Проект 24: 3-осьовий гіроскоп + акселерометр на прикладі GY-521
В цьому експерименті ми познайомимося з акселерометром і гіроскопом і будемо за допомогою Arduino отримувати свідчення з цих датчиків.
Необхідні компоненти:
- контролер Arduino UNO R3;
- плата для прототипування;
- модуль GY-521;
- дроти тато-тато.
Модуль GY-521 на мікросхемі MPU6050 містить гіроскоп, акселерометр і температурний сенсор. На платі модуля GY-521 розташована необхідна обв'язка MPU6050, в тому числі підтягує резистори, стабілізатор напруги на 3,3 В з малим падінням напруги з фільтруючими конденсаторами. Обмін з мікро контролером здійснюється по шині I2C.
Гіроскоп являє собою пристрій, що реагує на зміну кутів орієнтації контрольованого тіла. Акселерометр - це пристрій, який вимірює проекцію удаваного прискорення, тобто різниці між істинним прискоренням об'єкта та гравітаційним ускореніем.Схема з'єднань плати GY-521 до Arduino показана на рис. 24.1.

Рис. 24.1. Схема з'єднання GY-521 до Arduino
Код простого скетчу для зчитування значень гіроскопа і акселерометра з датчика MPU6050 показаний в лістингу 24.1.
// підключення бібліотек
#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"
MPU6050 accelgyro;
int16_t ax, ay, az;
int16_t gx, gy, gz;
void setup ()
{
}
Wire.begin ();
Serial.begin (38400);
// ініціалізація
Serial.println ( "Initializing I2C devices ...");
accelgyro.initialize ();
delay (100);
}
void loop ()
{
// читання значень гіроскопа і акселерометра
accelgyro.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz);
// вивід значень в монітор
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);
}
Порядок підключення:
- Підключаємо плату GY521 до плати Arduino за схемою на рис. 24.1.
- Завантажуємо в плату Arduino скетч з лістингу 24.1.
- Відкриваємо монітор послідовного порту Arduino IDE і дивимося вивід даних гіроскопа і акселерометра (див. Рис. 24.2).
- При поворотах датчика дані змінюються.

Рис. 24.2. Вивід даних гіроскопа і акселерометра в монітор Arduino IDE
Область застосування таких датчиків досить широка. Даний модуль часто застосовують для стабілізації польоту квадрокоптера через спільного використання гіроскопа і акселерометра. Крім цього, модуль можна використовувати для координації різних пристроїв - від просто детектора руху до системи орієнтації різних роботів або управління рухами будь-якими пристроями. Область подібних сенсорних пристроїв досить нова і цікава для вивчення і застосування в аматорській техніці.