「えだまめ」しているラズパイ

30年ぶりに半田ごて握ってラズパイ勉強中。

ラズパイで地震計(震度計)を作る (1)まずは製作

◯やりたいこと

3軸加速度センサー(KXR94-2050)、ADC(MCP3204)、OLED(SSD1306)で構成した震度計をHATとして製作し、ラズパイゼロに搭載して携帯型地震計(震度計)を製作する。


◯やった事

現在ブレッドボード上で動作している我が家の震度計

地震が来るといち早く「家での震度は◯です」と教えてくれ次に何をするかの判断材料にとても役立っています。
震度計の元ネタは「たくや」さん。(感謝)

www.p2pquake.net

この記事を元に震度計を作ってここ何年か動かしていたのですが、動作中のOSが少々古くなってきており pythonのバージョンも3.5。そのため最近の3.9で作成したプログラムが動作しないという問題点が浮上してきました。そこでOSを新規インストールして新型に一新する事に。同時に測定回路をHAT化して携帯性をよくし、OLEDもつけて視覚からも情報を得られるようにグレードアップします。

・回路図

回路図は以下の通り。たくやさんの記事にi2c接続のOLED(SSD1306)を追加しています。

3軸センサーKXR94から出力されたx,y,zのアナログ値をMCP3204でAD変換し、SPI接続されたラズパイで読み取るというものです。

回路自体は特に面倒な点はないのですが、製作にあたって特に注意すべき点がノイズ対策。現に上記回路ではノイズの影響で震度が0.5以下になかなか下がらず一度地震が来ると永遠に揺れ続けるという問題が発生しました。これに関しては後半に詳しく対策を記載しときます。

・製作

まずは部品集め。ラズパイゼロと放熱兼用の鉄板ケースは手元にあるものを使い、残りはほぼ秋月電子で調達。

HAT用のユニバーサルボードはマルツで購入しました。

全体の部品配置はこんな感じで進めていきます。

途中OLEDの下に入るレギュレータとの取り合いをチェックしたり、

ラズパイとの取り合いもチェックしながら

組立て完了。

さっそく走らせてみます。

震度を求める計算式もたくやさんが公開されているものを使わせていただいています。

github.com

改めて感謝。ありがとうございます。
ちなみに地震がない時は時計を表示させていました。

・測定

さっそく震度計を揺らして震度を測定してみます。震度の記録は記録開始を震度1、記録終了を0.5のヒステリシスを待たせたシュミットトリガー方式でRAMディスク上に記録しており、地震終了後SDカード上に転送して保存しています。記録頻度は 100ms毎です。

卓上を滑らせた記録をグラフ化してみると

ガチャガチャ。
ユサユサで

デコボコ。
どうやらちゃんと動いているようです。

ちなみに過去におきた実際の地震の震度記録を見てみると

これは震源地がちょっと近目な震度3.4の記録で、初期微動でピークを打った後2秒で本震が来ています。
海洋性の地震だと終了までのすそのが長くなるようで、これなんかもろ海洋性地震

初期微動ピークから本震ピークまで10秒以上、本震ピーク3.5を記録後ユサユサ、ユサユサとものすごく長く揺れています。近くの海の地下で地震が起きたようです。

稼働中の震度計が報告する震度と気象庁が発表する震度はほとんど一致するので、この震度計の事結構信用しています。

・問題発生

先に述べたようにセンサーやADCがノイズを結構拾っているようで震度「0」にはなかなかなりません。原因として

1. ラズパイからのノイズ
2. アナログ回路とデジタル回路(OLED)の電源を共有しているため
3. パスコンの不適性配置
4. Vref(基準電圧)がVDDと直結

などが考えられます。次回(2)で対策を取っていきたいと思います。