Добавление модуля компаса к вашему микроконтроллеру Arduino открывает множество возможностей для проектов. Вот как его подключить и использовать.
В современных проектах «сделай сам» довольно часто встречаются продвинутые датчики, такие как акселерометры и магнитометры, которые взаимодействуют с микроконтроллерами. Хотя вы, возможно, использовали эти датчики на своем телефоне, сложно представить, как работают эти модули, но это удивительно просто.
Датчик компаса-магнитометра GY-271 позволяет определять ориентацию для различных приложений. Здесь мы рассмотрим процесс сопряжения датчика GY-271 с микроконтроллером Arduino, способы его калибровки и рассмотрим проблемы, с которыми вы можете столкнуться при этом.
Что такое модуль компаса GY-271?
Компасный модуль GY-271 представляет собой высокочувствительный магнитометр, способный измерять магнитные поля в трех измерениях. Он используется для обнаружения магнитного поля Земли и определения направления или ориентации устройств в таких приложениях, как навигационные системы, робототехника и дроны. Думайте об этом как об очень точном цифровом компасе. Этот датчик имеет компактную и прочную конструкцию, что упрощает его установку и использование в самых разных проектах.
Как работает модуль компаса GY-271?
Модуль компаса GY-271 HCM5883L содержит 3-осевой датчик магнитометра, основанный на технологии анизотропного магниторезистивного (AMR) метода. Датчик измеряет силу и направление магнитного поля Земли, обнаруживая изменения сопротивления ее внутренних элементов AMR.
Когда датчик подвергается воздействию магнитного поля, сопротивление элементов AMR изменяется, создавая напряжение, пропорциональное силе и направлению магнитного поля. Процессор цифровых сигналов датчика затем преобразует это напряжение в цифровой сигнал, который может быть прочитан микроконтроллером. Измеряя напряжение по всем трем осям, датчик может обеспечить высокоточные показания силы и направления магнитного поля в трех измерениях.
Подключение GY-271 к Arduino Uno
Подключить этот модуль к Arduino довольно просто. Мы также рассмотрели другие простые в использовании модули Arduino которые могут помочь масштабировать ваш проект в будущем. Модуль GY-271 имеет всего пять контактов, в том числе ВКК, ЗАЗЕМЛЕНИЕ, и три сигнальных контакта (ПДД, СКЛ, и ДРДИ).
Вам понадобятся следующие компоненты:
- Модуль компаса GY-271 HMC5883L
- Arduino Uno (или другая модель)
- Перемычки (папа-папа и папа-мама)
- Макет (по желанию)
Сначала подключите ВКК и ЗАЗЕМЛЕНИЕ контакты модуля GY-271 к 5В и ЗАЗЕМЛЕНИЕ контакты Arduino Uno соответственно.
Далее подключите ПДД и СКЛ контакты модуля к А4 и А5 аналоговые выводы Arduino Uno соответственно.
Установка необходимых библиотек
Прежде чем вы сможете начать работу с модулем компаса GY-271 и Arduino, вам необходимо установить необходимые библиотеки для связи с датчиком.
Первая библиотека, которую вам нужно включить в свой скетч, — это библиотека Wire, которая используется для связи I2C между Arduino и датчиком. Библиотека Wire предустановлена вместе с Arduino IDE, поэтому вам не нужно загружать ее отдельно. Чтобы установить второй, HMC5883L библиотеку, вам нужно будет выполнить следующие шаги:
Откройте IDE Arduino и перейдите к Эскиз > Включить библиотеку > Управление библиотеками.
В диспетчере библиотек найдите HMC5883L в строке поиска.
Выберите HMC5883L библиотека специально от Adafruit. После установки библиотеки вы можете включить ее в свой скетч Arduino, перейдя в Эскиз > Включить библиотеку > HMC5883L.
Понимание кода
Вам нужно написать программу, которая инициализирует датчик, считывает его данные и вычисляет силу и направление магнитного поля Земли. Полный код можно скачать с нашего официального Репозиторий GitHub.
В начале кода вам нужно включить необходимые библиотеки, которые вы только что скачали.
#включать
#включать
#включать
Не забудьте присвоить датчику уникальный идентификатор. Используйте эту строку, чтобы сделать это:
Магазин Adafruit_HMC5883_Unified = Adafruit_HMC5883_Unified(12345);
В коде установки запустите последовательный монитор и проверьте, отвечает ли датчик. Вы можете распечатать сообщения на мониторе, чтобы обновить статус датчика:
пустотанастраивать(пустота)
{
Серийный.начинать(9600);
Серийный.печать(«Тест магнитометра HMC5883»); Серийный.печать("");
/* Инициализируем датчик */
если(!маг.начинать())
{
Серийный.печать("К сожалению, HMC5883 не обнаружен... Проверь проводку!");
пока(1);
}
}
В цикле сначала получаем новое событие датчика:
датчики_event_t событие;
mag.getEvent(&event);
Затем отобразите показания датчика на последовательном мониторе. Не забудьте установить скорость передачи данных 9600.
Серийный.Распечатать("ИКС: "); Серийный.Распечатать(событие.магнитное.х); Серийный.Распечатать(" ");
Серийный.Распечатать("Ю:"); Серийный.Распечатать(событие.магнитное.у); Серийный.Распечатать(" ");
Серийный.Распечатать("З:"); Серийный.Распечатать(событие.магнитное.z); Серийный.Распечатать(" ");Серийный.печать("ЮТ");
Держите модуль так, чтобы Z указывает «вверх» и измерьте курс с помощью Икс и Д. Делая это, вы можете рассчитать курс, когда магнитометр выровнен. Эта строка кода помогает в этом:
плавать заголовок = атан2(событие.магнитное.у, событие.магнитное.х);
Как только у вас есть заголовок, вы должны затем добавить свой угол склонения, что является ошибкой магнитного поля в вашем местоположении.
плавать угол склонения = 0.663;
заголовок += угол склонения;
Вы можете удобно найти угол склонения вашей местности на Веб-сайт магнитного склонения. Если по какой-то причине вы не можете найти свой угол склонения, закомментируйте две строки кода.
Комментирование двух строк кода может привести к ошибочным показаниям датчика. Постарайтесь откалибровать датчик перед использованием.
Наконец, выведите заголовок на последовательный монитор и добавьте задержку на полсекунды перед повторным чтением.
Серийный.Распечатать(«Заголовок (градусы):»);
Серийный.печать(рубрика «Уровни»);
задерживать(500);
Отсюда вы можете настроить код в соответствии с потребностями вашего проекта и добавить дополнительные функции, такие как регистрация данных.
Если вы предпочитаете использовать библиотеку Adafruit, мы рекомендуем получить ее из GitHub-репозиторий Adafruit.
Чтение и интерпретация данных компаса
Данные датчика, отображаемые на последовательном мониторе, показывают значения вектора магнитного поля, измеренные магнитометром в микротеслах (мкТл) для осей X, Y и Z соответственно. Эти значения можно использовать для определения ориентации и величины магнитного поля.
Значение курса, отображаемое в градусах, также важно и представляет направление магнитного северного полюса относительно положения датчика. Это чтение можно использовать в проектах, где необходимо определить направление движущегося объекта, например, в робототехнике, навигации и системах геолокации.
Калибровка датчика
Если вы уже установили другую библиотеку для модуля HMC5883L, вам потребуется удалить или удалить ее. В противном случае вы можете получить ошибки компиляции или увидеть предупреждения на последовательном мониторе во время калибровки. Мы рекомендуем использовать библиотека Ярзебского доступен на GitHub, так как он содержит полные ресурсы калибровки, необходимые для этого раздела.
Сначала загрузите zip-файл из репозитория, нажав на Код > Скачать ZIP.
Затем откройте Arduino IDE и нажмите Эскиз > Включить библиотеку > Добавить библиотеку.
Выберите Ардуино-HMC5883 zip, который вы только что загрузили, и Arduino IDE автоматически установит для вас библиотеку.
Запустите эскиз калибровки, доступный в репозитории, перемещая датчик по плоской поверхности после загрузки. Значения, полученные от последовательного монитора, являются значениями смещения вашего датчика, которые вы можете использовать для корректировки показаний при использовании компаса в своих проектах.
Проблемы, с которыми вы можете столкнуться
Есть несколько ошибок, с которыми кто-то может столкнуться при сопряжении модуля компаса с Arduino. Вот несколько примеров и их обходные пути:
Ошибки компиляции: Это может произойти, если необходимые библиотеки не включены или если в коде есть синтаксические ошибки. Чтобы это исправить, убедитесь, что вы установили правильные библиотеки, и проверьте свой код на наличие синтаксических ошибок. Как мы видели много раз, вы могли случайно установить несколько библиотек HCM5883L.
Ошибка компиляции: «Адафрут_HMC5883_Unified» делает нет назвать тип
Ошибки связи: Если вы не можете установить связь с модулем компаса, убедитесь, что вы подключили его к правильным контактам на Arduino и правильность подключения. Вам также может потребоваться настроить адрес I2C модуля в вашем коде, если он отличается от значения по умолчанию, то есть 0x1E.
Ошибка с использованием hmc5883l/testDevice (линия246) Ошибка связи с датчиком HMC5883L. Значение читать от ID_A, ID_B и Регистры ID_C делатьнет соответствуют ожидаемым значениям.
Магнитные помехи: Если показания компаса нестабильны или колеблются, это может быть связано с магнитными помехами от близлежащих объектов. Отодвиньте модуль от любых магнитов или других источников магнитных помех, чтобы получить более стабильные показания.
Усовершенствуйте свои проекты с помощью модуля компаса GY-271
Возможность использовать модуль компаса GY-271 HCM5883L открывает двери для создания более сложных проектов «сделай сам» с использованием Arduino, таких как марсоходы с GPS-наведением и самодельные дроны. Возможности безграничны, особенно когда вы добавляете другие датчики.