-
Notifications
You must be signed in to change notification settings - Fork 28
RTL2832Uドングルを使ってテレビを見る!
なんだかよく知らないですけど、RTL2832Uというチップを使ったワンセグチューナーは万能の受信機として使えるそうです。 とりあえず、ひとつ750円と激安なので、DS-DT305を買いました。
SDR#というアプリを使えば簡単にFM受信機になりました。でも、これはもう出来上がってるアプリで仕組みがよく分かりません。GNU Radioというのはもっとプログラマ向けで、部品を並べて配線すると好きなようにデジタル信号処理をプログラムできます。これを使ってFM受信機とか作ってみたりしたんですが、これが結構難しかったりしたわけです。
FMは受信できるようになったので、次は気になっていたTVSharpを試してみました。これはNTSCの放送を受信して白黒の絵が出ます。ソースを見たらむちゃくちゃ簡単だったので、自分もGNU Radioの部品を組み合わせて作ってみたくなったわけです。
まあ21世紀ですし、テレビぐらい画面でぽちぽち部品を繋いだらできるみたいな電子ブロックみたいな感覚で作れて当然なわけです。 あと、アナログ放送はもうCATVでしかやってないっぽいので、ない人はファミコンとかで試しましょう。CATVのデジアナ変換も来年3月で終わりだそうです。
RTL2832Uに適当に周波数を設定すれば信号が出てくるので、AM復調します。単に複素数の絶対値を取るだけでいいらしいので簡単でした。
適当にレベルを調整します。本当に適当に数値を決めましたが本当はAGCとかが必要です。あと負変調なのでマイナスを掛けないと黒と白が反転します!
次に偏向信号を作ります。これはブラウン管の後ろから出た電子ビームを水平方向と垂直方向に動かすための信号です。水平は15.734kHzで垂直は59.94Hzののこぎり波を作るだけです。位相を調整できるようにディレイを付けてみました。
オシロスコープ(WX GUI Scope Sink)を追加して波形を確認します。青い線が水平偏向信号ののこぎり波で、赤い線がビデオ信号です。緑のは調整用にローパスフィルターを通した後の信号です。目盛りが-0.7ぐらいのところが水平同期信号で、その少し上が真っ黒のレベル、+1.0ぐらいが真っ白のレベルです。画像では水平同期信号とのこぎり波がきっちり同期してるように見えますが、これが実際は微妙にずれます。本当はPLLを使って同期するところですが、めんどくさいのでのこぎり波の周波数を設定するスライダーを付けるだけにします。本当に微妙な調整が必要で、数ミリHz単位で調整します。
動画を表示する部品は標準ではついてないので、ここだけは自分で作る必要があります。しかし、標準のオシロスコープのXYモードを改造してXとYと輝度を描画するようにするだけで可能なのではないかと思いついてしまったので、この方針でやることにしました。ようするに普通のブラウン管を作るわけですね。なお、オシロスコープのXYモードで動画を表示するのはニコニコ技術部では普通のようです。
とにかく、既存のコードをコピペして回って作ったものが、
なんか他にもファイルがいっぱい置いてありますが、grc_modtoolが最初に生成してくれたファイルそのままなので無視していいです。