Добавянето на компас модул към вашия микроконтролер Arduino отваря множество възможности за проекти. Ето как да свържете такъв и да го използвате.

В съвременните проекти „Направи си сам“ е доста обичайно да се откриват усъвършенствани сензори като акселерометри и магнитометри, които са свързани с микроконтролери. Въпреки че може да сте използвали тези сензори на телефона си, трудно е да си представите как работят тези модули, но е изненадващо просто.

Компасният магнитометър GY-271 позволява отчитане на ориентация за различни приложения. Тук ще проучим процеса на свързване на сензора GY-271 с микроконтролер Arduino, как да го калибрирате и ще разгледаме проблемите, с които може да се сблъскате, докато го правите.

Какво представлява компасният модул GY-271?

Компасният модул GY-271 е високочувствителен магнитометър, който може да измерва магнитни полета в три измерения. Използва се за откриване на магнитното поле на Земята и определяне на посоката или ориентацията на устройства в приложения като навигационни системи, роботика и дронове. Мислете за него като за много прецизен цифров компас. Този сензор е оборудван с компактен и здрав дизайн, който го прави лесен за инсталиране и използване в широка гама от проекти.

instagram viewer

Как работи компасният модул GY-271?

Компасният модул GY-271 HCM5883L съдържа 3-осен магнитометърен сензор, който е базиран на анизотропна магнито-резистивна (AMR) технология. Сензорът измерва силата и посоката на магнитното поле на Земята чрез откриване на промените в съпротивлението на вътрешните AMR елементи.

Когато сензорът е изложен на магнитно поле, съпротивлението на AMR елементите се променя, генерирайки напрежение, което е пропорционално на силата и посоката на магнитното поле. След това цифровият сигнален процесор на сензора преобразува това напрежение в цифров сигнал, който може да бъде прочетен от микроконтролер. Чрез измерване на напрежението и в трите оси, сензорът може да осигури много точни показания на силата и посоката на магнитното поле в три измерения.

Свързване на GY-271 към Arduino Uno

Свързването на този модул към Arduino е доста лесно. Покрихме и други лесни за използване Arduino модули които могат да помогнат за мащабиране на вашия проект в бъдеще. Модулът GY-271 има общо пет пина, включително VCC, GNDи три сигнални пина (SDA, SCL, и ДРДИ).

Ще ви трябват следните компоненти:

  • Компасен модул GY-271 HMC5883L
  • Arduino Uno (или друг модел)
  • Джъмперни проводници (мъжки към мъжки и мъжки към женски)
  • Макет (по избор)

Първо свържете VCC и GND щифтове на модула GY-271 към 5V и GND щифтове на Arduino Uno, съответно.

След това свържете SDA и SCL щифтове на модула към A4 и A5 аналогови щифтове на Arduino Uno, съответно.

Инсталиране на необходимите библиотеки

Преди да започнете да работите с компасния модул GY-271 и Arduino, трябва да инсталирате необходимите библиотеки за комуникация със сензора.

Първата библиотека, която трябва да включите във вашата скица, е библиотеката Wire, която се използва за I2C комуникация между Arduino и сензора. Библиотеката Wire идва предварително инсталирана с Arduino IDE, така че не е необходимо да я изтегляте отделно. За да инсталирате втория, the HMC5883L библиотека, ще трябва да изпълните следните стъпки:

Отворете Arduino IDE и отидете на Скица > Включете библиотека > Управление на библиотеки.

В мениджъра на библиотеката потърсете HMC5883L в лентата за търсене.

Изберете HMC5883L библиотека специално от Adafruit. След като библиотеката е инсталирана, можете да я включите във вашата скица на Arduino, като отидете на Скица > Включете библиотека > HMC5883L.

Разбиране на Кодекса

Трябва да напишете програма, която инициализира сензора, чете неговите данни и изчислява силата и посоката на магнитното поле на Земята. Пълният код може да бъде изтеглен от нашия официален GitHub хранилище.

В началото на кода трябва да включите необходимите библиотеки, които току-що сте изтеглили.

#включват
#включват
#включват

Не забравяйте да зададете уникален идентификатор на сензора. Използвайте този ред, за да направите това:

Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);

В кода за настройка стартирайте серийния монитор и проверете дали сензорът реагира. Можете да отпечатате съобщения на монитора, за да актуализирате състоянието на сензора:

