オシロスコープでAMラジオを受信する
要約
オシロスコープとアンテナのみを使ってAMラジオを受信し、7秒間の音声を復調できた。 以下は、時報を受信して復調した音声。
背景
電源不要かつ構造が単純なラジオとして、ゲルマニウムラジオが古くから知られており、電子工作の入門として定番中の定番である。 このエントリーにたどり着いた方も、過去にゲルマラジオを自作した経験があるのではないだろうか。
一方、かつて高嶺の花と言われたデジタルオシロスコープ。昨今ゲーム機よりも安いとまでは行かないが、エントリーレベルでも高性能なものが5万円程度から入手できるようになっている。 私の持つSiglent SDS1104X-Eもいわゆるエントリーレベルのオシロスコープだが、ラジオ放送を受信するために十分な性能を持つと考えられる。
先日、オシロスコープにアンテナを繋ぐだけでラジオ局が見えるというツイートをしたところ、そこそこバズった。 そこで、オシロスコープとアンテナだけでラジオは受信できるのか、まずはAMラジオから確かめてみることにした。
オシロスコープに雑にアンテナ繋いだらFFTでFM放送局が見えるのすごくない?(その界隈からしたら当たり前) pic.twitter.com/qI1sKarxCV
— jptomoya (@_jptomoya) 2020年4月28日
オシロスコープでのAMラジオ受信方法
電波というものは微弱だが、オシロスコープにアンテナを繋げばノイズと区別がつく程度に受信できることが先のツイートからもわかる。 デジタルオシロスコープは入力された信号をA/D変換器で数値化して記録する装置なので、下図のように、数値化されたデジタル信号にバンドパスフィルタ(BPF)、絶対値処理、ローパスフィルタ(LPF)とゲルマラジオ相当の処理を行えば復調できる *1 。
このように、従来アナログ回路で実現されていた機能をデジタル信号処理で実現するような無線機はソフトウェア無線(SDR:Software Defined Radio)と呼ばれており、特に新しい概念ではない。
実験の条件
オシロスコープは、Siglent SDS1104X-Eを用いた。 アンテナは、コンポによく使われるAMループアンテナ*2を利用した。 オシロスコープから取り込んだ信号の復調処理は、Google Colaboratory上で行った *3 。
放送を受信できていることを聴覚・視覚の両面から確認しやすいNHKの時報を受信することにした。 そのため、受信する放送局は、NHK名古屋放送局のラジオ第1放送(周波数: 729 [kHz]、コールサイン: JOCK、出力: 50 [kW])とした*4。 送信所から受信地点までの距離は、20km弱である。
また、オシロスコープは、あらかじめ自己校正を行っておき、オフセットの除去を図った。
手順
セットアップ
ループアンテナは、アンテナとして使い、同調回路とはしないため、2本の線のうち片方だけをプローブの先端に接続する。ループアンテナに極性はないのでどちらに接続しても良い(はず)。 プローブのGNDはアースに接続するか、オシロスコープ側でアースに接続している場合は下の写真のように浮かせておいて良い。 プローブの倍率が切り替えられる場合はx1に設定する。
アンテナが接続出来たら、オシロスコープのセットアップを行う。 トリガの設定は特に必要ない。最終的に観測するのは音声波形のため、ラジオ片手に手動トリガをかけることで十分タイミングを合わせられる。 トリガを設定する場合は、例えばGNSSモジュールの1pps出力でトリガをかければ、時間軸を数十 [ns]の精度でUTCに同期させることができる(今回はこの方法を用いた)。
垂直軸は、波形全体が画面内に収まりかつできるだけ画面いっぱいに表示されるように設定する。
水平軸は、サンプリングレートが受信したい周波数のナイキスト周波数を下回らない範囲で*5できるだけ長く設定する。 SDS1104X-Eの場合、14Mのメモリを持ち、1画面は14divとなっているため、2 [MSa/s]のとき500 [ms/div]で最長となった。つまり、500 [ms]×14 = 7000 [ms]となり1画面で7秒間の波形を捉えられる。
セットアップ後に観測した波形は下図のようになった。 拡大波形を見ると、商用電源に由来すると思われる60[Hz] 1.34[Vp-p]のノイズが乗っているのが分かる。SDS1104X-EのADC精度は8bitしかないので、垂直軸の分解能面で非常に不利である。 このノイズは、CRハイパスフィルタ回路で簡単に除去できるが、アンテナとオシロスコープのみでラジオを受信するのが本エントリーの趣旨なので、とりあえずそのまま復調することにした。
オシロスコープにFFT機能がある場合は、ここで放送が受信出来ているか確認しておくと良い。下図にオシロスコープのFFTでの受信確認の例を示す。
私の環境では、8回平均でノイズフロアが-106.0 [dBV]。中心のピークが-50.6 [dbV]となった。
波形の取り込み
オシロスコープのCSV出力機能を使ってUSBメモリに保存し、波形データを取り込んだ。 ちゃんと取り込めているか確かめるため、とりあえず0.02秒分のグラフを下図のように描画して確かめる。
オシロスコープの画面と同じ波形が得られた。 前述の通り、60Hzのノイズが目立つが、ゆっくりとした電圧変化の中でも小刻みな波がある。この小刻みな電圧変化の中にいろいろな放送の電波が重畳されている。
バンドパスフィルタ(BPF)
ゲルマラジオの同調回路にあたる処理。受信したい周波数の信号だけを取り出す。 AM放送の占有周波数帯域は15 [kHz]とされている*6 ので、 通過域端周波数を729 ± 7.5 [kHz]、阻止域端を729 ± 15 [kHz]とした。 また、通過域端最大損失は3[dB]、阻止域端最小損失は40 [dB]とした。
バンドパスフィルタ後の波形は下図のようになった。
左が先頭0.7秒、右が先頭0.000025秒(50サンプル)を拡大した波形である。 スパイク状のノイズがひどいが、729kHzの波形がうまく取り出せている。 また、0.57秒付近で440Hzの予報音が出ていることが確認できる。
絶対値処理
ゲルマラジオの包絡線検波回路にあたる処理。単に波形の絶対値を取って全波整流とした*7。 絶対値処理後の波形は下図のようになった。
左が先頭0.7秒、右が先頭0.000025秒(50サンプル)を拡大した波形である。
ちなみに、ゲルマラジオをリスペクトして半波整流にする場合は、絶対値の代わりに最小値0でクリッピング処理を行えば良い。
ローパスフィルタ(LPF)
ローパスフィルタをかけて、可聴域のみを残すように高周波成分をカットする。 人間の可聴域は20 [kHz]くらいと言われているので、通過域端周波数を10 [kHz]、阻止域端を22.05 [kHz] *8とした。 また、通過域端最大損失は3[dB]、阻止域端最小損失は40 [dB]とした。
ローパスフィルタの他に、DCオフセット除去処理(平均値で減算)を行っている。また、スパイク状のノイズがあるため±0.003 [V]でクリッピング処理を行った。 波形は下図のようになった。
0.61秒付近を拡大した下図に示す。
440Hzの予報音が復調されていることが確認できる。
復調結果
ここまでの波形で音声ファイルを作成すれば、復調された音が聴けるはずである。 2 [MSa/s]のまま音声ファイルを作成することは非効率なので、100サンプルずつに間引くことでサンプリングレートが20000 [Hz]のデータをwavファイル化する。 ナイキスト周波数が可聴域の約半分の10 [kHz]となるが、元がAMラジオの音声なので問題なしとした。
最終的に復調された時報の音声は以下のようになった(冒頭の音声と同じ)。
無音時のノイズがひどいものの、440Hzの予報音3回と880Hzの正報音がはっきりと聞こえる。
まとめ
エントリーレベルのオシロスコープとループアンテナのみでAMラジオ放送を受信できることを確かめた(外部アンプなし!)。
オシロスコープは、波形を連続的に観測する装置ではなく、一度に捉えられる放送はほんの数秒である。そのため、ラジオとしての実用性は全くない。 しかし、目に見えない電気信号の動きを、波形を見ながら直感的に理解できるのがオシロスコープの魅力である。
やっていることはダイレクトサンプリング方式のSDRに過ぎないので、新しいことは全くないのだが、 波形を見ながら電波の原理を学べる、令和の時代に則した科学実験になるのではなかろうか。
参考文献
- ゲルマラジオの構造
- PythonのSciPyでバンドパスフィルタをかける!
- PythonのSciPyでローパスフィルタをかける! | WATLAB -Python, 信号処理, AI-
- 鉱石ラジオ - Wikipedia
*1:ちなみに実際のゲルマラジオでは、イヤホンの特性がローパスフィルタの役割を果たすので復調回路のコンデンサは省略できる。
*2:https://www.amazon.co.jp/dp/B074QPN1NN/ref=cm_sw_r_tw_dp_U_x_ihnSEbPB8T1MH
*3:ノートブックを https://colab.research.google.com/drive/1iEY0zwwKA2cw6Jxb_bA5wfJp1M7jPTJB にて公開するので、参考にされたい
*4:https://ja.wikipedia.org/wiki/NHK%E9%8D%8B%E7%94%B0%E3%83%A9%E3%82%B8%E3%82%AA%E6%94%BE%E9%80%81%E6%89%80
*5:今回は729 [kHz]を受信するので、1.458 [MSa/s]以上
*6:http://member.tokoha-u.ac.jp/~kdeguchi/hobby/radio/synchro.pdf
*7:ゲルマラジオでも全波整流はできるらしい。無電源回路ではダイオードの損失を気にするところだが、理想的な整流ができるのはソフトウェア無線の魅力だろう
*8:CDのサンプリングレートの半分