Tilføjelse af et kompasmodul til din Arduino mikrocontroller åbner op for et væld af muligheder for projekter. Sådan tilslutter du en og bruger den.

I moderne gør-det-selv-projekter er det ret almindeligt at finde avancerede sensorer såsom accelerometre og magnetometre, der forbindes med mikrocontrollere. Selvom du måske har brugt disse sensorer på din telefon, er det svært at forestille sig, hvordan disse moduler fungerer, men det er overraskende enkelt.

GY-271 kompasmagnetometersensoren muliggør orienteringsføling til forskellige applikationer. Her vil vi udforske processen med at forbinde GY-271-sensoren med en Arduino-mikrocontroller, hvordan man kalibrerer den og ser på de problemer, du kan støde på, mens du gør det.

Hvad er GY-271 kompasmodulet?

GY-271 kompasmodulet er et meget følsomt magnetometer, der kan måle magnetiske felter i tre dimensioner. Det bruges til at detektere Jordens magnetfelt og bestemme retningen eller orienteringen af ​​enheder i applikationer som navigationssystemer, robotter og droner. Tænk på det som et meget præcist digitalt kompas. Denne sensor er udstyret med et kompakt og robust design, der gør den nem at installere og bruge i en lang række projekter.

instagram viewer

Hvordan virker GY-271 kompasmodulet?

GY-271 HCM5883L kompasmodulet indeholder en 3-akset magnetometersensor, som er baseret på anisotropisk magneto-resistiv (AMR) teknologi. Sensoren måler styrken og retningen af ​​Jordens magnetfelt ved at detektere ændringerne i modstanden af ​​dens interne AMR-elementer.

Når sensoren udsættes for et magnetfelt, ændres AMR-elementernes modstand, hvilket genererer en spænding, der er proportional med magnetfeltets styrke og retning. Sensorens digitale signalprocessor konverterer så denne spænding til et digitalt signal, som kan læses af en mikrocontroller. Ved at måle spændingen i alle tre akser kan sensoren give meget nøjagtige aflæsninger af magnetfeltets styrke og retning i tre dimensioner.

Tilslutning af GY-271 til en Arduino Uno

At forbinde dette modul til Arduino er ret ligetil. Vi har også dækket andre brugervenlige Arduino-moduler som kan hjælpe med at skalere dit projekt i fremtiden. GY-271 modulet har i alt fem ben, inkl VCC, GND, og tre signalben (SDA, SCL, og DRDY).

Du skal bruge følgende komponenter:

  • GY-271 HMC5883L kompasmodul
  • Arduino Uno (eller anden model)
  • Jumper ledninger (han-til-han og han-til-hun)
  • Brødbræt (valgfrit)

Tilslut først VCC og GND benene på GY-271-modulet til 5V og GND stifter af henholdsvis Arduino Uno.

Tilslut derefter SDA og SCL stifter af modulet til A4 og A5 analoge ben på Arduino Uno, hhv.

Installation af de nødvendige biblioteker

Før du kan begynde at arbejde med GY-271 kompasmodulet og Arduino, skal du installere de nødvendige biblioteker til at kommunikere med sensoren.

Det første bibliotek, du skal inkludere i din skitse, er Wire-biblioteket, som bruges til I2C-kommunikation mellem Arduino'en og sensoren. Wire-biblioteket leveres forudinstalleret med Arduino IDE, så du behøver ikke at downloade det separat. For at installere den anden, den HMC5883L bibliotek, skal du følge disse trin:

Åbn Arduino IDE og gå til Skitse > Inkluder bibliotek > Administrer biblioteker.

I biblioteksadministratoren, søg efter HMC5883L i søgefeltet.

Vælg HMC5883L bibliotek specifikt fra Adafruit. Når biblioteket er installeret, kan du inkludere det i din Arduino-skitse ved at gå til Skitse > Inkluder bibliotek > HMC5883L.

Forståelse af koden

Du skal skrive et program, der initialiserer sensoren, læser dens data og beregner Jordens magnetfelts styrke og retning. Den fulde kode kan downloades fra vores embedsmand GitHub-depot.

I starten af ​​koden skal du inkludere de nødvendige biblioteker, du lige har downloadet.

#omfatte
#omfatte
#omfatte

Glem ikke at tildele sensoren et unikt ID. Brug denne linje til at gøre det:

Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);

I opsætningskoden skal du starte den serielle monitor og kontrollere, om sensoren reagerer. Du kan udskrive meddelelser til monitoren for at opdatere sensorens status:

ugyldigOpsætning(ugyldig)
{
Seriel.begynde(9600);
Seriel.println("HMC5883 Magnetometer Test"); Seriel.println("");

/* Initialiser sensoren */
hvis(!mag.begynde())
{
Seriel.println("Ups, ingen HMC5883 fundet... Tjek dine ledninger!");
mens(1);
}
}

I løkken får du først en ny sensorhændelse:

sensors_event_t begivenhed;
mag.getEvent(&event);

Vis derefter aflæsningerne af sensoren til den serielle monitor. Glem ikke at indstille baudraten til 9600​​​​.

Seriel.Print("X: "); Seriel.Print(event.magnetic.x); Seriel.Print(" ");
Seriel.Print("Y:"); Seriel.Print(event.magnetic.y); Seriel.Print(" ");
Seriel.Print("Z:"); Seriel.Print(event.magnetic.z); Seriel.Print(" ");Seriel.println("uT");

Hold modulet så Z peger "op" og mål overskriften med x og Y. Ved at gøre dette kan du så beregne kursen, når magnetometeret er i vater. Denne kodelinje hjælper med det er:

flyde overskrift = atan2(event.magnetic.y, event.magnetic.x);

Når du har din overskrift, skal du så tilføje din deklinationsvinkel, som er fejlen i magnetfeltet i din placering.

flyde deklinationsvinkel = 0.663;
 overskrift += declinationAngle;

Du kan bekvemt finde deklinationsvinklen for dit lokalområde på Magnetisk deklination hjemmeside. Hvis du af en eller anden grund ikke kan finde din deklinationsvinkel, så kommenter de to linjer fra din kode.

At kommentere de to linjer kode kan resultere i fejlagtige sensoraflæsninger. Prøv dit bedste for at kalibrere sensoren før brug.

Til sidst skal du udskrive overskriften til den serielle monitor og tilføje en forsinkelse til at vente et halvt sekund, før du læser igen.

Seriel.Print("Overskrift (grader):");
Seriel.println(overskriftDegrees);
forsinke(500);

Herfra kan du tilpasse koden, så den passer til dit projekts behov og tilføje yderligere funktioner såsom datalogning.

Hvis du foretrækker at bruge Adafruit-biblioteket, anbefaler vi, at du køber det fra Adafruits GitHub-depot.

Læsning og fortolkning af kompasdata

Sensordataene, der vises på den serielle monitor, viser magnetfeltvektorværdierne målt af magnetometeret i mikroteslaer (μT) for henholdsvis X-, Y- og Z-akserne. Disse værdier kan bruges til at bestemme orienteringen og størrelsen af ​​det magnetiske felt.

Kursværdien vist i grader er også vigtig og repræsenterer retningen af ​​den magnetiske nordpol i forhold til sensorens position. Denne aflæsning kan bruges i projekter, hvor retningen af ​​et bevægende objekt skal bestemmes, såsom i robotteknologi, navigation og geolokaliseringssystemer.

Sensorkalibrering

Hvis du allerede har installeret et andet bibliotek til HMC5883L-modulet, skal du afinstallere eller slette det. Ellers kan du få kompileringsfejl eller se advarsler i din serielle skærm under kalibrering. Vi anbefaler at bruge Jarzebskis bibliotek tilgængelig på GitHub, da den har de komplette kalibreringsressourcer, der er nødvendige for dette afsnit.

Download først zip-filen fra depotet ved at klikke på Kode > Download ZIP.

Åbn derefter Arduino IDE og klik på Skitse > Inkluder bibliotek > Tilføj bibliotek.

Vælg Arduino-HMC5883 zip-fil, som du lige har downloadet, og Arduino IDE installerer derefter biblioteket automatisk for dig.

Kør kalibreringsskitsen, der er tilgængelig i depotet, mens du flytter sensoren rundt på en flad overflade ved upload. Værdierne opnået fra den serielle monitor er din sensors offsetværdier, som du kan bruge til at korrigere dine aflæsninger, mens du bruger kompasset under dine projekter.

Problemer du kan løbe ind i

Der er adskillige fejl, som nogen kan løbe ind i, når de forbinder kompasmodulet med Arduino. Her er et par eksempler og deres løsninger:

Kompilationsfejl: Disse kan forekomme, hvis de nødvendige biblioteker ikke er inkluderet, eller hvis der er syntaksfejl i koden. For at løse dette skal du sørge for at have installeret de korrekte biblioteker og kontrollere din kode for eventuelle syntaksfejl. Som vi har set mange gange, kan du ved et uheld have installeret flere HCM5883L-biblioteker.

Kompilationsfejl: 'Adafruit_HMC5883_Unified' gør ikke navngiv en type

Kommunikationsfejl: Hvis du ikke er i stand til at kommunikere med kompasmodulet, skal du sørge for, at du har tilsluttet det til de rigtige ben på din Arduino, og at dine ledninger er korrekte. Du skal muligvis også justere modulets I2C-adresse i din kode, hvis den er forskellig fra standarden - som er 0x1E.

Fejl ved brug af hmc5883l/testDevice (linje246) Fejl ved kommunikation med HMC5883L-sensoren. Værdien Læs fra ID_A, ID_B og ID_C registre gørikke matche forventede værdier.

Magnetisk interferens: Hvis kompasaflæsningerne er ustabile eller svingende, kan det skyldes magnetisk interferens fra genstande i nærheden. Flyt modulet væk fra eventuelle magneter eller andre kilder til magnetisk interferens for at få mere stabile aflæsninger.

Nyd dine projekter med GY-271 kompasmodulet

At være i stand til at bruge GY-271 HCM5883L kompasmodulet åbner en dør til at bygge mere komplekse DIY-projekter ved hjælp af Arduino såsom GPS-guidede rovere og DIY-droner. Mulighederne er uendelige, især når du tilføjer andre sensorer.