Das Hinzufügen eines Kompassmoduls zu Ihrem Arduino-Mikrocontroller eröffnet eine Vielzahl von Möglichkeiten für Projekte. So schließen Sie eines an und verwenden es.
In modernen DIY-Projekten ist es ziemlich üblich, fortschrittliche Sensoren wie Beschleunigungsmesser und Magnetometer zu finden, die mit Mikrocontrollern verbunden sind. Auch wenn Sie diese Sensoren auf Ihrem Telefon verwendet haben, ist es schwer vorstellbar, wie diese Module funktionieren, aber es ist überraschend einfach.
Der Kompass-Magnetometersensor GY-271 ermöglicht die Orientierungserkennung für verschiedene Anwendungen. Hier untersuchen wir den Prozess der Verbindung des GY-271-Sensors mit einem Arduino-Mikrocontroller, wie man ihn kalibriert und welche Probleme dabei auftreten können.
Was ist das Kompassmodul GY-271?
Das Kompassmodul GY-271 ist ein hochempfindliches Magnetometer, das Magnetfelder in drei Dimensionen messen kann. Es wird verwendet, um das Magnetfeld der Erde zu erkennen und die Richtung oder Ausrichtung von Geräten in Anwendungen wie Navigationssystemen, Robotik und Drohnen zu bestimmen. Stellen Sie es sich wie einen sehr präzisen digitalen Kompass vor. Dieser Sensor ist mit einem kompakten und robusten Design ausgestattet, das eine einfache Installation und Verwendung in einer Vielzahl von Projekten ermöglicht.
Wie funktioniert das Kompassmodul GY-271?
Das Kompassmodul GY-271 HCM5883L enthält einen 3-Achsen-Magnetometersensor, der auf anisotroper magnetoresistiver (AMR) Technologie basiert. Der Sensor misst die Stärke und Richtung des Erdmagnetfelds, indem er die Widerstandsänderungen seiner internen AMR-Elemente erfasst.
Wenn der Sensor einem Magnetfeld ausgesetzt wird, ändert sich der Widerstand der AMR-Elemente und erzeugt eine Spannung, die proportional zur Stärke und Richtung des Magnetfelds ist. Der digitale Signalprozessor des Sensors wandelt diese Spannung dann in ein digitales Signal um, das von einem Mikrocontroller gelesen werden kann. Durch die Messung der Spannung in allen drei Achsen kann der Sensor hochgenaue Messwerte der Stärke und Richtung des Magnetfelds in drei Dimensionen liefern.
Anschließen des GY-271 an einen Arduino Uno
Das Anschließen dieses Moduls an das Arduino ist ziemlich einfach. Wir haben auch andere behandelt einfach zu bedienende Arduino-Module die Ihnen helfen können, Ihr Projekt in Zukunft zu skalieren. Das GY-271-Modul hat insgesamt fünf Pins, darunter VCC, Masse, und drei Signalpins (SDA, SCL, Und DRDY).
Sie benötigen die folgenden Komponenten:
- Kompassmodul GY-271 HMC5883L
- Arduino Uno (oder anderes Modell)
- Schaltdrähte (männlich-männlich und männlich-weiblich)
- Steckbrett (optional)
Verbinden Sie zuerst die VCC Und Masse Pins des GY-271-Moduls an die 5V Und Masse Pins des Arduino Uno.
Als nächstes verbinden Sie die SDA Und SCL Pins des Moduls an die A4 Und A5 analoge Pins des Arduino Uno.
Installieren der erforderlichen Bibliotheken
Bevor Sie mit dem Kompassmodul GY-271 und Arduino arbeiten können, müssen Sie die erforderlichen Bibliotheken installieren, um mit dem Sensor zu kommunizieren.
Die erste Bibliothek, die Sie in Ihre Skizze aufnehmen müssen, ist die Wire-Bibliothek, die für die I2C-Kommunikation zwischen dem Arduino und dem Sensor verwendet wird. Die Wire-Bibliothek ist mit der Arduino IDE vorinstalliert, sodass Sie sie nicht separat herunterladen müssen. Um die zweite zu installieren, die HMC5883L Bibliothek müssen Sie die folgenden Schritte ausführen:
Öffnen Sie die Arduino IDE und gehen Sie zu Skizzieren > Bibliothek einschließen > Bibliotheken verwalten.
Suchen Sie im Bibliotheksmanager nach HMC5883L in der Suchleiste.
Wähle aus HMC5883L Bibliothek speziell von Adafruit. Sobald die Bibliothek installiert ist, können Sie sie in Ihre Arduino-Skizze aufnehmen, indem Sie zu gehen Skizzieren > Bibliothek einschließen > HMC5883L.
Den Kodex verstehen
Sie müssen ein Programm schreiben, das den Sensor initialisiert, seine Daten liest und die Stärke und Richtung des Erdmagnetfelds berechnet. Der vollständige Code kann von unserem offiziellen heruntergeladen werden GitHub-Repository.
Am Anfang des Codes müssen Sie die gerade heruntergeladenen notwendigen Bibliotheken einbinden.
#enthalten
#enthalten
#enthalten
Vergessen Sie nicht, dem Sensor eine eindeutige ID zuzuweisen. Verwenden Sie dazu diese Zeile:
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);
Starten Sie im Setup-Code den seriellen Monitor und prüfen Sie, ob der Sensor reagiert. Sie können Meldungen an den Monitor ausdrucken, um den Status des Sensors zu aktualisieren:
Leereaufstellen(Leere)
{
Seriell.Start(9600);
Seriell.println("HMC5883 Magnetometertest"); Seriell.println("");
/* Sensor initialisieren */
Wenn(!mag.Start())
{
Seriell.println(„Ooops, kein HMC5883 erkannt... Überprüfen Sie Ihre Verkabelung!");
während(1);
}
}
Holen Sie sich in der Schleife zuerst ein neues Sensorereignis:
Sensoren_Ereignis_t Fall;
mag.getEvent(&event);
Zeigen Sie dann die Messwerte des Sensors auf dem seriellen Monitor an. Vergessen Sie nicht, die Baudrate auf einzustellen 9600.
Seriell.drucken("X: "); Seriell.drucken(ereignis.magnetisch.x); Seriell.drucken(" ");
Seriell.drucken("Y: "); Seriell.drucken(ereignis.magnetisch.y); Seriell.drucken(" ");
Seriell.drucken("Z:"); Seriell.drucken(event.magnetische.z); Seriell.drucken(" ");Seriell.println("uT");
Halten Sie das Modul so, dass Z nach "oben" zeigt und messen Sie den Kurs mit X Und Y. Auf diese Weise können Sie dann den Kurs berechnen, wenn das Magnetometer waagerecht ausgerichtet ist. Diese Codezeile hilft dabei:
schweben Überschrift = atan2(event.magnetische.y, event.magnetische.x);
Sobald Sie Ihre haben Überschrift, müssen Sie dann Ihre hinzufügen DeklinationWinkel, das ist der Fehler des Magnetfelds an Ihrem Standort.
schweben Deklinationswinkel = 0.663;
Überschrift += DeklinationWinkel;
Den Deklinationswinkel Ihrer Umgebung finden Sie bequem auf der Magnetische Deklination-Website. Wenn Sie aus irgendeinem Grund Ihren Deklinationswinkel nicht finden können, kommentieren Sie die beiden Zeilen aus Ihrem Code aus.
Das Auskommentieren der beiden Codezeilen kann zu fehlerhaften Sensormesswerten führen. Versuchen Sie Ihr Bestes, um den Sensor vor der Verwendung zu kalibrieren.
Drucken Sie schließlich die Überschrift auf dem seriellen Monitor aus und fügen Sie eine Verzögerung hinzu, um eine halbe Sekunde zu warten, bevor Sie erneut lesen.
Seriell.drucken("Überschrift (Grad): ");
Seriell.println(Überschrift Grad);
Verzögerung(500);
Von hier aus können Sie den Code an die Anforderungen Ihres Projekts anpassen und zusätzliche Funktionen wie Datenprotokollierung hinzufügen.
Sollten Sie es vorziehen, die Adafruit-Bibliothek zu verwenden, empfehlen wir, diese zu beziehen Das GitHub-Repository von Adafruit.
Lesen und Interpretieren von Kompassdaten
Die im seriellen Monitor angezeigten Sensordaten zeigen die vom Magnetometer gemessenen Magnetfeldvektorwerte in Mikroteslas (μT) für die X-, Y- bzw. Z-Achse. Diese Werte können verwendet werden, um die Ausrichtung und Größe des Magnetfelds zu bestimmen.
Der in Grad angezeigte Kurswert ist ebenfalls wichtig und repräsentiert die Richtung des magnetischen Nordpols relativ zur Position des Sensors. Dieser Messwert kann in Projekten verwendet werden, in denen die Richtung eines sich bewegenden Objekts bestimmt werden muss, z. B. in Robotik-, Navigations- und Geolokalisierungssystemen.
Sensorkalibrierung
Wenn Sie bereits eine andere Bibliothek für das HMC5883L-Modul installiert haben, müssen Sie diese deinstallieren oder löschen. Andernfalls erhalten Sie möglicherweise Kompilierfehler oder sehen während der Kalibrierung Warnungen in Ihrem seriellen Monitor. Wir empfehlen die Verwendung Jarzebskis Bibliothek auf GitHub verfügbar, da es über die vollständigen Kalibrierungsressourcen verfügt, die für diesen Abschnitt benötigt werden.
Laden Sie zunächst die ZIP-Datei aus dem Repository herunter, indem Sie auf klicken Code > ZIP herunterladen.
Öffnen Sie als nächstes die Arduino IDE und klicken Sie auf Skizzieren > Bibliothek einschließen > Bibliothek hinzufügen.
Wähle aus Arduino-HMC5883 zip-Datei, die Sie gerade heruntergeladen haben, und die Arduino IDE installiert die Bibliothek dann automatisch für Sie.
Führen Sie die im Repository verfügbare Kalibrierungsskizze aus, während Sie den Sensor beim Hochladen auf einer ebenen Fläche bewegen. Die vom seriellen Monitor erhaltenen Werte sind die Offset-Werte Ihres Sensors, die Sie verwenden können, um Ihre Messwerte zu korrigieren, während Sie den Kompass während Ihrer Projekte verwenden.
Probleme, auf die Sie stoßen können
Es gibt mehrere Fehler, auf die jemand stoßen kann, wenn er das Kompassmodul mit Arduino verbindet. Hier sind einige Beispiele und ihre Problemumgehungen:
Kompilierungsfehler: Diese können auftreten, wenn die notwendigen Bibliotheken nicht enthalten sind oder wenn Syntaxfehler im Code vorhanden sind. Um dies zu beheben, vergewissern Sie sich, dass Sie die richtigen Bibliotheken installiert haben, und überprüfen Sie Ihren Code auf Syntaxfehler. Wie wir oft gesehen haben, haben Sie möglicherweise versehentlich mehrere HCM5883L-Bibliotheken installiert.
Kompilierungsfehler: 'Adafruit_HMC5883_Unified' tut nicht nenne einen Typ
Kommunikationsfehler: Wenn Sie nicht mit dem Kompassmodul kommunizieren können, vergewissern Sie sich, dass Sie es an die richtigen Pins Ihres Arduino angeschlossen haben und dass Ihre Verkabelung korrekt ist. Möglicherweise müssen Sie auch die I2C-Adresse des Moduls in Ihrem Code anpassen, wenn sie von der Standardeinstellung abweicht, die 0x1E ist.
Fehler verwenden hmc5883l/testDevice (Linie246) Fehler bei der Kommunikation mit dem Sensor HMC5883L. Der Wert lesen von ID_A, ID_B Und ID_C-Register Tunnicht den erwarteten Werten entsprechen.
Magnetische Interferenz: Wenn die Kompassanzeigen instabil oder schwankend sind, kann dies auf magnetische Interferenzen von Objekten in der Nähe zurückzuführen sein. Bewegen Sie das Modul von Magneten oder anderen magnetischen Störquellen weg, um stabilere Messwerte zu erhalten.
Bringen Sie Ihre Projekte mit dem Kompassmodul GY-271 auf Touren
Die Verwendung des Kompassmoduls GY-271 HCM5883L öffnet eine Tür zum Erstellen komplexerer DIY-Projekte mit Arduino, wie z. B. GPS-geführte Rover und DIY-Drohnen. Die Möglichkeiten sind endlos, besonders wenn Sie andere Sensoren hinzufügen.