OSQZSS

オープンソース準天頂衛星(QZSS)受信機

GNSSロガー

2018-07-21 14:36:04 | 雑記
CSG ShopのNEO-M8T基板は安価でとても便利なのですが,
RAWデータのログにはUSB経由でPCに接続する必要があります.

CSG Shop: UBLOX NEO-M8T TIME & RAW RECEIVER BOARD WITH SMA

屋外観測でノートPCを放置しておくのも心配ですし,
この炎天下では壊れてしまいそうです.

そこで,SparkfunのOpenLogを使って,簡易的なGNSSロガーを
製作してみました.OpenLogは国内だとスイッチサイエンスから
購入できます.

スイッチサイエンス: OpenLog

電源はモバイルバッテリーを使って,USBコネクタから給電します.
OpenLogには,NEO-M8T基板についている1.25mmピッチの
スルーホールで接続します.しかし,この5V端子にはダイオードが
付いていて,入力しかできません.そこで,まずはこのダイオードを
外し,0オームの抵抗でUSBバス電源が出力できるようにします.



ケースを3Dプリンタで出力.



NEO-M8T基板とOpenLogを詰め込みます.
OpenLogへのデータの書き込みは,スライドスイッチで制御します.



どんどん作るよ!



【追記】このGNSSロガーの消費電力では,大抵のモバイルバッテリーで
オートパワーオフ機能が働いてしまい,動いてくれません.そんな中,
動作確認が取れていてお勧めなのは,AnkerのPowerCore+ miniです.

Anker: PowerCore+ mini

cheero Canvasという選択もあるけれど,サイズやデザイン的に,
こちらが好み.
コメント
この記事をはてなブックマークに追加

All Your GPS Are Belong To Us

2018-07-14 16:50:14 | GPS Signal Simulator
久しぶりにgps-sdr-simのアクセスが増えている.多分,これが原因.

Forbes: This GPS Spoofing Hack Can Really Mess With Your Google Maps Trips

リンク先のペーパーを読んでみると,車にSDRを搭載して,
実際に屋外でGPS spoofingを試したらしい.

USENIX Security '18: All Your GPS Are Belong To Us: Towards Stealthy Manipulation of Road Navigation Systems

中国国内で許可を取ってspoofing信号を放送したと書いてあるけれど,
本当にそんなことが許可されるのか半信半疑.

GPS spoofingに使われているツールは,Raspberry PiとHackRFを
組み合わせたWALB.中身はgps-sdr-simの再生ツールです.

GitHub: crescentvenus / WALB

【追記】論文タイトルの元ネタはこれ.

Wikipedia: All your base are belong to us

【追記2】なぜVirginia Techなんだろうと思っていたら,
Mark Psiaki教授,CornellからVTに移っていたんだ.

Virginia Tech: AOE Home / People / Faculty / Mark L Psiaki
コメント
この記事をはてなブックマークに追加

SDR for Engineers

2018-06-17 08:55:04 | ソフトウェア受信機
Analog Devicesがソフトウェア無線のテキストを無償で公開している.

Analog Devices: Software-Defined Radio for Engineers

プラットフォームはPlutoSDRで,信号処理にはMATLABを使っている.

コミュニティー向けのサイトもオープンするみたいだけれども,
まだコンテンツは何もない.

https://sdrforengineers.github.io/
コメント
この記事をはてなブックマークに追加

RSPduo

2018-05-30 23:15:05 | ソフトウェア受信機
SDRplayからデュアルアンテナのSDRが発売された.

SDRplay: RSPduo



SDRplayの製品は評判が良いので興味があるけれど,
デュアルアンテナでの帯域が最大で2MHzなので
GNSS信号を受信するとなると少し残念.

【追記】やっぱり面白そう.

SDRplay: Signal Adaption using the RSPduo
コメント
この記事をはてなブックマークに追加

fl2k_fileとGPS信号

2018-04-26 08:30:52 | GPS Signal Simulator
osmo-fl2kをbuildすると,fl2k_fileというアプリケーションがインストールされる.

