はじめに
世界の地震の10%以上が日本で発生している──。巷間よく言われていることですが,先日も東京23区と埼玉県で10年ぶりに震度5強を観測したばかりであり,地震について考えない日はないと言っても過言ではないでしょう。
地震が発生した際に,気象庁のホームページやNHKなどで各地の震度が発表されます。しかし,これを待たずして自作の地震計で震度が分かったら,さらに,震度が分かるだけでなく加速度の波形も記録できたら面白そうです。昨今は加速度センサが簡単に手に入るので*1,地震計というのは電子工作やプログラミングの練習にもちょうどいい題材になるのではないでしょうか?
今回,次回,次々回を合わせて,筆者がマイ地震計を作ろうと思い至った経緯や,開発にあたっての課題,Raspberry Piでの実現方法について書いていきます。今回はその第一弾として,加速度の時系列データから計測震度を求める計算方法について書いていこうと思います。
加速度センサから定周期でデータを読み出しながら震度計算するといったリアルタイム処理については次回に,加速度センサとそのI2C接続,プログラムの全体構成については次々回に譲ります。
観測例
いきなりですが,実際に起きた地震を捉えた観測例を示します。図1に,試作中のマイ地震計プロトタイプを示します。マルチプロセッシングを活用するので,4コアのCPUを持つRaspberry Pi 3 Model A+を使うことにし,ブレッドボード上にInvenSense社のモーションセンサMPU6050とOLEDディスプレイを置きました。いずれもI2CバスにてRaspberry Piに接続されますので,Raspberry PiのGPIO2 (SDA)とGPIO3 (SCL)に並列に接続しました(もちろん電源も必要です)。ジャンパワイヤの配線はいたってシンプルです。[追記: 2021-11-19]同じI2CバスにモーションセンサMPU6050とOLEDディスプレイを繋げると,加速度の定期的な読み出しのサイクルが乱される可能性があることが判りました。[追記: 2022-03-15]同じI2Cバスに接続してもOLEDディスプレイのためのフレームの隙間にMPU6050のためのフレームがほぼ10 ms周期で挿入されており,ほぼ問題ないという結論に至りました。詳しくは次々回の付録をご覧下さい。
図1: Raspberry Pi 3 Model A+とモーションセンサMPU6050によるマイ地震計プロトタイプ
試作中のPythonプログラムは10 ms毎に加速度をサンプリングしつつ,加速度データが300点集まった時点で(つまり,3秒毎に)短時間計測震度を計算します。
ある夜,寝る前にプログラムを走らせておいたところ,早朝に発生した地震による加速度が記録されており,また,加速度から震度も(単に「それらしい値」ですが)計算されておりました。図2に結果を示します。この地震でマイ地震計プロトタイプが計算した計測震度の最大値は2.8であり,震度階級では震度3に相当します。
図2: 実際の地震の観測例(2021年11月8日03時08分頃の地震)
これは,2021年11月8日03時08分頃に発生した茨城県南部を震源とするマグニチュード4.3の地震です*2。気象庁のデータによれば,筆者の住む街では震度2を記録しています。一方,マイ地震計プロトタイプでは震度3を計測しました。恐らくですが,2階に置いてあったため,家屋での共振によって大きめの加速度を観測したのではないかと推測します。
なお,筆者のマイ地震計プロトタイプは,震度1以下の地震では反応しないようにしました。と言うのも,次々回で詳述しますが,モーションセンサMPU6050のノイズが大きいため,全く揺れていない状態と震度1を区別できないためです。より高精度の加速度センサが手に入れば,震度1以下も測れるのではないかと思います。
続きを読む