#はじめに
Aloha
日本の準天頂衛星システム(みちびき、QZSS)は、GPSの補完だけでなく、サブメーター級やセンチメーター級測位補強などができることが知られています。一方、この人工衛星は、もともと通信衛星という位置付けで始まったこともあったらしく、災害・危機管理通報サービス「災危通報」(災害情報をテレビやラジオ、インターネットを使わずに人工衛星経由で配信するサービス)や衛星安否確認サービス「Q-ANPI」(避難所の安否情報)などの機能があります。
そこで今回は、「災危通報」を受信してみようと思います。ただ、まったく目新しいことはできていないので、備忘録ということで。
#条件
災危通報は、QZSSが発信する「L1S」(中心周波数:1575.42MHz)という信号を使っています。これに対応した機器で、かつ入手しやすいものを探したところSonyの「Spresense」というボードがあり、メインボードのみで利用できることがわかりました。
※GPSの測位信号は、「L1C/A」というものなので、「L1S」とはちょっと違います。一般的なスマホなどでは対応していません。
#準備物
・Spresenseメインボード
・USBケーブル(micro USB Type-B)
・Arduino IDE
・MacBook等
#手順
(1)パソコンとSpresenseボードをUSBケーブルで接続し、Arduino IDEを起動します。
(2)ツールメニューのシリアルポートを選択し、Spresenseボードと接続します。「/dev/cu.usbserial-****」などを選びます。
(3)公式サイトのチュートリアルに従って、「2.6. QZSS 災危通報を出力する」 のコードをArduino IDEでSpresenseボードに書き込みます。(マイコンボードに書き込むボタンを押下)
スケッチ(プログラム)がボードに書き込まれると「reboot」と表示されます。
(4)QZSSの衛星が見えそうな屋外に移動します。
(5)Arduino IDEシリアルモニタを開きます。数十秒待っていると以下のような文字列が表示されます。
$QZQSM,55,C6ADF0FD1900054C3AA98895403AA811553880000000000000000013A93CD78*71
$QZQSM,55,53ADF0FD11800283F2507F8A101942082841A508ACA1181423500013E0BF478*0D
$QZQSM,55,9AADF0FD1180054460A88D5511D2A23F547DAA8FC95309AA61800010005CC0C*02
$QZQSM,55,C6ADF0FD190002847E587F8B1069623F2CC265A01CB408969C4000105A25BE8*0F
$QZQSM,55,53ADF0FD190002D3F65A80140FF2820350BC2A192943EAA87DA00010B905EF4*08
$QZQSM,55,9AADF0FD1900051018A27ED450028A05543F2A88215106AA22B00010F4FE204*70
$QZQSM,55,C6ADF0FD1900054C3AA98895403AA81155388000000000000000001123E9DA8*70
$QZQSM,55,53ADF0FD11800283F2507F8A101942082841A508ACA11814235000116A6A4A8*08
一行目の場合、
「$QZQSM」というのは、Message Headerだそうです。
「55」というのは、今回受信できたSatellite ID(衛星番号)だそうで、55、56、57、61が存在するようです。
「C6ADF0FD1900054C3AA98895403AA811553880000000000000000013A93CD78」というのは、DC Report Message(メッセージの本文)だそうです。
*の後の「71」はチェックサムです。
このDC Report Messageを読むべきなのですが、仕様書を見ないと全くわかりません。
そこで検索したところ、DC Report Messageのデコーダーを作られている方がいらっしゃいました。
https://github.com/baggio63446333/QZQSM
このプロジェクトをダウンロードし、examples/DcReportTestをArduino IDEで実行します。
するとシリアルモニタにテキスト入力フィールドが表示されます。
ここに上記のうち、例えば、「$QZQSM,55,53ADF0FD11800283F2507F8A101942082841A508ACA11814235000116A6A4A8*08」を入力し、「送信」ボタンを押下します。
すると以下のような文字列が表示されました。
$QZQSM,55,53ADF0FD11800283F2507F8A101942082841A508ACA11814235000116A6A4A8*08
================================
災危通報(海上)(発表)
発表時刻:1月31日17時35分
海上着氷警報:サハリン東方海上
海上着氷警報:サハリン西方海上
海上着氷警報:網走沖
海上着氷警報:宗谷海峡
海上着氷警報:北海道西方海上
海上着氷警報:北海道東方海上
海上着氷警報:釧路沖
海上着氷警報:日高沖
季節柄、海上着氷警報が出ていました。見ているだけで寒くなりますね。
警報地域の近隣の方はくれぐれもご注意ください。
#参考文献
・みちびき「サービスの概要」一覧
・みちびき災危通報をデコードしてみる
#おわり
QZSSのL1S信号を受信することで、テレビやラジオ、インターネットが使えない場合でも「災危通報」情報を入手できることがわかりました。ハードウェアがあれば使えるようです。これが活躍するようなことが起きないことを祈るばかりですが、備えあれば憂いなしということで。
Mahalo