
Интернет-магазин «Неглупый Дом»
GY-273 определяет азимут по магнитному полю Земли, значение в градусах выводится на дисплей.
GY-273 — это модуль на базе трёхосевого магнитометра (чип HMC5883L или его аналог QMC5883L), который измеряет напряжённость магнитного поля Земли отдельно по трём осям X, Y и Z. Из соотношения значений по осям X и Y вычисляется азимут — угол между направлением «вперёд» платы и направлением на магнитный север, выраженный в градусах от 0 до 359.
Магнитный север, который показывает такой компас, немного отличается от географического (истинного) севера — эта разница называется магнитным склонением и зависит от местоположения на Земле. Для большинства бытовых DIY-проектов (определение сторон света, навигация робота) эта разница несущественна, но для точной навигации её можно скомпенсировать отдельной поправкой в коде.
Магнитометр очень чувствителен к посторонним источникам магнитного поля — рядом работающие моторы, динамики, большие металлические предметы или даже близко расположенные провода с сильным током искажают показания. Поэтому важна калибровка: во время неё датчик вращают в разные стороны, чтобы библиотека запомнила диапазон реальных показаний по каждой оси и скорректировала смещение (offset), вызванное самой платой и близким окружением.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
#include <Wire.h>
#include <QMC5883LCompass.h>
#include <LiquidCrystal_I2C.h>
QMC5883LCompass compass;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
compass.init();
lcd.init();
lcd.backlight();
}
void loop() {
compass.read(); // считываем свежие данные с трёх осей магнитометра
int azimuth = compass.getAzimuth(); // 0-359 градусов, 0 = магнитный север
lcd.setCursor(0, 0);
lcd.print("Azimuth: ");
lcd.print(azimuth);
lcd.print(" deg ");
Serial.print("Азимут: ");
Serial.println(azimuth);
delay(500); // достаточно для плавного отображения на глаз
}
Библиотека QMC5883LCompass (автор MPrograms) совместима с чипами HA5883/QMC5883L/HMC5883L, которые используются в модулях компаса этого типа. Перед первым использованием стоит выполнить калибровку (`compass.calibrate()`) вдали от источников магнитных помех.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 473 ₽ 426 ₽ (экономия 47 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.