全面的にコードを見直し書き直した ingen084/seismometer に移行しました。
震度計算についても60秒ベースになりより正確になっていますのでそちらをご利用ください。
nrck氏作成の PiDAS をC++に移植したものです。 キットや処理の詳細については元のリポジトリをご確認ください。
- 1サイクル1.5ms程度で処理できるようになったことにより、100Hzで処理が行えるようになりました。
- オリジナルのコードでは1サイクル15~18msかかっており、100Hzで処理できていませんでした。
- 観測情報のNMEAでの出力に対応しています。
- PGAを計算しNMEAで出力しています。
- フランソワさんのご協力により、正しくない震度の計算方法を修正しています。( #2 )
- それと同時にカットオフ 0.05Hz の2次バターワースハイパスフィルターを搭載し、定期的な手動でのオフセット調整を不要にしています。
- ADCの出力値から gal に変換する計算式のミスを修正しています。
- 強震モニタでは過去1分間のデータをもとに震度を出力していますがこのアプリでは過去1秒の値しか参照していません。
以下の2種類を出力します。ボーレートは 115200 です。
出力頻度については src/main.cpp
の上の方にある定数で調整できます。
1秒間に100回出力します。
$XSACC,X軸の加速度,Y軸の加速度,Z軸の加速度*チェックサム
1秒間に10回出力します。
$XSINT,フィルタ後の加速度,計測震度*チェックサム
1秒間に10回出力します。
$XSPGA,最大加速度*チェックサム
開始時と終了時に1回ずつ出力します。
$XSOFF,オフセット調整フラグ*チェックサム
オフセット調整フラグは、Adjustボタンを押した際のオフセット調整開始時に 1
完了時に 0
が出力されます。
git clone https://github.com/ingen084/PiDASPlus.git --recursive
- PiDASPlus フォルダを PlatformIO で開く
- ビルドする
include/filter.hpp
に含まれている処理は特許5946067を使用しています。
詳細は元のリポジトリの記載もご確認ください。
このあたりの処理については同人誌で詳しく解説されていますので、興味のある方は購入しましょう。
特許・ライセンス周りがよくわかってないので間違えてたら指摘いただけると嬉しいです…。
Windows の場合、管理者権限で git config --system core.longpaths true
を実行しないとビルドできない場合があります。