Schnellstart
Dieses Board misst die Beschleunigung auf drei Achsen. Verbinden Sie es über I2C, installieren Sie die Bibliothek für Ihre Umgebung und führen Sie das Beispiel für die Grundmessungen aus, um die Beschleunigung in X-, Y- und Z-Richtung in g zu sehen.
Sie programmieren den Controller, der an dieses Breakout angeschlossen ist. Das Breakout selbst wird nicht geflasht.
- Arduino
- MicroPython
1. Breakout-Board anschließen
Verbinden Sie das Breakout mit den 3,3-V-, GND- und I2C-Pins Ihres Controllers. Wenn der Controller einen Qwiic Connector hat, genügt ein Qwiic-Kabel von diesem zu einem der beiden Qwiic Connector am Breakout. Andernfalls löten Sie die mitgelieferten Stiftleisten an und verdrahten sie wie in dieser Tabelle für ein NULA DeepSleep gezeigt:
| NULA DeepSleep | Soldered Ultra-Low-Power Accelerometer BMA400 Breakout |
|---|---|
| GND | GND |
| 3V3 | 3V3 |
| IO8 | SDA |
| IO9 | SCL |
Beim NULA DeepSleep verwendet Wire.begin() ohne Argumente IO8 als SDA und IO9
als SCL, also die Pins in dieser Tabelle. Verwenden Sie bei einem anderen Controller dessen Standard-I2C-Pins.
Das Board hat keinen Regler und keinen Pegelwandler: 3V3 versorgt den BMA400
direkt und legt seinen Logikpegel fest. Legen Sie 1,72 V bis 3,6 V an und verwenden Sie einen
Controller mit 3,3-V-Logik. Schließen Sie 3V3 oder einen Signalpin niemals an 5 V an.
2. Bibliothek installieren
Laden Sie die Bibliothek Soldered BMA400 Accelerometer aus ihrem GitHub-Repository herunter und fügen Sie sie in der Arduino IDE als ZIP-Bibliothek hinzu.
🔗Soldered BMA400 Accelerometer
Geprüfte Arduino-Bibliothek im Commit 853ca67
Tipp: Download von GitHub. Klicken Sie auf der GitHub-Seite der Bibliothek auf die grüne Schaltfläche Code und wählen Sie Download ZIP. Fügen Sie die Datei dann in der Arduino IDE hinzu über Sketch → Bibliothek einbinden → .ZIP-Bibliothek hinzufügen....
3. Erstes Beispiel ausführen
Dies ist basicReadings.ino, das einfachste Beispiel der Bibliothek. Es startet den
Sensor an der Standardadresse 0x14 und gibt die Beschleunigung auf allen drei
Achsen in g aus, etwa 50-mal pro Sekunde. Laden Sie es hoch und öffnen Sie dann den Serial Monitor mit
115200 Baud.
/**
**************************************************
*
* @file basicReadings.ino
*
* @brief Example showing how to read X, Y, Z acceleration data
* from the Soldered BMA400 Accelerometer breakout over I2C
*
* @link solde.red/333419 : Soldered BMA400 Accelerometer breakout
*
* @authors SparkFun Electronics, modified by Soldered Electronics
***************************************************/
#include <BMA400-SOLDERED.h>
// Create an instance of the BMA400 sensor
Soldered_BMA400 accelerometer;
void setup()
{
// Initialize serial for output
Serial.begin(115200);
Serial.println("BMA400 Example - Basic Readings");
// Initialize I2C bus
Wire.begin();
// Check if sensor is connected and initialize it.
// Address is optional, defaults to 0x14
while (accelerometer.begin() != BMA400_OK)
{
Serial.println("Error: BMA400 not connected, check wiring and I2C address!");
delay(1000);
}
Serial.println("BMA400 connected!");
}
void loop()
{
// Get new measurements from the sensor. This must be called before
// accessing the acceleration data, otherwise it will never update
accelerometer.getSensorData();
// Print acceleration data in g's
Serial.print("Acceleration in g's");
Serial.print("\t");
Serial.print("X: ");
Serial.print(accelerometer.data.accelX, 3);
Serial.print("\t");
Serial.print("Y: ");
Serial.print(accelerometer.data.accelY, 3);
Serial.print("\t");
Serial.print("Z: ");
Serial.println(accelerometer.data.accelZ, 3);
// Print 50x per second
delay(20);
}
4. Ergebnis prüfen
Sobald der Sensor antwortet, zeigt der Serial Monitor zwei Zeilen und danach eine Zeile pro
Messwert, etwa 50 pro Sekunde: Acceleration in g's, dann X:, Y: und Z:,
jeweils die Achse in g mit drei Nachkommastellen, durch Tabulatoren getrennt. Wenn das Breakout an ein
NULA DeepSleep angeschlossen ist und flach liegt, sieht der Anfang der Ausgabe so aus:
BMA400 Example - Basic Readings
BMA400 connected!
Acceleration in g's X: 0.007 Y: -0.022 Z: 0.996
Acceleration in g's X: 0.011 Y: -0.025 Z: 1.000
Acceleration in g's X: 0.014 Y: -0.026 Z: 1.004
Acceleration in g's X: 0.016 Y: -0.013 Z: 0.994
Acceleration in g's X: 0.012 Y: -0.015 Z: 1.001
Wenn stattdessen einmal pro Sekunde Error: BMA400 not connected, check wiring and I2C address! erscheint,
hat der Sensor an 0x14 nicht geantwortet.
5. Wenn es nicht funktioniert
Fahren Sie mit der Fehlerbehebung fort und wiederholen Sie dieses kleinste Beispiel nach jeder Änderung.
1. Breakout-Board anschließen
Verbinden Sie das Breakout mit den 3,3-V-, GND- und I2C-Pins Ihres Controllers. Wenn der
Controller einen Qwiic Connector hat, genügt ein Qwiic-Kabel von diesem zu einem der beiden Qwiic
Connector am Breakout. Andernfalls löten Sie die mitgelieferten Stiftleisten an
und verdrahten sie wie in dieser Tabelle für ein NULA DeepSleep gezeigt, ein ESP32-S3-Board
mit MicroPython-Unterstützung. Seine IO8 und IO9 sind GPIO 8 und GPIO 9, und MicroPythons
Pin(8) und Pin(9) sind diese GPIO-Nummern. Das Beispiel unten verwendet GPIO 8 für
SDA und GPIO 9 für SCL am I2C-Bus 0; ändern Sie sie bei einem anderen Board auf die Pins,
die Sie verdrahtet haben.
| NULA DeepSleep | Soldered Ultra-Low-Power Accelerometer BMA400 Breakout |
|---|---|
| GND | GND |
| 3V3 | 3V3 |
| IO8 | SDA |
| IO9 | SCL |
Das Board hat keinen Regler und keinen Pegelwandler: 3V3 versorgt den BMA400
direkt und legt seinen Logikpegel fest. Legen Sie 1,72 V bis 3,6 V an und verwenden Sie einen
Controller mit 3,3-V-Logik. Schließen Sie 3V3 oder einen Signalpin niemals an 5 V an.
2. Modul installieren
Verwenden Sie mim oder installieren Sie, nachdem Sie das Paket mpremote installiert haben, die Bibliothek mit diesem Befehl auf Ihrem Board:
mpremote mip install github:SolderedElectronics/Soldered-BMA400-MicroPython-Library
Unter Windows:
python -m mpremote mip install github:SolderedElectronics/Soldered-BMA400-MicroPython-Library
🔗Soldered BMA400 MicroPython library
Geprüftes MicroPython-Modul im Commit 484a5be
Tipp: Download von GitHub. Ohne mpremote öffnen Sie die .py-Datei
des Moduls auf GitHub und klicken auf Download raw file. Öffnen Sie sie dann in Thonny und kopieren Sie sie über
File → Save as... → MicroPython device auf das Board.
3. Erstes Beispiel ausführen
Dies ist bma400-basicReadings.py. Es erstellt den I2C-Bus, startet den Sensor an der
Standardadresse 0x14 und gibt die Beschleunigung auf allen drei Achsen in g aus,
etwa alle 20 ms. Ändern Sie die Pins scl und sda in der Zeile I2C(...) auf die
Pins, die Sie verdrahtet haben, und führen Sie es dann auf Ihrem Board aus.
# FILE: bma400-basicReadings.py
# AUTHOR: Soldered Electronics
# BRIEF: Reads X, Y, Z acceleration from the BMA400 sensor over I2C
# WORKS WITH: BMA400 Accelerometer breakout: www.solde.red/333419
# LAST UPDATED: 2026-09-17
from bma400 import BMA400, BMA400_OK
from machine import I2C, Pin
import time
# Change these to match how your board wires I2C
i2c = I2C(0, scl=Pin(9), sda=Pin(8))
sensor = BMA400(i2c)
if sensor.status != BMA400_OK:
raise Exception("Failed to initialize BMA400: " + sensor.status_string())
print("BMA400 connected!")
while True:
if sensor.get_sensor_data() == BMA400_OK:
print(
"X: {:.3f} g\tY: {:.3f} g\tZ: {:.3f} g".format(
sensor.data.accel_x, sensor.data.accel_y, sensor.data.accel_z
)
)
else:
print("Failed to read acceleration:", sensor.status_string())
time.sleep_ms(20)
🔗Vollständiges Beispiel öffnen
bma400-basicReadings.py im Commit 484a5be
4. Ergebnis prüfen
Sobald der Sensor antwortet, zeigt die Shell BMA400 connected! und danach eine Zeile pro
Messwert: X:, Y: und Z:, jeweils in g mit drei Nachkommastellen und gefolgt von g,
durch Tabulatoren getrennt. Wenn das Breakout wie oben an ein NULA DeepSleep angeschlossen ist und
flach liegt, sieht der Anfang der Ausgabe so aus:
BMA400 connected!
X: 0.008 g Y: -0.028 g Z: 1.003 g
X: 0.020 g Y: -0.018 g Z: 1.006 g
X: 0.018 g Y: -0.009 g Z: 1.003 g
X: 0.014 g Y: -0.018 g Z: 1.009 g
X: 0.008 g Y: -0.021 g Z: 1.001 g
Wenn der Sensor nicht antwortet, bricht das Skript mit einer Exception ab, die die
versuchte Adresse nennt, zum Beispiel BMA400 not responding on address 0x14.
5. Wenn es nicht funktioniert
Fahren Sie mit der Fehlerbehebung fort und wiederholen Sie dieses kleinste Beispiel nach jeder Änderung.