4.3.5 Alarme de détection de tremblement de terre
4.3.5.1 Aperçu

Une alarme de détection de tremblement de terre est un appareil qui déclenche une alarme sonore et visuelle en détectant les ondes sismiques ou des vibrations mécaniques. Elle est principalement utilisée pour l’alerte précoce des risques sismiques.
Dans ce projet, l’écran OLED affichera en temps réel les valeurs détectées par l’accéléromètre du micro:bit. Lorsqu’une inclinaison ou une légère secousse est détectée, le haut-parleur sonnera et la matrice 5×5 LED affichera un motif d’alerte pour avertir et rappeler.
Ces dispositifs (faisant spécifiquement référence aux terminaux de réception d’alerte précoce sismique) sont largement utilisés dans les écoles, les foyers, les lieux publics et les zones de surveillance des catastrophes géologiques. Leur valeur essentielle réside dans la « course contre la montre ».

4.3.5.2 Connaissances sur les composants

Accéléromètre du micro:bit

Le LSM303AGR est un accéléromètre haute performance à très faible consommation intégré sur la carte micro:bit, et il est principalement utilisé pour la détection de mouvements tridimensionnels (axes X, Y, Z). Il intègre un accéléromètre linéaire numérique et un magnétomètre pour réaliser une mesure précise d’attitude. Les caractéristiques principales de ce capteur incluent :
Interface de communication : Il prend en charge l’interface bus série I2C (compatible avec les modes standard, fast mode, fast mode plus et high-speed mode, avec des débits maximums jusqu’à 100kHz, 400kHz, 1MHz et 3.4MHz) et l’interface série standard SPI, facilitant la connexion avec des microcontrôleurs ou d’autres périphériques.
Résolution : Elle peut être configurée en sortie 8 bits, 10 bits ou 12 bits, en fonction du mode de fonctionnement (par exemple : 8 bits en mode basse consommation et 12 bits en mode haute résolution).
Réglage de la plage : La plage d’accélération peut être programmée en ±2g, ±4g, ±8g ou ±16g, répondant aux exigences de sensibilité de différents scénarios d’application.
Les directions X, Y et Z correspondant à l’accéléromètre sont montrées ci-dessous :


4.3.5.3 Composants requis
|
|
|
|---|---|---|
carte principale micro:bit V2 ×1 |
shield micro:bit ×1 |
écran OLED ×1 |
|
|
|
câble micro USB ×1 |
fil 4 broches ×1 |
porte-piles ×1 |
|
||
Piles AA (à fournir par l’utilisateur) ×6 |
4.3.5.4 Schéma de câblage
⚠️ Lors du câblage, veuillez prêter attention à la couleur des fils.
OLED display |
wire color |
micro:bit shield pin |
micro:bit board pin |
|---|---|---|---|
GND |
noir |
G |
G |
VCC |
rouge |
V2 |
V |
SDA |
bleu |
20 |
P20 |
SCL |
vert |
19 |
P19 |

4.3.5.5 Flux du code

4.3.5.6 Code de test
⚠️ Astuce 1 : Avant de télécharger le code sur la carte Microbit, veuillez importer le fichier de bibliothèque “oled_ssd1306.py” en vous référant à “Importer la bibliothèque sur MU” .

