По този повод ще говорим за един от сензорите, които се използват най-често в проекти на Arduino, свързани с навигация и ориентация: GY-271. Този модул включва сензора HMC5883L, който е триосен магнитометър, способен да открива магнитни полета и следователно да ни дава ориентация по отношение на магнитния север.
Ако обмисляте да го интегрирате в проект с Arduino, в тази статия ще обясним всички негови подробности: от неговите характеристики, как да го свържете и програмирате, до примери за употреба и съвети за постигане на най-добра прецизност. Така че прочетете и разберете как да създадете цифров компас с Arduino!
Какво представлява сензорът GY-271?
Сензорът GY-271 Това е модул, който интегрира магнитометъра HMC5883L. Този чип може да измерва магнитното поле в трите оси (X, Y и Z) и с тези данни е възможно да се знае ориентацията по отношение на магнитното поле на Земята. Този сензор има висока точност и се използва широко в инженерни проекти. роботна навигация или автономни превозни средства.
Комуникацията между този модул и Arduino се осъществява чрез I2C шина, което значително улеснява получаването на измерените данни. HMC5883L има диапазон на измерване от ±0.88 Gauss до ±8.1 Gauss, в зависимост от конфигурацията, покриващ широк спектър от приложения.
Връзки и сглобяване с Arduino
Свързването на GY-271 към вашия Arduino е наистина лесно, просто ви трябват няколко кабела и следвайте основната диаграма:
- Свържете щифта GND на модула с щифта GND на Arduino
- ПИН кодът VCC на GY-271 трябва да бъде свързан към 5V на Arduino
- Свържете щифта S.D.A. на GY-271 с щифт A4 на Arduino (или SCL в някои модели като Mega)
- ПИН кодът SCL трябва да отиде до щифт A5 на Arduino (или SDA в някои случаи)
След като свържете всичко, модулът ще бъде готов да започне работа. Ако целта ви е да получите данни за магнитното поле и да създадете цифров компас, вече имате основите. Имайте предвид обаче, че околна среда мястото, където поставите сензора, трябва да е без магнитни смущения, тъй като близките метали или електронни устройства могат да променят измерванията.
Примери за код с Arduino
По-долу ви показваме основен пример за това как да прочетете стойностите X, Y и Z на магнитното поле, като използвате подходящата библиотека. Тази библиотека ще улесни I2C комуникацията и отчитането на сензорите:
#include <Wire.h>
#include <HMC5883L.h>
HMC5883L compass;
int16_t mx, my, mz;
void setup() {
Serial.begin(9600);
Wire.begin();
compass.initialize();
}
void loop() {
compass.getHeading(&mx, &my, &mz);
Serial.print("X: ");
Serial.print(mx);
Serial.print(" Y: ");
Serial.print(my);
Serial.print(" Z: ");
Serial.println(mz);
delay(500);
}
Този код е идеален за получаване на компонентите на магнитното поле в трите оси. След като имате тези стойности, можете да изчислите ориентацията на сензора по отношение на магнитния север, като използвате функцията атан2, което ще ни позволи да преобразуваме осите X и Y в ъгъл.
Изчисляване на ъгъла спрямо севера
Сега, след като имате показанията на магнитното поле, следващата стъпка е да изчислите ориентацията по отношение на магнитния север. За да направите това, можете да използвате следната формула:
float angulo = atan2(my, mx) * (180 / PI);
Това изчисление ще ни предостави ъгъл в градуси, който представлява посоката към магнитния север. Трябва обаче да вземете предвид магнитна деклинация, което е разликата между магнитния север и географския север. В зависимост от вашето географско местоположение тази стойност може да варира и е важно да я коригирате, за да получите по-точен компас.
Допълнителни настройки и режими на работа
GY-271 предлага няколко конфигурации, които ще ви позволят да регулирате работата му според вашите нужди. Например, можете да изберете две режими на работа:
- непрекъснат режим: Магнитометърът непрекъснато извършва измервания и актуализира съответните регистри (X, Y, Z).
- Режим на единично измерване: Сензорът отчита само когато Arduino го поиска, което може да бъде полезно, ако искате да пестите енергия.
Освен това можете да регулирате чувствителността на сензора, като промените rango de medición. Наличните диапазони варират от ±0.88 Ga до ±8.1 Ga, което ви позволява да адаптирате сензора към различни среди и работни условия.
Не забравяйте, че за да промените обхвата на измерване, трябва да използвате функцията setGain от библиотеката, което ви позволява да зададете усилването на сензора в зависимост от магнитния диапазон, който искате да измерите.
GY-271 Приложения
Сензорът GY-271 има множество приложения в областта на роботиката и навигацията. Като сравнително евтино и лесно за изпълнение устройство, то се използва в проекти като:
- автономни роувъри: Позволява на роботите да знаят в коя посока са обърнати.
- Квадрокоптери: Помага за поддържане на ориентацията на дрона по отношение на север по време на полет.
- навигационни системи: Всяко превозно средство, което трябва да знае своята позиция и ориентация, може да се възползва от този модул.
Една от най-любопитните подробности е, че въпреки че GY-271 има голяма прецизност при контролирани условия, измерването му може да бъде повлияно от смущения, като например наличието на метали или близки електромагнитни полета. Това може да се коригира с помощта на техники калибровка комбинирани с акселерометри или жироскопи (IMU), което е типично за по-модерните навигационни системи.
Комбинацията от този сензор с акселерометри, например, позволява изграждането на по-прецизни устройства, които са устойчиви на магнитен шум, което отваря набор от възможности за използване в проекти с Arduino и други микроконтролери...