Skip to content

Latest commit

 

History

History
84 lines (68 loc) · 3.08 KB

telemetry.md

File metadata and controls

84 lines (68 loc) · 3.08 KB

テレメトリ仕様

TWE-Lite設定

役割 論理ID 周波数チャンネル UARTモード オプションビット
バス部 1 = 0x01 21,22,23 B 00001000(応答メッセージ無し)
ミッション部 2 = 0x02 21,22,23 B 00001000(応答メッセージ無し)
地上局 0 = 0x00(親機) 21,22,23 B 00000000(オプション無し)

テレメトリ種類

  • ハウスキーピング(HK)データ: ロケットの状態を示すデータ
    • シーケンス進行状況
    • エラー回数
  • ミッションデータ: 観測したデータ
    • GPS
    • 3軸加速度
    • 3軸角速度
    • 気温
    • 気圧

TWE-Lite

  • 書式モードには簡易形式と拡張形式がある

  • 簡易形式で受信できるパラメータ

    • コマンド種別(0x80未満)
    • バイト列
  • 拡張形式で受信できるパラメータ

    • 応答ID
    • 送信元拡張アドレス
    • 自拡張アドレス(論理IDのみの時は0xFFFFFFFF)
    • 通信品質
    • バイト列

現在のライブラリの実装では簡易形式,拡張形式の両方で送受信できる. まあ自明に簡易形式の方が楽だが,LQIを取りたいので定期的に拡張形式も使いたい.

現在のライブラリの実装では,

  • 指定した構造体を受信する
  • とりあえずバッファに受信する

の2種類の受信方法がある. が,ガンガン複数種類のパケットを送ってガンガン受信したいし,少なくとも地上局では応答メッセージも見たい. なので,

  • とりあえずパケットが来たらバッファに溜め込む
  • なんらかの方法で受信データ種類を判別
  • それぞれの種類のデータを読む というのを無限ループの中でやっていく.

ここで問題になるのがどうやってデータ種別を判別するか->簡易形式のコマンド種別と拡張形式の応答IDでいいじゃん

HKデータ・コマンド(拡張形式で送受信)

応答ID 種類
0x00 uint8_t シーケンス進行状況(バス部)
0x01 uint8_t シーケンス進行状況(ミッション部
0x02 uint8_t 縦解放機構ロック解除
0x03 uint8_t 縦解放機構ロック
0x04 uint8_t フライトモードON
  • フライトモード移行コマンドASCII版 :01A002FF00X

ミッションデータ(簡易形式で送受信)

  • コマンド種別は0x80未満なことに注意
  • 最初にuint32_tがついている場合はタイムスタンプ付き
コマンド種別 バイト数 データ構造 データ種類
0x00 N char * N 困った時の文字列
0x01 10 uint32_t + uint16_t * 3 3軸加速度
0x02 10 uint32_t + uint16_t * 3 3軸角速度
0x03 6 uint32_t + uint16_t 水密部温度
0x04 8 uint32_t + float(4) 気温
0x05 8 uint32_t + float(4) 気圧
0x06 8 uint32_t + float(4) 高度
0x07 5 uint32_t + uint8_t GPSフラグ
0x08 10 uint32_t + (uint32_t + uint16_t) GPS測位時刻(UTC)
0x09 16 uint32_t + (uint32_t + uint16_t) * 2 GPS緯度経度
0x0a 16 uint32_t + (uint32_t + uint16_t) * 2 GPS高度(海抜高度, ジオイド高度)
0x7f ? ? reserved