невалиденнастройвам(невалиден)
{
Сериен.започвам(9600);
Сериен.println(„Тест с магнитометър HMC5883“); Сериен.println("");

/* Инициализиране на сензора */
ако(! маг.започвам())
{
Сериен.println(„О, не е открит HMC5883... Проверете кабелите си!");
докато(1);
}
}

В цикъла първо вземете ново събитие на сензора:

сензори_събитие_т събитие;
mag.getEvent(&event);

След това покажете показанията на сензора на серийния монитор. Не забравяйте да зададете скоростта на предаване на 9600​​​​.

Сериен.печат("Х: "); Сериен.печат(event.magnetic.x); Сериен.печат(" ");
Сериен.печат("Y:"); Сериен.печат(event.magnetic.y); Сериен.печат(" ");
Сериен.печат("Z:"); Сериен.печат(event.magnetic.z); Сериен.печат(" ");Сериен.println("uT");

Дръжте модула така, че З сочи "нагоре" и измерете посоката с него х и Y. Като направите това, можете да изчислите посоката, когато магнитометърът е нивелиран. Този ред код помага за това е:

плавам заглавие = атан2(event.magnetic.y, event.magnetic.x);

След като имате своя заглавие, след това трябва да добавите своя деклинационен ъгъл, което е грешката на магнитното поле във вашето местоположение.

плавам деклинационен ъгъл = 0.663;
 заглавие += ъгъл на отклонение;

Можете удобно да намерите ъгъла на деклинация на вашата местна област на Уеб сайт за магнитна деклинация. Ако по някаква причина не можете да намерите вашия ъгъл на деклинация, коментирайте двата реда от вашия код.

Коментирането на двата реда код може да доведе до грешни показания на сензора. Опитайте всичко възможно да калибрирате сензора преди употреба.

Накрая отпечатайте заглавието на серийния монитор и добавете забавяне, за да изчакате половин секунда, преди да прочетете отново.

Сериен.печат("Заглавие (градуси): ");
Сериен.println(заглавие Градуси);
забавяне(500);

От тук можете да персонализирате кода, за да отговаря на нуждите на вашия проект и да добавите допълнителни функции, като например регистриране на данни.

Ако предпочитате да използвате библиотеката на Adafruit, препоръчваме да я намерите от Хранилището на GitHub на Adafruit.

Четене и интерпретиране на данни от компаса

Данните от сензора, показани в серийния монитор, показват векторните стойности на магнитното поле, измерени от магнитометъра в микротесла (μT) съответно за осите X, Y и Z. Тези стойности могат да се използват за определяне на ориентацията и големината на магнитното поле.

Стойността на посоката, показана в градуси, също е важна и представлява посоката на магнитния северен полюс спрямо позицията на сензора. Това четене може да се използва в проекти, при които трябва да се определи посоката на движещ се обект, като роботика, навигация и системи за геолокация.

Калибриране на сензора

Ако вече сте инсталирали друга библиотека за модула HMC5883L, ще трябва да я деинсталирате или изтриете. В противен случай може да получите грешки при компилиране или да видите предупреждения във вашия сериен монитор по време на калибриране. Препоръчваме да използвате Библиотеката на Яржебски наличен в GitHub, тъй като има пълните ресурси за калибриране, необходими за този раздел.

Първо изтеглете zip файла от хранилището, като щракнете върху Код > Изтеглете ZIP.

След това отворете Arduino IDE и щракнете върху Скица > Включете библиотека > Добавяне на библиотека.

Изберете Arduino-HMC5883 zip файл, който току-що сте изтеглили, и Arduino IDE след това автоматично ще инсталира библиотеката вместо вас.

Стартирайте скицата за калибриране, налична в хранилището, докато местите сензора върху равна повърхност при качване. Стойностите, получени от серийния монитор, са стойностите на отместване на вашия сензор, които можете да използвате, за да коригирате показанията си, докато използвате компаса по време на вашите проекти.

Проблеми, в които може да се натъкнете

Има няколко грешки, с които някой може да се сблъска при свързване на модула на компаса с Arduino. Ето няколко примера и техните решения:

Грешки при компилиране: Това може да възникне, ако необходимите библиотеки не са включени или ако има синтактични грешки в кода. За да коригирате това, уверете се, че сте инсталирали правилните библиотеки и проверете кода си за синтактични грешки. Както сме виждали много пъти, може случайно да сте инсталирали множество библиотеки HCM5883L.

Грешка при компилация: „Adafruit_HMC5883_Unified“ прави не име на тип

Комуникационни грешки: Ако не можете да комуникирате с модула на компаса, уверете се, че сте го свързали към правилните щифтове на вашия Arduino и че окабеляването ви е правилно. Може също да се наложи да коригирате I2C адреса на модула във вашия код, ако е различен от стандартния, който е 0x1E.

Грешка използвайки hmc5883l/testDevice (линия246) Грешка при комуникация със сензора HMC5883L. Стойността Прочети от ID_A, ID_B и ID_C регистри направине съответства на очакваните стойности.

Магнитни смущения: Ако показанията на компаса са нестабилни или се колебаят, това може да се дължи на магнитни смущения от близки обекти. Преместете модула далеч от всякакви магнити или други източници на магнитни смущения, за да получите по-стабилни показания.

Усъвършенствайте проектите си с компасния модул GY-271

Възможността да използвате компасния модул GY-271 HCM5883L отваря врата за изграждане на по-сложни проекти „Направи си сам“ с помощта на Arduino, като GPS-насочвани роувъри и дронове „Направи си сам“. Възможностите са безкрайни, особено когато добавите други сензори.