gr-lora_sdr2024/05/14 18:45

LoRa衛星のビーコンを、RTLSDRで受信するトライの第2段。

今回使ったのは、GNU Radioだ(前回はlorarxなるソフトを使った)。 リンク先を読んで、 tappareljさんのgr-lora_sdrをmakeした。 このソフトはGNU Radio v3.10に対応して、フローグラフ内から 受信周波数,帯域幅,拡散率,符号化レート の設定が可能でステキだが、 RTLSDR対応の改造でハマった。 issueを読むと SDRのsampling rateはLoRa bandwidthの4倍である必要があった。

RTLSDRのHW仕様(2Mbps)から逆算して、BW=500kHzの衛星(TIANQI)を狙ったら、 改造したlora_RX.grcで、リアルタイム・デコードできた。デコード結果は、標準出力に出力される。

--------Header--------
Payload length: 100
CRC presence:   1
Coding rate:    1
Header checksum valid!

rx msg: 0xeb, 0xf0, 0x0, 0xb, 0xf8, 0x97, 0xfa, 0x13, 0xf0, 0x10, 0x61, 0xb9,
0x61, 0x99, 0x47, 0xce, 0xce, 0xce, 0x4b, 0xc6, 0xac, 0x8e, 0x96, 0x26, 0x96,
0x25, 0x96, 0x14, 0xb, 0xf8, 0x97, 0xf9, 0x0, 0x0, 0x4a, 0xcf, 0xf1, 0x9d,
0x3a, 0x56, 0xc2, 0xaf, 0x42, 0xc2, 0xb9, 0xea, 0x43, 0x56, 0x91, 0xbb, 0x42,
0x8b, 0x77, 0x2d, 0x43, 0xa1, 0x41, 0xb8, 0x4a, 0xcf, 0xf3, 0x1f, 0x3a, 0x5c,
0x3a, 0x20, 0x42, 0xc2, 0xb9, 0xd8, 0x43, 0x56, 0x91, 0xbb, 0x42, 0x88, 0xcc,
0xd0, 0x43, 0xa1, 0x99, 0xe1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
CRC valid!

この衛星のビーコンは「バイナリ形式」で「低データレート最適化が有効」(tinyGS調べ)なので、以下の設定変更が必要だった。

  • 「CRC Verif」ブロック:"print_rx_msg"を[ASCII]形式⇛[Hex]形式に変更
  • 「Header decoder」ブロック:"LDRO"を[Disable]⇛[Enable]に変更

ちなみにCRCエラーになったときは、赤字でCRC invalid!と表示される。