LoginSignup
6
0

More than 3 years have passed since last update.

Spresenseを使って、準天頂衛星の災危通報を受信

Posted at

はじめに

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

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0