Šajā gadījumā mēs runāsim par vienu no sensoriem, kas visbiežāk tiek izmantots Arduino projektos, kas saistīti ar navigāciju un orientāciju: GY-271. Šajā modulī ir iekļauts sensors HMC5883L, kas ir trīs asu magnetometrs, kas spēj noteikt magnētiskos laukus un tādējādi dod mums orientāciju attiecībā pret magnētiskajiem ziemeļiem.
Ja domājat par tā integrēšanu projektā ar Arduino, šajā rakstā mēs izskaidrosim visas tā detaļas: no tā īpašībām, savienošanas un programmēšanas līdz lietošanas piemēriem un padomiem, lai iegūtu vislabāko precizitāti. Tāpēc lasiet tālāk un uzziniet, kā izveidot digitālo kompasu ar Arduino!
Kas ir GY-271 sensors?
Sensors GY-271 Tas ir modulis, kas integrē magnetometru HMC5883L. Šī mikroshēma spēj izmērīt magnētisko lauku trīs asīs (X, Y un Z), un ar šiem datiem ir iespējams uzzināt orientāciju attiecībā pret Zemes magnētisko lauku. Šim sensoram ir augsta precizitāte, un to plaši izmanto inženiertehniskos projektos. robotu navigācija vai autonomie transportlīdzekļi.
Saziņa starp šo moduli un Arduino tiek veikta, izmantojot I2C autobuss, kas ievērojami atvieglo izmērīto datu iegūšanu. HMC5883L mērījumu diapazons ir no ±0.88 Gauss līdz ±8.1 Gauss, atkarībā no konfigurācijas, aptverot plašu lietojumu klāstu.
Savienojumi un montāža ar Arduino
GY-271 savienošana ar Arduino ir patiešām vienkārša, jums vienkārši ir nepieciešami daži kabeļi un jāievēro pamata diagramma:
- Pievienojiet tapu GND moduļa ar Arduino GND tapu
- PIN VCC GY-271 jābūt savienotam ar Arduino 5 V
- Pievienojiet tapu SDA GY-271 ar Arduino tapu A4 (vai SCL dažos modeļos, piemēram, Mega)
- PIN SCL jāiet uz Arduino tapas A5 (vai dažos gadījumos SDA)
Kad viss būs savienots, modulis būs gatavs darbam. Ja jūsu mērķis ir iegūt magnētiskā lauka datus un izveidot digitālo kompasu, jums jau ir pamati. Tomēr paturiet prātā, ka vide vietai, kur novietojat sensoru, jābūt brīvai magnētiskie traucējumi, jo tuvumā esošie metāli vai elektroniskās ierīces var mainīt mērījumus.
Koda piemēri ar Arduino
Zemāk mēs parādīsim pamata piemēru, kā nolasīt magnētiskā lauka X, Y un Z vērtības, izmantojot atbilstošo bibliotēku. Šī bibliotēka atvieglos I2C saziņu un sensoru rādījumus:
#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);
}
Šis kods ir ideāli piemērots magnētiskā lauka komponentu iegūšanai trīs asīs. Kad šīs vērtības ir iegūtas, varat aprēķināt sensora orientāciju attiecībā pret magnētiskajiem ziemeļiem, izmantojot funkciju atan2, kas ļaus mums pārvērst X un Y asis leņķī.
Leņķa aprēķins attiecībā pret ziemeļiem
Tagad, kad jums ir magnētiskā lauka rādījumi, nākamais solis ir aprēķināt orientāciju attiecībā pret magnētiskajiem ziemeļiem. Lai to izdarītu, varat izmantot šādu formulu:
float angulo = atan2(my, mx) * (180 / PI);
Šis aprēķins sniegs mums leņķi grādos, kas apzīmē virzienu uz magnētiskajiem ziemeļiem. Tomēr jums ir jāņem vērā magnētiskā deklinācija, kas ir atšķirība starp magnētiskajiem ziemeļiem un ģeogrāfiskajiem ziemeļiem. Atkarībā no jūsu ģeogrāfiskās atrašanās vietas šī vērtība var atšķirties, un ir svarīgi to labot, lai iegūtu precīzāku kompasu.
Papildu iestatījumi un darbības režīmi
GY-271 piedāvā vairākas konfigurācijas, kas ļaus pielāgot tā darbību atbilstoši savām vajadzībām. Piemēram, jūs varat izvēlēties divus darbības režīmi:
- nepārtraukts režīms: Magnetometrs nepārtraukti veic mērījumus un atjaunina atbilstošos reģistrus (X, Y, Z).
- Viena mērījuma režīms: Sensors nolasa tikai tad, kad Arduino to pieprasa, kas var būt noderīgi, ja vēlaties ietaupīt enerģiju.
Turklāt jūs varat pielāgot sensora jutību, modificējot rango de medición. Pieejamie diapazoni ir no ±0.88 Ga līdz ±8.1 Ga, ļaujot pielāgot sensoru dažādām vidēm un darba apstākļiem.
Atcerieties, ka, lai mainītu mērījumu diapazonu, ir jāizmanto funkcija setGain no bibliotēkas, kas ļauj iestatīt sensora pastiprinājumu atkarībā no magnētiskā diapazona, kuru vēlaties izmērīt.
GY-271 Pieteikumi
Sensoram GY-271 ir daudz pielietojumu robotikas un navigācijas jomā. Tā kā ierīce ir salīdzinoši lēta un viegli ieviešama, tā tiek izmantota tādos projektos kā:
- autonomie roveri: ļauj robotiem zināt, kurā virzienā tie ir vērsti.
- Kvadrakopteri: palīdz uzturēt drona orientāciju attiecībā pret ziemeļiem lidojuma laikā.
- navigācijas sistēmas: Jebkurš transportlīdzeklis, kuram jāzina tā atrašanās vieta un orientācija, var gūt labumu no šī moduļa.
Viena no dīvainākajām detaļām ir tāda, ka, lai gan GY-271 ir liela precizitāte kontrolētos apstākļos, tā mērījumus var ietekmēt iejaukšanās, piemēram, metālu klātbūtne vai tuvumā esoši elektromagnētiskie lauki. To var labot, izmantojot metodes kalibrēšana apvienojumā ar akselerometriem vai žiroskopiem (IMU), kas ir raksturīgi progresīvākām navigācijas sistēmām.
Šī sensora kombinācija ar akselerometriem, piemēram, ļauj uzbūvēt precīzākas ierīces, kas ir izturīgas pret magnētisko troksni, kas paver virkni iespēju izmantošanai projektos ar Arduino un citiem mikrokontrolleriem...