$ fl2k_file --help
fl2k_file: invalid option -- '-'
fl2k_file, a sample player for FL2K VGA dongles
Usage:
[-d device_index (default: 0)]
[-r repeat file (default: 1)]
[-s samplerate (default: 100 MS/s)]
filename (use '-' to read from stdin)

基本的に,ベースバンドのファイルを指定したサンプリング周波数で出力するだけ.
サンプリング周波数は,ホストPCに搭載されているUSB 3.0コントローラに依存して,
最大で110MS/sから150MS/sと幅がある.

GPS信号の周波数は1575.42MHzなので,このサンプリング周波数の高調波を利用する.
例えば,サンプリング周波数を138MHzに設定して,11th harmonicを使うとすると,
1518MHzの高調波が得られる.GPS信号の周波数との差は-57.42MHzになるので,
ベースバンド側にこの周波数オフセットを予め与えておく必要がある.

さらに,VGA変換アダプタに搭載されている10MHzのXOにも周波数誤差があるため,
その微調整も必要となる.

fl2k_examplesでは,gps-sdr-simで生成されたI/Qデータを,fl2k_fileに入力できる
周波数オフセット込みのベースバンド信号に変換できるGNU Radioのフローグラフが
準備されている.

 (クリックで拡大)

このためだけにGNU Radioを起動するのは面倒なので,gps-sdr-simにfl2k_file用の
ベースバンドファイルが生成できるオプションを追加しよう.

【追記】osmo-fl2kのインストール手順やデモの動画が紹介されている.
周波数オフセットがあるけれど,本当にGPS信号が生成できるんだ.

mars_999のブログ:osmo-fl2kの実験メモ

【追記2】130MHzのサンプリング周波数でベースバンドを生成するのはキツイ.
gps-sdr-simでアップサンプリングができるようにしないといけないな.

【追記3】周波数オフセットの問題も解決し,fl2k_fileで生成したGPS信号で
測位に成功している.多分,世界最安のGPS信号シミュレータ.

mars_999のブログ:osmo-fl2kでgps-sdr-sim

【追記4】即席のSMAアダプタを作製.良い感じだ.

コメント (3)
この記事をはてなブックマークに追加

USB 3.0 VGA Dongle SDR

2018-04-23 08:08:24 | GPS Signal Simulator
面白そうなSDRを見つけた.

osmocom.org: osmo-fl2k

USB 3.0のVGA変換アダプタを使った送信機.ビデオ信号をRFのソースとして使うようだ.
高調波を上手く利用すると,GPS信号も出せるらしい.

GitHub: steve-m / fl2k-examples / GPS

サポートしているのは,Fresco LogicのFL2000というチップを使っているアダプタのみ.
$20程度で購入できるらしいが,具体的な製品名は紹介されていない.

amazonで探してみると,それっぽい製品が見つかったので取り合えず購入.

amazon.co.jp: Patech USB3.0 to VGA変換アダプタ

2,000円以下でGPS信号シミュレータが手に入る!
まあ,動かなくても,大した出費ではない.

【追記】探せば$5からあるのか.

HACKADAY: Spoofing Cell Networks with a USB to VGA Adapter
rtl-sdr.com: A TX-Only SDR Hacked From Commodity $5 USB to VGA Adapters

【追記2】amazonから変換アダプタが届いたので早速分解.



簡単にケースから取り出すことができます.
外観はwikiに掲載されているものとまったく同じ.



ラベルが読みづらいけれども,Fresco LogicのFL2000のようだ.

他にもいくつか似たような製品がamazonで見つかるけれど,
最安でも1,500円程度.その内にaitendoが1,000円以下で
販売してくれると期待.

【追記3】情報が増えてきた.ありがたい.

rtl-sdr.com: SETTING UP AND TESTING OSMO-FL2K
コメント
この記事をはてなブックマークに追加

GPS Week Number Rollover

