Arduino GY8511
тел. +7(499)347-04-82
Описание Arduino GY8511
Отличный выбор датчика! GY-8511 — это популярный и недорогой модуль на базе компасного чипа HMC5883L (реже встречаются варианты с QMC5883L). Он широко используется в проектах Arduino для определения ориентации в пространстве.
Описание модуля GY-8511
Модуль GY-8511 представляет собой плату с 3-осевым магнитометром (электронным компасом). Его основная функция — измерение силы и направления магнитного поля Земли, что позволяет определять магнитный азимут (направление относительно магнитного севера).
Принцип работы: Датчик содержит материал, сопротивление которого меняется в зависимости от силы и направления воздействующего магнитного поля. По измеренным значениям по трем осям (X, Y, Z) микроконтроллер вычисляет угол курса.
Ключевые особенности:
- Цифровой интерфейс: Обмен данными по I2C, что упрощает подключение и требует всего 2 сигнальных провода.
- Низкое энергопотребление: Идеален для портативных и автономных устройств.
- Высокая чувствительность: Способен улавливать слабые магнитные поля.
- Компактность: Небольшие габариты платы.
Технические характеристики
Характеристики приведены для базового чипа HMC5883L, который чаще всего установлен на GY-8511.
| Параметр | Значение / Описание | | :--- | :--- | | Основной чип | Honeywell HMC5883L (или аналог QMC5883L, LSM303) | | Интерфейс связи | I2C (адрес по умолчанию: 0x1E для HMC5883L) | | Напряжение питания | 3.3В (ВАЖНО! Плата имеет стабилизатор, но логические уровни — 3.3В) | | Измерительные оси | 3 оси (X, Y, Z) | | Диапазон измерений | ±1.3 – ±8.1 Гаусса (настраивается программно). Для компаса обычно ±1.3 Гс. | | Разрешение | До 0.73 мГаусс (милиГаусс) на отсчет (при диапазоне ±1.3 Гс) | | Частота обновления | До 75 Гц (настраивается) | | Температурный диапазон | -40°C … +85°C | | Ключевой вывод | DRDY (Data Ready) — вывод прерывания, сигнализирующий о готовности данных. |
ВАЖНОЕ ПРЕДУПРЕЖДЕНИЕ: Хотя плата имеет стабилизатор 5V -> 3.3V для питания датчика, логические уровни I2C-шины (выводы SCL/SDA) — 3.3V. Подключение напрямую к 5V-контроллерам (как классический Arduino Uno) может повредить датчик. Рекомендуется использовать:
- Платы Arduino с логикой 3.3V (Arduino Due, Zero, большинство ESP32/ESP8266).
- Преобразователь уровней (Level Shifter) для линий SCL/SDA.
- Подключение через резисторы-ограничители тока (~4.7 кОм) с подтяжкой к 3.3V (рискованный метод).
Парт-номера и совместимые модели
Модуль продается под разными названиями, но имеет идентичную или очень схожую схему.
Парт-номера модулей (фактически одно и то же):
- GY-8511 (наиболее распространенное название)
- HMC5883L Compass Module
- QMC5883L Compass Module (функциональный аналог, часто с тем же расположением пинов)
- GY-271 (часто используется для модулей с HMC5883L)
- Magnetometer Module V2 / V3
Совместимые / Аналогичные датчики (по функционалу):
- QMC5883L: Более современный аналог от китайских производителей. Имеет совместимый по выводам модуль, но может требовать другой библиотеки. Адрес I2C часто 0x0D.
- LSM303DLHC / LSM303AGR: Комбинированный датчик (акселерометр + магнитометр). Значительно более продвинутый, также использует I2C.
- MMC5983MA: Высокоточный магнитометр с большим диапазоном.
- BMM150 (от Bosch): Часто встречается в модулях GY-273, используется в носимой электронике.
Подключение к Arduino (на примере HMC5883L)
Схема подключения (с использованием преобразователя уровней для 5V Arduino):
| Модуль GY-8511 | Преобразователь уровней (3.3V сторона) | Преобразователь уровней (5V сторона) | Arduino Uno (5V) | | :--- | :--- | :--- | :--- | | VCC | -> | | 3.3V или 5V (через стабилизатор на плате) | | GND | -> | -> | GND | | SCL | -> SCL | SCL -> | A5 (или SCL-пин) | | SDA | -> SDA | SDA -> | A4 (или SDA-пин) | | DRDY | | | Не подключается или на цифровой пин (опционально) |
Необходимые библиотеки для Arduino IDE:
- Для HMC5883L: Официальной библиотеки от Honeywell нет, но популярна библиотека
Adafruit_HMC5883_U(от Adafruit) илиHMC5883L(от jarzebski). - Для QMC5883L: Библиотека
QMC5883LCompassилиQMC5883L.
Пример базового кода (с библиотекой Adafruit_HMC5883_U):
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_HMC5883_U.h>
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);
void setup() {
Serial.begin(9600);
if (!mag.begin()) {
Serial.println("Не найден HMC5883L!");
while (1);
}
}
void loop() {
sensors_event_t event;
mag.getEvent(&event);
// Вычисляем угол курса (в радианах) относительно магнитного севера
float heading = atan2(event.magnetic.y, event.magnetic.x);
// Конвертируем радианы в градусы
float headingDegrees = heading * 180 / M_PI;
// Корректируем склонение (узнайте для вашей местности). Например, +6.5 градусов.
headingDegrees += 6.5;
// Нормализуем от 0 до 360
if (headingDegrees < 0) headingDegrees += 360;
Serial.print("Курс: "); Serial.println(headingDegrees);
delay(500);
}
Сферы применения:
- Робототехника (навигация, ориентация).
- Беспилотные модели (квадрокоптеры, самолеты, машины).
- Умные компасы и навигационные устройства.
- Системы отслеживания положения (в сочетании с акселерометром и гироскопом).
- Интерактивные инсталляции и искусство.
Вывод: GY-8511 — это отличный начальный магнитометр для Arduino-проектов, связанных с определением направления. Главное — помнить о необходимости согласования уровней напряжения 3.3V/5V при подключении к классическим платам Arduino.