Me këtë rast, do të flasim për një nga sensorët që përdoret më së shumti në projektet Arduino në lidhje me navigimin dhe orientimin: GY-271. Ky modul përfshin sensorin HMC5883L, i cili është një magnetometër me tre boshte i aftë të zbulojë fushat magnetike dhe, për rrjedhojë, të na japë orientimin në lidhje me veriun magnetik.
Nëse po mendoni ta integroni atë në një projekt me Arduino, gjatë këtij artikulli do t'ju shpjegojmë të gjitha detajet e tij: nga karakteristikat e tij, mënyra e lidhjes dhe programimit të tij, deri te shembujt e përdorimit dhe këshillat për të marrë saktësinë më të mirë. Pra, lexoni dhe zbuloni se si të krijoni një busull dixhitale me Arduino!
Çfarë është sensori GY-271?
Sensori GY-271 Është një modul që integron magnetometrin HMC5883L. Ky çip është në gjendje të matë fushën magnetike në tre akset (X, Y dhe Z) dhe, me këto të dhëna, është e mundur të dihet orientimi në lidhje me fushën magnetike të Tokës. Ky sensor ka saktësi të lartë dhe përdoret gjerësisht në projektet inxhinierike. navigimi i robotëve ose automjete autonome.
Komunikimi ndërmjet këtij moduli dhe Arduino bëhet përmes Autobusi I2C, e cila lehtëson shumë marrjen e të dhënave të matura. HMC5883L ka një gamë matjeje prej ±0.88 Gauss deri në ±8.1 Gauss, në varësi të konfigurimit, duke mbuluar një gamë të gjerë aplikimesh.
Lidhjet dhe montimi me Arduino
Lidhja e GY-271 me Arduino-n tuaj është vërtet e thjeshtë, ju nevojiten vetëm disa kabllo dhe ndiqni diagramin bazë:
- Lidhni kunjin GND i modulit me pinin GND të Arduino-s
- PIN-i KQV-së i GY-271 duhet të lidhet me 5V të Arduino
- Lidhni kunjin burime natyrore i GY-271 me pin A4 të Arduino (ose SCL në disa modele si Mega)
- PIN-i SCL duhet të shkojë në pin A5 të Arduino (ose SDA në disa raste)
Pasi të keni lidhur gjithçka, moduli do të jetë gati për të filluar punën. Nëse qëllimi juaj është të merrni të dhëna të fushës magnetike dhe të krijoni një busull dixhitale, ju tashmë i keni bazat. Megjithatë, mbani në mend se mjedis vendi ku vendosni sensori duhet të jetë pa interferenca magnetike, pasi metalet ose pajisjet elektronike aty pranë mund të ndryshojnë matjet.
Shembuj kodesh me Arduino
Më poshtë, ne ju tregojmë një shembull bazë se si të lexoni vlerat X, Y dhe Z të fushës magnetike duke përdorur bibliotekën e duhur. Kjo bibliotekë do të lehtësojë komunikimin I2C dhe leximin e sensorëve:
#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);
}
Ky kod është ideal për marrjen e komponentëve të fushës magnetike në të tre akset. Pasi të keni këto vlera, mund të llogaritni orientimin e sensorit në lidhje me veriun magnetik duke përdorur funksionin atan2, e cila do të na lejojë të konvertojmë boshtet X dhe Y në një kënd.
Llogaritja e këndit në lidhje me veriun
Tani që keni leximet e fushës magnetike, hapi tjetër është llogaritja e orientimit në lidhje me veriun magnetik. Për ta bërë këtë, mund të përdorni formulën e mëposhtme:
float angulo = atan2(my, mx) * (180 / PI);
Kjo llogaritje do të na sigurojë një kënd në shkallë që përfaqëson drejtimin drejt veriut magnetik. Megjithatë, duhet të keni parasysh deklinimi magnetik, i cili është ndryshimi midis veriut magnetik dhe veriut gjeografik. Në varësi të vendndodhjes suaj gjeografike, kjo vlerë mund të ndryshojë dhe është e rëndësishme ta korrigjoni atë për të marrë një busull më të saktë.
Cilësimet shtesë dhe mënyrat e funksionimit
GY-271 ofron disa konfigurime që do t'ju lejojnë të rregulloni funksionimin e tij sipas nevojave tuaja. Për shembull, ju mund të zgjidhni dy mënyrat e funksionimit:
- mënyra e vazhdueshme: Magnetometri kryen vazhdimisht matje dhe përditëson regjistrat përkatës (X, Y, Z).
- Mënyra e vetme e matjes: Sensori merr një lexim vetëm kur e kërkon Arduino, gjë që mund të jetë e dobishme nëse doni të kurseni energji.
Për më tepër, mund të rregulloni ndjeshmërinë e sensorit duke modifikuar rango de medición. Gama e disponueshme varion nga ±0.88 Ga në ±8.1 Ga, duke ju lejuar të përshtatni sensorin në mjedise dhe kushte të ndryshme pune.
Mos harroni se, për të ndryshuar diapazonin e matjes, duhet të përdorni funksionin setGain nga biblioteka, e cila ju lejon të vendosni fitimin e sensorit në varësi të diapazonit magnetik që dëshironi të matni.
Aplikimet GY-271
Sensori GY-271 ka aplikime të shumta në fushën e robotikës dhe navigimit. Duke qenë një pajisje relativisht e lirë dhe e lehtë për t'u zbatuar, ajo përdoret në projekte të tilla si:
- rover autonome: Lejon robotët të dinë se në cilin drejtim janë përballur.
- Kuadkopterë: Ndihmon në ruajtjen e orientimit të dronit në lidhje me veriun gjatë fluturimit.
- sistemet e navigimit: Çdo automjet që duhet të dijë pozicionin dhe orientimin e tij mund të përfitojë nga ky modul.
Një nga detajet më kurioze është se, megjithëse GY-271 ka saktësi të madhe në kushte të kontrolluara, matja e tij mund të ndikohet nga ndërhyrje, të tilla si prania e metaleve ose fushave elektromagnetike pranë. Kjo mund të korrigjohet duke përdorur teknika kalibrim kombinuar me përshpejtuesit ose xhiroskopët (IMU), gjë që është tipike në sistemet më të avancuara të navigimit.
Kombinimi i këtij sensori me akselerometrat, për shembull, lejon ndërtimin e pajisjeve më të sakta që janë rezistente ndaj zhurmës magnetike, gjë që hap një sërë mundësish për përdorim në projekte me Arduino dhe mikrokontrollues të tjerë...