Computer & RF Technology

RTL2832UをDirect Sampling Modeで使いGNURadioで中波AMラジオを受信する

RTL2832Uドングルはその小ささからは信じられないほどの広帯域な受信が可能ですが、下限の周波数が30~50MHzということでHFやMFを受信することができません。ところがなんと若干の部品追加の改造することでHFやMFを受信する方法があるとのことなのでさっそく試してみました。

ドングルの中身は、前段のチューナチップがベースバンドへの周波数変換をして、後段のRTL2832UがI/Q信号のAD変換などベースバンドの処理を行うという構成になっています。ところが、RTL2832Uチップの隠れた機能として、0〜28MHzの範囲で任意のIF周波数を設定できる機能があり、この範囲の信号を取り込む能力があるとのことです。これをDirect Sampling Modeと呼んでいるようです。この機能を活用するためには、チューナチップをスキップしてRTL2832Uに直接信号を入れる改造をする必要があります。Webにいくつか既報の改造例があります。

前に書いたように、感度不良になってしまったRTL2832Uドングルが手元にありますので、これを改造してみることにします。おそらくチューナチップだけが不良だと考えていますので、この改造では使えるはずです。

まずはトランスですが、3本のポリウレタン線を撚って、小型のメガネコアにトリファイラで5ターン巻きました。3本のうちの2本を直列に接続して、巻数比1:2のコンベンショナル型のトランスとし、インピーダンス比50Ω:200Ωで使います。

直列につないだほう(200Ω側)を、RTL2832Uの1pinと2pinに接続します。1005(1mmx0.5mm)のチップコンデンサがバランス信号として隣り合って並んでいますので、ここに信号を入れます。前述の改造例ではチップコンデンサを外していましたが、今回はチップコンデンサを外さずにそのままポリウレタン線を接続してみました。

トランスのもう一方にコネクタを接続します。このあとホットボンドでメガネコアを基板に仮止めしておきました。

使用したドングルは基板が小型のタイプで、チップの間がとても狭いのでハンダ付けしにくいです。もし改造するドングルを選べるのであれば、もうすこし基板が大きいタイプを使用したほうが良いと思います。

一方ソフトウェアのほうですが、GNURadioのブロックでRTL2832Uをダイレクトサンプリングで使う方法を調べてみました。ソースに当たるのが一番判り易いということで、調べてみたところOsmoSDR Sourceが対応しているようです。デバイスパラメータとして、direct_samp=1を付け加える必要があるようです。チューナチップへの対応状況など、どんな能力があるのかを知るためにもlibrtlsdrのソースを眺めておいて損は無いと思います。

さっそくOsmoSDR Sourceを使ってAMラジオを構成してみました。RTL2832Uはサンプリング周波数を1.024MHzに、センターを1MHzとしました。チューニング範囲をAM放送に合わせて、500kHz〜1.5MHzとし、Frequency Xlating FIR Filterで受信周波数へシフトします。受信周波数は調整できるようスライダーで操作可能とします。Low Pass Filterで8kHzを取り出し、ついでに1/32でデシメーションしてサンプリング周波数を1.024MHzから32kHzに落とします。最後にAGCを通してからAM Demodで復調します。(クリックで拡大します。フローグラフファイルはこちら)

OsmoSDR SourceのDevice Argumentとしてdirect_samp=1を加えます。

動作させてみるとこんな感じです。AM放送は1440kHz, 1287kHz, 567kHz, 747kHzに見えています。中心に見えているのは1MHzのLoです。1.2MHzにサブキャリアを伴った大きな信号が見えていますが、これはFM放送(85.2MHz)の混信です。

動画で受信の様子です。

https://youtu.be/oX9CAlwllLc

以下メモです。

  • RTL2832UのIF周波数の調整は若干の遅れが生じます。周波数を変化させると、1秒ほど遅れてぬるっと動くようです。操作感が良くありませんので、このAMラジオでは、RTL2832Uは固定のIF周波数で使い、周波数のチューニングは別のブロックで行っています
  • やはり混信は避けられません。アンテナとの間に別途LCフィルタが必須だと思います
  • FM放送の混信がAM放送よりも大きく入ってしまいましたが、これがつないだままのチューナチップの影響なのかどうかは不明です
  • RTLのDirect Sampling Modeは、APIで明示的に設定する、もしくはlibrtlsdrライブラリが非対応のチューナチップである場合に有効になるようです
  • Direct Sampling Modeには、OsmoSDR Sourceが対応できるようです。RTLSDR Sourceはできそうですが未検証、RTL2832 Sourceは対応不可のようです。
  • そのほかに、rtl_tcpコマンドも対応しているようです
  • 感度不足を懸念していましたが、それなりに受信できています

というわけで、1500円のドングルに、一つトランスを追加するだけで、AMラジオを受信することができました。もちろんHF帯も受信できていますのでアマチュア無線の各バンドにも対応できるはずですが、それはまた別途レポートしたいと思います。

今回使用したフローグラフをgithubに上げておきます。gnuradio-companionで開くことができます。gnuradioとgr-osmosdrがインストールされていることが必要です。

comments powered by Disqus