SDRでGPSシミュレータを作った。  Apr.2020
 
GPSシミュレータとは疑似的にGPS衛星からの信号を作り、任意の位置座標などを発生させるやつ。
世界中どこでも指定の座標にいるようなことができる。
例えばGPS関連機器の試験などに用途がある。
それをSDR(Software Defined Radio) ボードでつくる。

以下のソフトを開発された海老沼氏に謝意を申し上げたい。

  SDRボード

Nuand の ”Blade RF X40"
300MHzから3.8GHzまでのトランシーバー
40MSPS 12bit というなかなかの性能。それなりに高価

SDR#で受信機を実現可能なのだがHF帯を聞くためにはさらに
トランスバータボードが必要。これが高いんだ。

USB3.0でパソコンとデータ(I/Q)のやりとりをする。
変調するデータはパソコンでつくり、復調もパソコン上で行う。





  その1 "gps-sdr-sim" というソフト

githubにあるのでビルドする。

コマンドプロンプトから起動するソフトなのだが、NASAが配布している軌道情報ファイル
と位置座標(緯度、経度、高度)を渡すと巨大なバイナリーファイルが生成される。

それをSDRボードに転送する(Nuandが転送ソフトを配布している)

300秒程度のあいだ信号を発生できるが、バイナリファイル渡しなので長時間連続は困難。


 
その2 ”bladegps” というソフト

githubにあるのでビルドする。

gps-sdr-sim がファイル生成に特化していたためリアルタイムという点が弱かったが
それをリアルタイム化したもの

軌道情報ファイル、緯度経度高度、日付時刻などを渡し送信信号を生成し
BladeRFに転送するもので長時間連続動作が可能。
他にも機能があり、十字キーでの移動のシミュレーションも可能。


     
今回これをWindows上から動かすためVisualStudioのVisualBasicから操作
してみた。20年ぶりのVBだが結構覚えているのね、イベントドリブンも楽しいし。

行きたい場所の座標へワンタッチでジャンプしたり、直接座標を入力しジャンプ、とか
とりあえずやってみたいことを書いてみた。


結果は....あー飛ぶ飛ぶ というかちゃんと設定した座標に行けるんです。

ただサクサクというわけにはいかない。




   
皇居のお堀まで飛んできた!



        思ったこと

1、当然だが実行ファイルは配布されず、ソースはgithubから入手して自分でビルドしなければならない。
  その環境は無料のVisualStudioで作るわけだがまあこれの操作が素人には難しいわけで、しっかり頭をひねらなければならない。
  それでもC、C#、C++やVBの開発環境が無料というのはすごい。

2、スマホアプリで位置を変えたいと思う人もいるかもしれないがこれがまた結構難しいもので一筋縄ではいかない。
  _nomap というのがヒントではあるが期待してはいけない。
  スマホの位置情報はGPSだけに依存しているわけでは無いということを知ることになるわけで、シミュレータがすべての機器に万能ではないです。

3、VisualBasicからコマンドプロンプトに渡し戻すのは
  Shell、ProcID、Sendkeys あたりを使った。

4、Bladegpsへのコマンドはその順番とかいろいろあるようだ。ソースを読んで使い方を学ぶしかない。

5、トラ技2018年1月号が参考になる。誤植あるから注意!。