4.3.5 Earthquake Detection Alarm

4.3.5.1 概要

Img

地震検知アラームは、地震波や機械的振動を検知して、音声および視覚的な警報を発する装置です。主に地震リスクの早期警報に使用されます。

このプロジェクトでは、OLEDディスプレイはmicro:bitの加速度センサーが検出した値をリアルタイムで表示します。傾きや軽い揺れを検出したときにスピーカーが鳴り、5×5 LEDマトリクスは警告・注意喚起のための表示パターンを表示します。

これらの装置(ここでは特に地震早期警報受信端末を指します)は、学校、家庭、公共の場所、地質災害監視地域などで広く使用されています。これらの核心的価値は「時間との闘い」にあります。

Img

4.3.5.2 コンポーネントの知識

Img

Microbit 加速度センサー

Img

LSM303AGRは、micro:bit基板に統合された超低消費電力の高性能加速度計で、主に三次元(X軸、Y軸、Z軸)の運動検出に使用されます。デジタル線形加速度計と磁力計を統合して正確な姿勢測定を実現します。 このセンサーの主な特徴は次のとおりです:

通信インターフェース: I2Cシリアルバスインターフェースをサポート(標準、ファストモード、ファストモードプラスおよびハイスピードモードに対応し、最大100kHz、400kHz、1MHz、3.4MHzまで)およびSPIシリアル標準インターフェースをサポートし、マイコンやその他周辺機器との接続を容易にします。

分解能: 動作モードに応じて8ビット、10ビット、12ビット出力に設定可能(例:低消費電力モードでは8ビット、高解像度モードでは12ビット)。

レンジ設定: 加速度レンジは±2g、±4g、±8g、±16gにプログラム可能で、さまざまなアプリケーションシナリオの感度要件を満たします。

加速度計に対応するX、Y、Z方向は以下の通りです:

Img

Img

4.3.5.3 必要部品

Img

Img

Img

micro:bit V2 main board ×1

micro:bit shield ×1

OLED display ×1

Img

Img

Img

micro USB cable ×1

4 pin wire ×1

battery holder ×1

Img

AA battery(自分で用意) ×6

4.3.5.4 配線図

⚠️ 配線する際は、ワイヤーの色にご注意ください。

OLED display

wire color

micro:bit shield pin

micro:bit board pin

GND

黒色

G

G

VCC

赤色

V2

V

SDA

青色

20

P20

SCL

緑色

19

P19

Img

4.3.5.5 コードの流れ

Img

4.3.5.6 テスト用コード

⚠️ Tip 1: Before downloading the code to the Microbit board, please import the library file “oled_ssd1306.py” refering to Import Library on MU” .

Img

⚠️ Tip 2: if() 構文中の閾値 900 と 1200 は、実際の状況に応じて変更できます。

完全なコード:

'''
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
'''
# 関連ライブラリをインポート
from microbit import *
from oled_ssd1306 import *
import music

# oled を初期化してクリア
initialize()  # oled を初期化
clear_oled()  # 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)
    """
    # 三軸の加速度値を読み取る
    x = accelerometer.get_x()
    y = accelerometer.get_y()
    z = accelerometer.get_z()

    # 合成加速度(ベクトルの大きさ)を計算
    strength = (x**2 + y**2 + z**2) ** 0.5

    return strength

while True:
    strenght = get_acceleration_strength()  # micro:bit の加速度センサーが検出した強度を読み取る
    if strenght < 900 or strenght > 1200:    # 加速度が900未満または1200より大きいとき
       clear_oled()   # OLED をクリア
       add_text(0, 0, 'Earthquake Warning')  # OLED の該当位置に文字列を表示
       add_text(0, 2, 'Earthquake Level: ')  # OLED の該当位置に文字列を表示
       add_text(0, 4, str(int(strenght)))  # OLED の該当位置に strength の値を表示
       music.play("C4:1")   # スピーカーで C4 の音を再生
       display.show(Image.GHOST) # LED マトリクスにゴーストパターンを表示
    else: # それ以外
       clear_oled()  # OLED をクリア
       display.clear() # 全ての LED の明るさを0(オフ)にする
       music.reset()  # 音を停止
    sleep(500)

Img

簡単な説明:

① microbit、oled_ssd1306、music のライブラリをインポートします。

from microbit import *
from oled_ssd1306 import *
import music

② OLED の初期化とクリアを行います。

initialize()  # oled を初期化
clear_oled()  # oled をクリア

③ 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)
    """
    # 三軸の加速度値を読み取る
    x = accelerometer.get_x()
    y = accelerometer.get_y()
    z = accelerometer.get_z()

    # 合成加速度(ベクトルの大きさ)を計算
    strength = (x**2 + y**2 + z**2) ** 0.5

    return strength

④ 読み取った加速度値を変数 strength に代入します。

strenght = get_acceleration_strength()  # micro:bit の加速度センサーが検出した強度を読み取る

⑤ 判定文: if()…else…

検出した加速度値が900未満または1200より大きいとき、OLED に文字列と加速度値を表示し、5×5 LED マトリクスは Img を表示し、スピーカーが警報を鳴らします。そうでない場合は、OLED と 5×5 LED マトリクスには何も表示されず、スピーカーも鳴りません。

if strenght < 900 or strenght > 1200:    # 加速度が900未満または1200より大きいとき
   clear_oled()   # OLED をクリア
   add_text(0, 0, 'Earthquake Warning')  # OLED の該当位置に文字列を表示
   add_text(0, 2, 'Earthquake Level: ')  # OLED の該当位置に文字列を表示
   add_text(0, 4, str(int(strenght)))  # OLED の該当位置に strength の値を表示
   music.play("C4:1")   # スピーカーで C4 の音を再生
   display.show(Image.GHOST) # LED マトリクスにゴーストパターンを表示
else: # それ以外
   clear_oled()  # OLED をクリア
   display.clear() # 全ての LED の明るさを0(オフ)にする
   music.reset()  # 音を停止

4.3.5.7 テスト結果

Img

配線を行い、micro USB ケーブルで電源を入れた後、外部電源(AA電池6本)に接続して十分な電源供給を確保し、「Flash」をクリックしてコードをmicro:bit基板にダウンロードします。

Img

テストコードをアップロードした後、micro:bit の背面にあるリセットボタンを押します。

Img

micro:bit基板を傾けるか軽く揺らします。検出された加速度値が900未満または1200より大きいと、OLED に文字列と値が表示され、5×5 LED マトリクスは Img を表示し、スピーカーが警報を鳴らします。そうでない場合は、OLED および 5×5 LED マトリクスは何も表示せず、スピーカーも鳴りません。

Img

⚠️ 注意: 実験で使用するブロック類はこのキットに含まれていません。

(ヒント: 結果が表示されない場合は、micro:bit ボードのリセットボタンを押してください。)

Img