PiRadioをEthernetでPCに接続する
RaspberryPiにはEthernetとWifiが付いています。これを使えばPiRadioの信号をPCへ飛ばせます。
RaspberryPiではリアルタイム処理の場合48.8ksps x2chが限界でしたがPCで処理すれば1Msps x2ch以上は可能でしょう。
これまで困難だった広帯域の信号処理ができると同時に、PiRadioをANT直下など理想的な場所に設置して
Wifiを使ってどこでも受信操作が可能になります。
最大速度を計測したところEthernetケーブル経由で40Mbit/sec(BW=1〜2MHz)以上、
Wifi経由で1Mbit/sec(BW=25〜50kHz)くらいでした。
システム構成例
RaspberryPiと無線ルーターの間はEthernetケーブルの方がはるかに高速になります。
PCのWifiは十分に速いのでWifiで問題ありません。PCはWindows7を想定しています。
TCP/IPではなくUDPを使用
高速なストリームデータを扱う場合はエラー時に再送などを行うTCPよりも、送りっぱなしのUDP接続の方が向いています。
PiRadio V2.50は受信中のベースバンドI/Q信号を全てUDP接続で
ネットワークへ送信する機能を付けてあります。
UDP接続の初期設定は以下のようになります。Piradio.cpp
5行目のIPアドレスはデータを受信するWindowsマシンのIPアドレスを指定する必要があります。
Win7の場合は「スタート」→「コントロールパネル」→「ネットワークと共有」→「接続」→「詳細」で調べられます。
書き換えたらコンパイルます。
UDPソケットからのデータ送信部分は以下になります。Piradio.cpp
UDP通信のために追加したコードはほぼこれで全てです。意外と簡単に実現できます。
テスト的に組み込んであるのでエラー処理などは省いてあります。
Visual Studio Community 2017を使用
Windowsプログラムの開発は無料の「Visual Studio Community 2017」C#のフォームアプリケーションを使用しています。
今回実験したサンプルのプロジェクトを
ここからダウンロードできます。
piradio_w.slnをダブルクリックするとプロジェクトが立ち上がります。コンパイルして実行すると上の画面が現れます。
PiRadioの方も起動し何か信号を受信したら「u」キーを押すとUDP送信が開始されます。
上の画面左下にある「START」ボタンを押すと高速に動く波形が見えるはずです。見えない場合は先に説明したIPアドレスや
ネットワーク環境を確認してください。
高速化対応
このままでは48.8ksps x2ch以上の速度にならないため、更に高速化するにはFPGAの改造、Visual Studio側のTimer Interval変更
などが必要になります。ここに紹介した情報だけでも色々実験できると思います。
すこし先になりますがWindowsアプリとFPGAを改造した広帯域リアルタイム処理の計画もあります。