Menü
Microbots
0
  • Machen
    • Erste Schritte
    • Maker-Builds
    • Ausbildung
  • Geschäft
    • Maker-Module
    • Werkzeuge und Ausrüstung
    • Roboter & Displays
  • Um
    • Unsere Geschichte
    • Kontakt
    • FAQs
  • Einloggen
  • Deutsch
  • Ihr Warenkorb ist leer
Microbots
  • Machen
    • Erste Schritte
    • Maker-Builds
    • Ausbildung
  • Geschäft
    • Maker-Module
    • Werkzeuge und Ausrüstung
    • Roboter & Displays
  • Um
    • Unsere Geschichte
    • Kontakt
    • FAQs
  • Sprache

  • 0 0

CodeCell: Mit dem Magnetometer einen digitalen Kompass bauen

Haben Sie sich schon einmal gefragt, woher Ihr Telefon weiß, in welche Richtung Sie blicken? Dank eines Magnetometers! Ihre CodeCell ist mit einem 3-Achsen-Magnetometer BNO085 ausgestattet, das Magnetfelder in drei Richtungen erkennt. So können Sie die Richtung messen, magnetische Störungen erkennen und sogar einen einfachen digitalen Kompass erstellen!

Was ist ein Magnetometer?

Ein Magnetometer misst das Magnetfeld der Erde entlang dreier Achsen:

  • X-Achse → Misst die magnetische Feldstärke von links nach rechts.
  • Y-Achse → Misst die Vorwärts-Rückwärts-Magnetfeldstärke.
  • Z-Achse → Misst die magnetische Feldstärke nach oben und unten.

Mithilfe dieser Werte können wir die Kompassrichtung (0° bis 360°) berechnen und bestimmen, in welche Richtung CodeCell zeigt.

Schritt 1: Magnetometerdaten aus CodeCell lesen

Beginnen wir mit der Initialisierung des Magnetometers und dem Ablesen der Rohwerte des Magnetfelds.

 #include <CodeCell.h>

 CodeCell myCodeCell;

 float x = 0.0; // Magnetic field on X-axis
 float y = 0.0; // Magnetic field on Y-axis
 float z = 0.0; // Magnetic field on Z-axis

 void setup() {
 Serial.begin(115200);
 myCodeCell.Init(MOTION_MAGNETOMETER); // Initialize the magnetometer
 }

 void loop() {
 if (myCodeCell.Run(10)) { // Read at 10Hz (every 100ms)
 myCodeCell.Motion_MagnetometerRead(x, y, z); // Get magnetometer readings

 Serial.print("Mag X: "); Serial.print(x);
 Serial.print(" Y: "); Serial.print(y);
 Serial.print(" Z: "); Serial.println(z);
 }
 }

Sobald Sie den Code hochgeladen und den seriellen Monitor geöffnet haben, werden Werte wie die folgenden angezeigt:

Mag X: 12.4 Y: -7.8 Z: 35.2

Was bedeuten diese Werte?

  • Wenn Sie CodeCell drehen , ändern sich die X- und Y-Werte je nach Richtung.
  • Wenn Sie CodeCell neigen , ändert sich der Z-Wert .
  • Wenn Sie CodeCell in die Nähe eines Magneten bringen, schwanken alle Werte erheblich.

Schritt 2: Konvertieren Sie Magnetometerdaten in eine Kompassrichtung

Um einen digitalen Kompass zu bauen, müssen wir X- und Y-Werte mit der Funktion atan2() in einen Winkel umwandeln.

 #include <CodeCell.h>
 #include <math.h> // Needed for atan2 function

 CodeCell myCodeCell;

 float x = 0.0, y = 0.0, z = 0.0;

 void setup() {
 Serial.begin(115200);
 myCodeCell.Init(MOTION_MAGNETOMETER); // Initialize the magnetometer
 }

 void loop() {
 if (myCodeCell.Run(10)) { // Read at 10Hz
 myCodeCell.Motion_MagnetometerRead(x, y, z); // Read magnetometer values
 
// Kurs berechnen (Winkel in Grad)
 Float-Überschrift = atan2(y, x) * (180,0 / M_PI);

 // Stellen Sie sicher, dass der Kurs im Bereich von 0° bis 360° liegt
 wenn (Überschrift < 0) {
 Überschrift += 360;
 }

 Serial.print("Kompassrichtung: ");
 Serial.println(heading); // Überschrift in Grad drucken
 }
 }