⚠️ Astuce 2 : Les seuils 900 et 1200 dans la condition if() peuvent être modifiés en fonction de la situation réelle.
Code complet :
'''
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
'''
# importer les bibliothèques associées
from microbit import *
from oled_ssd1306 import *
import music
# initialiser et effacer 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)
"""
# Lire les valeurs d'accélération sur les trois axes
x = accelerometer.get_x()
y = accelerometer.get_y()
z = accelerometer.get_z()
# Calculer l'accélération synthétique (module du vecteur)
strength = (x**2 + y**2 + z**2) ** 0.5
return strength
while True:
strenght = get_acceleration_strength() # Lire l'intensité détectée par l'accéléromètre sur la carte micro:bit
if strenght < 900 or strenght > 1200: # Lorsque l'intensité détectée par l'accéléromètre est inférieure à 900 ou supérieure à 1200
clear_oled() # effacer l'OLED
add_text(0, 0, 'Earthquake Warning') # Afficher la chaîne de caractères à la position correspondante de l'OLED
add_text(0, 2, 'Earthquake Level: ') # Afficher la chaîne de caractères à la position correspondante de l'OLED
add_text(0, 4, str(int(strenght))) # Afficher la valeur de strength à la position correspondante de l'OLED
music.play("C4:1") # le haut-parleur joue la note C4
display.show(Image.GHOST) # la matrice LED affiche un motif fantôme
else: # ou
clear_oled() # effacer l'OLED
display.clear() # Mettre la luminosité de toutes les LED à 0 (éteintes)
music.reset() # aucune tonalité
sleep(500)

Brève explication :
① Importer les bibliothèques microbit, oled_ssd1306 et music.
from microbit import *
from oled_ssd1306 import *
import music
② Initialiser les pixels de l’OLED, effacer l’OLED.
initialize() # initialize oled
clear_oled() # clear oled
③ Définir la sous-fonction de la valeur d’accélération détectée par l’accéléromètre du micro:bit.
def get_acceleration_strength():
"""
Read the combined acceleration intensity of the accelerometer
Return the magnitude of the total acceleration rate (unit: mg, milli-g)
"""
# Lire les valeurs d'accélération sur les trois axes
x = accelerometer.get_x()
y = accelerometer.get_y()
z = accelerometer.get_z()
# Calculer l'accélération synthétique (module du vecteur)
strength = (x**2 + y**2 + z**2) ** 0.5
return strength
④ Assigner la valeur d’accélération lue à la variable strength.
strenght = get_acceleration_strength() # Lire l'intensité détectée par l'accéléromètre sur la carte micro:bit
⑤ Instruction de jugement : if()…else…
Lorsque la valeur d’accélération détectée est inférieure à 900 ou supérieure à 1200, l’OLED affiche la chaîne de caractères et la valeur d’accélération, la matrice LED 5×5 affiche
, et le haut-parleur déclenche l’alarme. Sinon, l’OLED et la matrice LED 5×5 n’affichent rien et le haut-parleur ne sonne pas.
if strenght < 900 or strenght > 1200: # Lorsque l'intensité détectée par l'accéléromètre est inférieure à 900 ou supérieure à 1200
clear_oled() # effacer l'OLED
add_text(0, 0, 'Earthquake Warning') # Afficher la chaîne de caractères à la position correspondante de l'OLED
add_text(0, 2, 'Earthquake Level: ') # Afficher la chaîne de caractères à la position correspondante de l'OLED
add_text(0, 4, str(int(strenght))) # Afficher la valeur de strength à la position correspondante de l'OLED
music.play("C4:1") # le haut-parleur joue la note C4
display.show(Image.GHOST) # la matrice LED affiche un motif fantôme
else: # ou
clear_oled() # effacer l'OLED
display.clear() # Mettre la luminosité de toutes les LED à 0 (éteintes)
music.reset() # aucune tonalité
4.3.5.7 Résultat du test

Après avoir câblé et alimenté via le câble micro USB, connectez une alimentation externe (6 piles AA) pour assurer une alimentation suffisante, puis cliquez sur “Flash” pour télécharger le code sur la carte micro:bit.

Après le téléversement du code de test, appuyez sur le bouton de réinitialisation au dos du micro:bit.

Inclinez ou secouez légèrement la carte micro:bit. Lorsque la valeur d’accélération détectée est inférieure à 900 ou supérieure à 1200, l’OLED affiche la chaîne et la valeur, la matrice LED 5×5 affiche
, et le haut-parleur déclenche l’alarme. Sinon, l’OLED et la matrice LED 5×5 n’affichent rien et le haut-parleur ne sonne pas.

⚠️ Remarque : Les blocs de construction utilisés dans l’expérience ne sont pas inclus dans ce kit.
(Astuce : Si aucun résultat n’est observé, veuillez appuyer sur le bouton de réinitialisation de la carte micro:bit.)







