🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


🧭 Проект: электронный компас на GY-273 с выводом на LCD1602

Схема электронного компаса на GY-273 с выводом на LCD1602

GY-273 определяет азимут по магнитному полю Земли, значение в градусах выводится на дисплей.

Как это работает

GY-273 — это модуль на базе трёхосевого магнитометра (чип HMC5883L или его аналог QMC5883L), который измеряет напряжённость магнитного поля Земли отдельно по трём осям X, Y и Z. Из соотношения значений по осям X и Y вычисляется азимут — угол между направлением «вперёд» платы и направлением на магнитный север, выраженный в градусах от 0 до 359.

Магнитный север, который показывает такой компас, немного отличается от географического (истинного) севера — эта разница называется магнитным склонением и зависит от местоположения на Земле. Для большинства бытовых DIY-проектов (определение сторон света, навигация робота) эта разница несущественна, но для точной навигации её можно скомпенсировать отдельной поправкой в коде.

Магнитометр очень чувствителен к посторонним источникам магнитного поля — рядом работающие моторы, динамики, большие металлические предметы или даже близко расположенные провода с сильным током искажают показания. Поэтому важна калибровка: во время неё датчик вращают в разные стороны, чтобы библиотека запомнила диапазон реальных показаний по каждой оси и скорректировала смещение (offset), вызванное самой платой и близким окружением.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. Подключите GY-273 по шине I2C: SDA → A4, SCL → A5, VCC → 3.3-5V (уточните по своей плате, многие модули имеют стабилизатор и терпят 5В), GND → GND.
  2. Подключите LCD1602 с I2C-переходником на ту же шину I2C (SDA/SCL общие для обоих модулей — I2C поддерживает несколько устройств на одной паре проводов, если у них разные адреса).
  3. Расположите модуль компаса подальше от моторов, динамиков и силовых проводов — чем дальше от источников помех, тем стабильнее показания.
  4. Прежде чем полагаться на показания, выполните калибровку: добавьте в `setup()` однократный вызов `compass.calibrate()` и повращайте плату во все стороны в течение нескольких секунд, затем уберите эту строку из постоянного кода.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

#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: Электронные модули.

← 🐣 терморегулятор инкубатора на DS18B20 и рел…📐 индикатор наклона на MPU-6050 и RGB-светод… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 473 ₽ 426 ₽ (экономия 47 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA