見出し画像

【地上局ソフトデバッグ】電文解析

はじめに

今回は人工衛星の地上局のソフト(QL)をデバッグするために必要な知識を書いていきます.
(パッと作ったので,内容が充実していないと思います.分からない点をまとめて後で教えてください.まとめてここに回答を載せます.)


地上局とQL

地上局は,人工衛星と通信する地上の設備のことだと考えてください.
人工衛星からの電波を上手いことデジタルデータにしてくれるものです.

デジタルデータというのは,0 or 1 のデータです.
バイナリデータともいわれます.

しかし,バイナリデータは人間が見てもわかりにくいものです.
(とはいっても,ずっと見ていると何となくデータが読めますが…)

バイナリデータは,二進数で表すと
0b10010000
みたいなデータです.

上記のデータは1byteのデータなのですが,二進数で表すと長くなります.
写真などは,1MByteなど行くことも多くなってきましたが,こんな長いデータを表示したり扱うのは人間には無理です.

なので,もう少し短く表示しましょう.
そこで使われるのが16進数です.
先ほどのデータを1Byteのデータは,
0x90
と表すことが出来ます.

なお,10進数ではなく,16進数で表すのは,2進数から変換しやすいことなどが理由と言われています.

さて,バイナリデータはこのように16進数で表されるということを説明してきましたが,これではまだ人間が分かるデータにはなっていません.

そこでバイナリデータを物理値や諸々のデータなどの欲しいデータに変換することが必要です.
その際に使うのがQL ( Quick Look ) です.

以下の記事などを読むともう少し解像度が上がるかもしれません.


通信プロトコル

QLのソフトと言われてイメージができるようになったところで,まずは通信 について勉強していきましょう.

先ほども説明しましたが,人工衛星から地上までは電波によってデータが伝達されます.
この技術も非常に面白いので時間があれば勉強してみてください.
例としてQPSK変調の記事を挙げておきます.

https://www.analog.com/jp/technical-articles/gpsk-modulino-definition--maxim-integrated.html

一応,私はアマチュア無線3級を持っているので,この辺りは勉強したことがあります.これによって,もしかしたらほかの研究室メンバと理解度の違いがある可能性がありますので,時間があれば資格も取ってみてください.

さて,アンテナで受信した電波をデジタルデータに変換したとしましょう.
デジタルデータとして,導線を通じてくるわけですが,PCなどのソフトウェアはどのようにデータとして解釈しているでしょうか.

この決まりを決めているのが通信プロトコルというものです.

Arduinoなどのマイコンを触る機会も多くあったと思いますが,そこでよくわからずに

serial.begin(9600);

としていたと思います.
実はこれは,通信の決まりを決めていました.
baud rateと呼ばれデータの通信速度を決めているのでした.

Arduinoでは,シリアル通信と呼ばれる通信をしています.
これが分かりやすいので,こちらで説明をしたいと思います.

この通信プロトコルとして,UARTというものがあります.
本当は自分で記事を作りたいところですが,一旦以下の記事などがわかりやすいので読んでみてください.

https://www.analog.com/jp/analog-dialogue/articles/uart-a-hardware-communication-protocol.html

Tx, Rx などは非常に多く見る機会があると思います.
また,データのformatなどは非常に重要なので,何を示しているのかよく理解していただきたいです.


データフォーマット

さて,タイトルに電文と付けましたが,これは要は意味を持ったデジタルデータだと思ってください.(バイナリデータです)

さて,では知らない人からバイナリデータを渡されたとします.
この中には,Amazon gift券のコードが隠されていると言われたとします.
あなたはどうにかして,データの中身を知りたいと思います.
しかし,変換することは非常に難しいでしょう.

人工衛星のデータも同じです.
要は変換規則を知らなければほとんど価値のないデータということが言えます.

このデータ規則を決めているのが,formatと呼ばれるものです.

例えば,2byte目はジャイロセンサの整数データが入っていて,3byte目は衛星の信号の状態を表すバイナリデータが入っているなど,そういう感じです.

これは実はあり触れた話であり,例えば写真を変換する際にも jpgやpngなどでデータフォーマットが異なるため,単純に拡張子を変えただけでは変換できないなど経験があると思います.

大体のデータでは,フォーマットが決められており,その規則に則ってデータを変換しなければ意味のないデータとなります.

あなたが,フォーマットに合わせてデータを作成することをエンコードするといい,受け取ったデータをフォーマットに合わせて変換することをデコードすると言います.

少し話がそれますが,文字化けをするのもこれが理由です.
PCはバイナリデータを取り扱っていて,人間のために分かりやすくデータを変換してくれています.
つまり,日本語というものに変換するときもデコードしてくれているわけです.それがShift-jis や utf-8なわけですが,これら二つもデコードの方法が異なるため,文章を作成した人がエンコードしたフォーマットによってバイナリデータが変わるため,フォーマットが異なるモノでデコードすると文字化けするわけです.

この辺も自分で記事を書きたいですが,だいぶ先になると思います.
以下の記事などが分かりやすいと思います.

なお,アルファベットなどはAsciiコードなどで表されます.

また,数値解析の講義などでやったと思いますが,
big endian や little endian など,データの順番なども重要です.

これは衛星だけでなくて,コンピュータの仕組みを理解するのにも必要な知識です.


やってほしいこと

通信プロトコルが合わないと正しくデータが送れず,フォーマット通りにデコードしないと欲しいデータは見られないということが分かったと思います.

そこで,まずはバイナリデータを変換するということを実際にやってもらいたいと思います.

有名な加速度センサとして,ADXL345というものがあります.

https://www.analog.com/jp/products/adxl345.html#product-overview

以下のデータシートからデータフォーマットを探して,データを変換するプログラムを組んでみてください.

https://www.analog.com/media/en/technical-documentation/data-sheets/adxl345.pdf

とはいえ,データシートを読んでもよく分からないと思いますので,下記の記事などを読んでみてください.

やってほしいことは,単純にバイナリデータを変換することです.


最後に

一旦終わります.



人工衛星を大学で開発しています! いずれは宇宙や衛星,ロケットを題材とした高校生や一般向けの教材を作りたいと考えています!! もしよろしければ応援していただければと思います! 教材をkindleで売る費用や活動費(インタビュなど)で使わせていただきます.