Der Kurswert (0° bis 360°) gibt an, in welche Richtung CodeCell zeigt:

Kurs (°) Richtung
0° (oder 360°) Norden ↑
90° Osten →
180° Süden ↓
270° Westen ←

Versuchen Sie, CodeCell zu drehen und beobachten Sie, wie sich die Überschrift ändert!

Schritt 3: Richtung mit der integrierten LED anzeigen

Wir können die LED jetzt je nach Richtung in verschiedenen Farben leuchten lassen:

  • 🔵 Norden (0° - 45° & 315° - 360°) → Blaue LED
  • 🟢 Osten (45° - 135°) → Grüne LED
  • 🔴 Süd (135° - 225°) → Rote LED
  • 🟡 Westen (225° – 315°) → Gelbe LED
 #include <CodeCell.h>
 #include <math.h>

 CodeCell myCodeCell;

 float x = 0.0, y = 0.0, z = 0.0;

 void setup() {
 Serial.begin(115200);
 myCodeCell.Init(MOTION_MAGNETOMETER); // Initialize the magnetometer
 }

 void loop() {
 if (myCodeCell.Run(10)) { // Read at 10Hz
 myCodeCell.Motion_MagnetometerRead(x, y, z); // Read magnetometer values

 // Calculate heading
 float heading = atan2(y, x) * (180.0 / M_PI);
 if (heading < 0) heading += 360;

 Serial.print("Heading: ");
 Serial.println(heading);

 // Change LED color based on heading
 if (heading >= 315 || heading < 45) {
 myCodeCell.LED(0, 0, 255); // Blue for North
 } else if (heading >= 45 && heading < 135) {
 myCodeCell.LED(0, 255, 0); // Green for East
 } else if (heading >= 135 && heading < 225) {
 myCodeCell.LED(255, 0, 0); // Red for South 
} anders {
 myCodeCell.LED(255, 255, 0); // Gelb für Westen
 }
 }
 }

Experimentieren Sie mit Ihren eigenen Ideen!

Nachdem Sie nun Magnetometerdaten lesen und die Richtung berechnen können, versuchen Sie Folgendes:

  • Anzeige der Himmelsrichtung (N, O, S, W) auf einem OLED-Bildschirm .
  • Erkennen magnetischer Felder in der Nähe von Spulen oder Magneten .
  • Kombination mit anderen Sensoren

  • Teilen:

Sozial

Github

  • Um
  • Software
  • Ausbildung
  • Kontakt
  • FAQs
  • Bedingungen
  • Rückerstattung-Politik
  • Datenschutzrichtlinie

Erfahren Sie als Erster von neuen Projekten und sichern Sie sich spannende Angebote!

© 2026 Microbots.

★ Reviews

Let customers speak for us

66 reviews
Write a review
85%
(56)
6%
(4)
2%
(1)
3%
(2)
5%
(3)
61
21
A
CodeCell C6
Anonymous

I had an issue, got a red light, I used too much flux. Support said clean it, then the one sensor worked fine. I got the help and answer same day I provided a foto.

A
CodeCell C6 Drive
Anonymous

I think this is the best of the ESP offered, most versatile.

User picture
P
CodeCell C6
Prudhvi tej Chinimilli

Been testing the Microbots CodeCell C6 and honestly impressed with how much functionality they packed into such a tiny module. Great form factor for rapid prototyping wearable/embedded sensing applications. ESP32-C6 + IMU integration makes development much easier compared to building everything from scratch.

Still exploring battery optimization and compact LiPo options for our use case, but overall the platform is promising for low-cost real-time sensing systems. Excited to keep building with it.

F
CodeCell C6
Francisco Estivallet

Amazing hardware, my go to for compact projects.

User picture
M
CodeCell C6 Drive
Mohamed Karkouchia

Very god product to buyand test

123