4.3.5 Erdbeben-Erkennungsalarm
4.3.5.1 Überblick

Ein Erdbeben-Erkennungsalarm ist ein Gerät, das durch Erkennen von Erdbebenwellen oder mechanischen Vibrationen einen akustischen und visuellen Alarm auslöst. Er wird hauptsächlich zur Frühwarnung vor Erdbebenrisiken eingesetzt.
In diesem Projekt zeigt das OLED-Display die vom micro:bit-Beschleunigungssensor in Echtzeit erfassten Werte an. Bei Kippen oder leichtem Schütteln ertönt der Lautsprecher und die 5×5-LED-Matrix zeigt ein Alarmsymbol zur Warnung und Erinnerung.
Solche Geräte (konkret bezogen auf Empfänger für Erdbebenfrühwarnungen) werden häufig in Schulen, Haushalten, öffentlichen Plätzen und Gebieten zur Überwachung geologischer Gefahren eingesetzt. Ihr zentraler Wert liegt im „Kampf gegen die Zeit“.

4.3.5.2 Komponentenkunde

micro:bit-Beschleunigungssensor

Der LSM303AGR ist ein extrem energiearmer, leistungsfähiger Beschleunigungssensor, der in der micro:bit-Platine integriert ist und hauptsächlich zur dreidimensionalen (X-, Y-, Z-Achse) Bewegungserkennung verwendet wird. Er integriert einen digitalen linearen Beschleunigungssensor und ein Magnetometer, um eine präzise Lagebestimmung zu ermöglichen. Zu den Kernmerkmalen dieses Sensors gehören:
Kommunikationsschnittstelle: Er unterstützt die I2C-Serienbus-Schnittstelle (kompatibel mit Standard-, Fast-Mode, Fast-Mode-Plus und High-Speed-Mode, mit maximalen Raten bis zu 100kHz, 400kHz, 1MHz und 3.4MHz) und die SPI-Serienschnittstelle, was die Verbindung mit Mikrocontrollern oder anderen Peripheriegeräten erleichtert.
Auflösung: Sie kann je nach Betriebsmodus als 8-Bit-, 10-Bit- oder 12-Bit-Ausgabe konfiguriert werden (z. B. 8-Bit im Energiesparmodus und 12-Bit im Hochauflösungsmodus).
Einstellbarer Messbereich: Der Beschleunigungsbereich kann als ±2g, ±4g, ±8g oder ±16g programmiert werden, um die Empfindlichkeitsanforderungen verschiedener Anwendungsszenarien zu erfüllen.
Die den Beschleunigungssensor betreffenden X-, Y- und Z-Richtungen sind unten dargestellt:


4.3.5.3 Benötigte Komponenten
|
|
|
|---|---|---|
micro:bit V2 Hauptplatine ×1 |
micro:bit Shield ×1 |
OLED-Display ×1 |
|
|
|
micro USB-Kabel ×1 |
4-poliges Kabel ×1 |
Batteriehalter ×1 |
|
||
AA-Batterien (selbst bereitgestellt) ×6 |
4.3.5.4 Anschlussdiagramm
⚠️ Beim Anschließen bitte auf die Kabelfarbe achten.
OLED display |
wire color |
micro:bit shield pin |
micro:bit board pin |
|---|---|---|---|
GND |
black |
G |
G |
VCC |
red |
V2 |
V |
SDA |
blue |
20 |
P20 |
SCL |
green |
19 |
P19 |

4.3.5.5 Codeablauf

4.3.5.6 Testcode
⚠️ Tipp 1: Bevor Sie den Code auf das micro:bit-Board herunterladen, importieren Sie bitte die Bibliotheksdatei “oled_ssd1306.py” siehe “Import Library on MU” .

