概要
みちびき(準天頂衛星システム)が送信する災害・危機管理通報サービス「災危通報」を受信して、内容を表示します。
最近災害が多いので、みちびきが送信している、災危通報を受信してみたいと思い、災危通報を受信できるデバイスを探したところ、SONYが発売しているSpresenseの名前があったので、Spresenseを入手して試してみました。
準備
Spresense Arduino Libraryのインストール
今回は、Spresense Arduino Libraryを利用しました。このため、Spresense Arduino スタートガイドに従い、環境を準備しました。詳細に説明されているので、問題なくインストールすることができました。また、インストール後は、VSCodeからも問題なく利用することができました。
GNSSサンプルプログラムの実行
災危通報を受信する前に、GPSチュートリアルに従い、GNSSのサンプルプログラム(スケッチ例⇒GNSS⇒gnss)を動作させてみました。チュートリアルに記載されていますが、みちびきを利用するため、60行目を、eSatGpsからeSatGpsQz1cQz1Sに変更しました。
|
|
プログラムを動かすと、受信している衛星の数などが1秒ごとに表示されます。また、毎分0秒には、各衛星の情報が表示されます。以下は、8個の衛星から情報を取得している状態ですが、災危通報の受信に必要なL1S信号は受信できていません。受信しているときは、「Type:Q1S」と表示されます。
|
|
次は、12個の衛星から情報を取得している状態で、災危通報の受信に必要なL1S信号も受信できています。Elv(仰角)とAzm(方位角)の両方が0なのが気になりますが。
|
|
しばらく眺めていましたが、L1S信号を受信できないことも結構多いようです。室内で受信しているからかもしれません。
実験
災危通報の受信
次に、チュートリアルのQZSS 災危通報を出力するに従い、災危通報を出力させてみました。
|
|
仕様書(IS-QZSS-DCR-007)によると、上記の出力は以下の通りです。
Field(フィールド) | Value(値) | Number of character(文字数) |
---|---|---|
Message Header(メッセージヘッダ) | $QZQSM | 6 |
Field delimiter(区切り文字) | , | 1 |
Satellite ID(衛星番号) | 55,56,57,61(PRN183,184,185,189) | 2 |
区切り文字 | , | 1 |
DC Report Message(災危通報) | 63 | |
Field delimiter(区切り文字) | * | 1 |
Checksum(チェックサム) | 2 |
上記の出力の場合は、衛星番号が56番となっているので、各国の測位衛星によると、PRN184に対応した、みちびき2号機の電波を受信しているということになります。
災危通報の解析
サンプルプログラムの出力だけでは何のことかわからないので、出力を解析するプログラムを作成しました。
サンプルプログラムでは、災危通報の取得と表示は以下のようになっています。
|
|
Gnssは、SpGnssクラスの変数です。このクラスは、GNSS.hで定義されています。getDCReport()は、void* SpGnss::getDCReport(void)となっていて、void *を返す関数です。これだけでは何もわからないので、NMEA_DcReport_Output()の方を見てみると、こちらは、gpsutils/cxd56_gnss_nmea.hで、以下のように定義されていました。
|
|
struct cxd56_gnss_dcreport_data_sは、gnss_type.hで、以下のように定義されていました。
|
|
struct cxd56_gnss_dcreport_data_sのsfメンバーがメッセージの本体のようです。
仕様書を見ながらこの値を解析して表示させた様子が以下です。少し眺めた範囲では、防災気象情報(海上)が多く出てきました。
解析プログラム自身は、とても単純ですが、解析結果に対応する文字列が膨大なものになりました。Spresenseなので問題なく動作しましたが、Arduino Unoだと工夫がいると思います。
2020年9月4日追記
2020年9月の、台風10号に関する情報を受信したところです。被害が出ませんように。
2022年1月16日追記
2022年1月の、トンガの海底火山の噴火に伴う津波警報を受信したところです。被害が出ませんように。
バージョン
Hardware: | Spresense |
Software: | Arduino IDE 1.8.19/Spresense Arduino Library 2.4.0 |
最終更新日
July 14, 2024