2021年10月29日金曜日

特小SDR受信アプリで20chデコードができるようになった

 前回の最後にちらっと書いた特定小電力トランシーバの受信アプリ、ゴリゴリSIMDで書き直してついに20chでも動くようになった(安定動作には程遠いけど、かろうじて途切れずに動いてる)。

 一番上の横長の画像がIF全体のスペクトル(割当300kHz弱のところ、約1MSa/sで受けてるのでピークが中央に寄ってる)。下の20個はch1からch20までのAFスペクトル。左上のch1は受信中なので高周波側(左右の端)の強度が低い。他のチャンネルはRFがないのでFM復調は雑音となり、高いホワイトノイズが出ている。

 AFの高周波側を使用したスケルチによって受信の有無を判定し、信号があると認識したチャンネルはNAudioを経由してオーディオデバイスへ出力できるようになっている。


 ということで、とりあえず20ch全チャンネルを監視して入感したchをオーディオに出力する、という最低限の機能は動くようになった。もっとも、まだ安定性には難があるけど。グラフィック周りで例外が頻出する。スレッド処理は未知の領域だ。いろいろ調べねば。

 あと、手持ちの特小トランシーバが1個しかないので、個別のチャンネルでのデコードは動いているけど、本当に複数ch同時に入感してデコードできているのかは不明。

 処理速度的には結構ギリギリ。とはいえ、カリカリに最適化すれば昨今のPCなら問題ない程度には処理できる。今の所、周波数変換・CIC・FIRをSIMD実装で行っているが、ガッツリ手を入れればもう少し早くなりそうな程度には無駄が感じられる実装になっている。あとはやる気の問題。今回は初めての実装ということもあって、まずは1chだけデコードできるように実装して、その処理を複数個並べる、というような流れになっている。SIMDを使うのであれば、複数ch(4ch分とか)をまとめて処理するようにしてもいいと思う。その場合、CICやFIRも全部書き換えないといけないので、途中から仕様変更すると大変だけど。

 どんな感じでデータを流せばいいのかは把握できたので、一旦全部ご破産にして作り直せばもっとマシなものができそうだ。飽きなければ。


 とりあえず「特小トランシーバをSDRで複数ch同時に受信することは可能なのか、可能だとしたらどの程度可能なのか」という疑問には「20chは動きそうな感じ」という答えが得られた。ので、そろそろ飽きてきそう。レピータを含めた47ch丸ごとは難しそうな気がする。ウチにはレピータの機材はないので動作確認もできないし、わざわざ動作確認用にポンと買えるほど安い機材でもないだろうし。周波数も多少離れたところにあるようだし。

 しかしまぁ、作っておいてなんだが、特小トランシーバ全20ch同時受信なんていったいどんなところに需要があるんだろうな。ウチくらいの田舎だと特小使ってる人もほとんどいないし、レシーバーでスキャンすれば事足りそうだ。大規模な商業施設とかテーマパークみたいなところでスタッフの会話聞くみたいな遊びはできそうだけど、そうすると同時に複数人が喋ってるからだろうから聞き取るのは大変そうだな。

 ま、興味本位遊び半分に作ってるだけだから、実用性とか気にしたら負けってことで。

0 件のコメント:

コメントを投稿