⚠️ Tipp 2: Die Schwellenwerte 900 und 1200 in der if()-Bedingung können entsprechend der tatsächlichen Situation geändert werden.
Vollständiger Code:
'''
Theme: Earthquake detection alarm
Function: OLED displays information related to earthquake intensity and the microbit accelerometer controls a 5×5 dot matrix and speaker.
Compiling IDE: MU 1.2.0
Author: https://docs.keyestudio.com
'''
# import related libraries
from microbit import *
from oled_ssd1306 import *
import music
# initialize and clear oled
initialize() # initialize oled
clear_oled() # clear oled
def get_acceleration_strength():
"""
Read the combined acceleration intensity of the accelerometer
Return the magnitude of the total acceleration rate (unit: mg, milli-g)
"""
# Read the three-axis acceleration values
x = accelerometer.get_x()
y = accelerometer.get_y()
z = accelerometer.get_z()
# Calculate the synthetic acceleration (vector modulus)
strength = (x**2 + y**2 + z**2) ** 0.5
return strength
while True:
strenght = get_acceleration_strength() # Read the intensity detected by the accelerometer on the microbit board
if strenght < 900 or strenght > 1200: # When the intensity detected by the accelerometer is less than 900 or greater than 1200
clear_oled() # clear OLED
add_text(0, 0, 'Earthquake Warning') # Display the character string in the corresponding position of OLED
add_text(0, 2, 'Earthquake Level: ') # Display the character string in the corresponding position of OLED
add_text(0, 4, str(int(strenght))) # Display the value of strength in the corresponding position of OLED
music.play("C4:1") # speaker plays C4 tone
display.show(Image.GHOST) # LED matrix displays a ghost pattern
else: # or
clear_oled() # clear OLED
display.clear() # Set the brightness of all LEDs to 0 (off)
music.reset() # no tone
sleep(500)

Kurze Erklärung:
① Importieren der Bibliotheken microbit, oled_ssd1306 und music.
from microbit import *
from oled_ssd1306 import *
import music
② OLED initialisieren und löschen.
initialize() # initialize oled
clear_oled() # clear oled
③ Definieren der Unterfunktion zur Ermittlung des Beschleunigungswertes, der vom micro:bit-Beschleunigungssensor erkannt wird.
def get_acceleration_strength():
"""
Read the combined acceleration intensity of the accelerometer
Return the magnitude of the total acceleration rate (unit: mg, milli-g)
"""
# Read the three-axis acceleration values
x = accelerometer.get_x()
y = accelerometer.get_y()
z = accelerometer.get_z()
# Calculate the synthetic acceleration (vector modulus)
strength = (x**2 + y**2 + z**2) ** 0.5
return strength
④ Den gelesenen Beschleunigungswert der Variablen strenght zuweisen.
strenght = get_acceleration_strength() # Read the intensity detected by the accelerometer on the microbit board
⑤ Bedingungsanweisung: if()…else…
Wenn der erkannte Beschleunigungswert kleiner als 900 oder größer als 1200 ist, zeigt das OLED die Zeichenkette und den Beschleunigungswert an, die 5×5-LED-Matrix zeigt
und der Lautsprecher gibt Alarmtöne von sich. Andernfalls zeigen das OLED und die 5×5-LED-Matrix nichts an und der Lautsprecher bleibt stumm.
if strenght < 900 or strenght > 1200: # When the intensity detected by the accelerometer is less than 900 or greater than 1200
clear_oled() # clear OLED
add_text(0, 0, 'Earthquake Warning') # Display the character string in the corresponding position of OLED
add_text(0, 2, 'Earthquake Level: ') # Display the character string in the corresponding position of OLED
add_text(0, 4, str(int(strenght))) # Display the value of strength in the corresponding position of OLED
music.play("C4:1") # speaker plays C4 tone
display.show(Image.GHOST) # LED matrix displays a ghost pattern
else: # or
clear_oled() # clear OLED
display.clear() # Set the brightness of all LEDs to 0 (off)
music.reset() # no tone
4.3.5.7 Testergebnis

Nach dem Anschließen und Einschalten per micro USB-Kabel verbinden Sie die externe Stromversorgung (6 AA-Batterien), um eine ausreichende Stromversorgung sicherzustellen, und klicken Sie „Flash“, um den Code auf das micro:bit-Board herunterzuladen.

Nach dem Hochladen des Testcodes drücken Sie die Reset-Taste auf der Rückseite des micro:bit.

Kippen oder schütteln Sie das micro:bit-Board leicht. Wenn der erkannte Beschleunigungswert kleiner als 900 oder größer als 1200 ist, zeigt das OLED die Zeichenkette und den Wert an, die 5×5-LED-Matrix zeigt
, und der Lautsprecher gibt Alarmtöne von sich. Andernfalls zeigen das OLED und die 5×5-LED-Matrix nichts an und der Lautsprecher bleibt stumm.

⚠️ Hinweis: Die Bausteine im Experiment sind nicht in diesem Kit enthalten.
(Tipp: Wenn kein Ergebnis sichtbar ist, drücken Sie bitte die Reset-Taste des micro:bit-Boards.)