2018-04-11 17:35:59 | 小型衛星
GPSシステムの時刻は,1980年1月6日からカウントされた時間を
週番号(Week Number)とTOW(Time of Week)で管理しています.

しかし,GPS衛星から放送される航法メッセージに含まれる
Week Numberは10ビットしかないため,1024週でゼロに戻る
rolloverが発生します.

そのため,GPS受信機内部では,このrolloverを適切に処理しないと,
正常なGPS時刻が計算できません.

今日のWeek Numberは1996なので,すでに1回,rolloverが
発生しています.

3年前にfireflyを開発したときには,次のrolloverのことなど
遥か未来で,まったく気にしていませんでした.ところが,
1年後の2019年4月6日には,2回目のrolloverが発生します!

GPS Week: Homeland Security provides info about 2019 GPS rollover event

来年4月といえば,fireflyが革新的衛星技術実証1号機で
軌道実証の真最中.さすがにこのタイミングでrolloverに
よる不具合が発生すると致命的です.

これはまずいと思い,慌ててGPS信号シミュレータに接続して
動作を確認してみました.



おまえ,大丈夫だよな?

 (クリックで拡大)

2019年4月6日の深夜からシミュレータをスタート.

 (クリックで拡大)

よかった!無事にrolloverを乗り越えて,正常な時刻と
位置を維持しています.

これで一安心.あってよかったシミュレータ.

github.com: osqzss / bladeGPS
コメント
この記事をはてなブックマークに追加

KiwiSDR Kit

2018-03-11 09:59:15 | FPGA
『ど』のぺえじの記事に触発されて,KiwiSDRを購入.

Seeed Studio: KiwiSDR Kit



発注してから気づいたのだけれども,わざわざセットで買わなくても,
秋月でKiwiSDRとBeagleBone Greenを買った方が安かった.

秋月電子通商:KiwiSDR Board ソフトウェアラジオボード
秋月電子通商:BeagleBone Green

FPGAベースのGPS受信機開発キットと思えばお手頃価格.
トランジスタ技術RTK特集号の原稿料の使い道としては適切だろう.

KiwiSDR Discussion: QZSS Support [GPS, added in v1.170]

【追記】KiwiSDRをGPS受信機開発だけに使いたいという要望は
それなりにあるらしい.

KiwiSDR Discussion: KiwiSDR on Xilinx Zynq FPGA for GPS only
コメント (2)
この記事をはてなブックマークに追加

GNSS-SDR with bladeRF

2018-02-26 13:13:58 | ソフトウェア受信機
LimeSDRでGNSS-SDRが動作したので,ついでにbladeRFでも
動かしてみます.

Ubuntuには,PPAを使ってbladeRFをインストールできます.

$ sudo add-apt-repository ppa:bladerf/bladerf
$ sudo apt-get update
$ sudo apt-get install bladerf

GNSS-SDRをビルドする際にヘッダファイルも必要ですので,
これらもインストールしておきます.

$ sudo apt-get install libbladerf-dev

GNSS-SDRは,リリース版をインストールするのではなく,
開発用の「next」ブランチをソースからビルドします.

その前に,ビルドに必要なファイルやツールをインストール
しておきます.

$ sudo apt-get install build-essential cmake git libboost-dev \
libboost-date-time-dev libboost-system-dev libboost-filesystem-dev \
libboost-thread-dev libboost-chrono-dev libboost-serialization-dev \
libboost-program-options-dev libboost-test-dev liblog4cpp5-dev \
libuhd-dev gnuradio-dev gr-osmosdr libblas-dev liblapack-dev \
libarmadillo-dev libgflags-dev libgoogle-glog-dev libhdf5-dev \
libgnutls-openssl-dev libmatio-dev python-mako python-six \
googletest

これらのインストールが完了したら,GitHubのレポジトリを
クローンして,「next」ブランチをビルドします.

$ git clone https://github.com/gnss-sdr/gnss-sdr
$ cd gnss-sdr/build
$ git checkout next
$ cmake ‑DENABLE_OSMOSDR=ON ..
$ make
$ sudo make install

GNSS-SDRは,OsmoSDRのドライバを介してbladeRFに接続します.
そのため,cmakeの設定で,OsmoSDRをenableする必要があります.

bladeRFでGPS L1 C/A信号を受信するための設定ファイルは
conf/gnss-sdr_GPS_L1_bladeRF.confになります.

設定ファイルでは,signal sourceとしてbladeRFを選びます.

SignalSource.osmosdr_args=bladerf=0

さらに,微弱なGPS信号が受信できるよう,bladeRRのRXゲインを
適切に設定する必要があります.

bladeRFのRXには,LNA,VGA1,VGA2の3つのゲインが設定できます.
OsmoSDRのゲインマップは,gainがLNAに,if_gainがVGA1とVGA2の
合計に割り振られています.rf_gainは未使用です.

GitHub: Nuand/gr-osmosdr/blob/master/lib/bladerf/bladerf_source_c.cc

gainにはLNAの最大値である6dB,if_gainは高めに48dB程度に設定します.

SignalSource.gain=6
SignalSource.if_gain=48

さらに,bladeRFのRXポートからはDCが供給されないため,
別途bias-Tなどで,GPSアンテナのLNAへの給電が必要です.



tindie: 1575 MHz GPS L1 Bandpass Filter with BIAS-TEE

これでGNSS-SDRの準備が整いました.設定ファイルを指定して
実行します.

$ gnss-sdr --config_file=conf/gnss-sdr_GPS_L1_bladeRF.conf

1分程度でGPS信号を捕捉し,測位が開始されます.
コメント
この記事をはてなブックマークに追加

GNSS-SDR with LimeSDR

2018-02-04 15:00:07 | ソフトウェア受信機
LimeGPSでGPS信号のリアルタイムシミュレーションが成功したので,
今回は逆に,GNSS-SDRを使ってLimeSDRでGPS信号を受信してみます.

まずは,LimeSDRに受信用のSMAコネクタを追加.
GPS信号シミュレータのためのTXアンテナはひとつで十分ですが,
RXアンテナはとりあえず全部繋いでおきます.



GNSS-SDRの実行にはLinuxの環境が必要になるので,
VirtualBoxのゲストOSとしてUbuntu 17.10をインストールします.

LimeSDRの開発環境とGNSS-RDRのインストールは,
Martyが公開してくれた手順に従ってさっくりと完了.

MyriadRF Discourse: Running your LimeSDR on GNSS_SDR on Ubuntu 17.10

GNSS-SDRによる測位も確認できました.
受信アンテナは,デフォルトでRX1_Lのようです.

 (クリックで拡大)

それでもいくつか躓いたので,忘れないようにメモ.

SoapySDRをサポートしているGNSS-SDRは,version 0.0.9以降になります.

GNSS-SDR: My first position fix

GNSS-SDRをapt-getでインストールしようとすると,Ubuntu 16.04 LTSでは
version 0.0.6のパッケージしかインストールできません.

Ubuntu Packages: GNSS-SDR Package

Artful Aardvark(Ubuntu 17.10)をインストールするか,
ソースからビルドする必要があります.

VirtualBoxの仮想マシンに割り当てられるCPUのコア数は,デフォルトで1個です.
GNSS-SDRは,思った以上に処理負荷が高く,最低でもコア数を2個にする必要が
ありました.

VirtualBoxのゲストOSにGuest Additionsのインストールを勧められますが,
Ubuntu 17.10ではインストール後にエラーが発生します.

VirtualBox: Ubuntu 17.10 - Guest Additions Installation Error

解決策がわからないので,Guest Additionsはアンインストールしておきます.

【追記】
VirtualBoxのDownloadsのページから,updated versionのGuest Additionsの
iso imageをダウンロードしてインストールしたら解決しました.RTFM.

VirtualBox: Downloads
コメント
この記事をはてなブックマークに追加