1.はじめに 以前に紹介しました「ラジオ番組自動録音装置の製作」では、ジャンクのミニコンポから取り外したチューナーユニットを使用していました。そのため、再現性に今一つ欠けることから、 バックアップの目的も兼ねて、新たにラジオ受信用のICを使ったものを今回作成しましたので紹介してみたいと思います。 使用したマイコンは、前回同様、PIC32MX695F512H を使いましたが、自作基板ではなく、ランニングエレクトロニクスから販売されている「SBDBT32」マイコンボードを使用しました。 これに、アイテンドーから販売されているDSPラジオICを搭載したDSPラジオモジュール「M6951」を組み合わせてみました。 このモジュールのラジオICは、マイコンからI2Cインタフェースで、受信周波数や音量を制御することができます。 I2Cによる制御のサンプルプログラムが商品サイトには、アップロードされていますが、PIC用のものではありません。今回PIC用のドライバプログラムを作成しましたので、その紹介もしてみたいと思います。 2.機器構成
今回は、市販のマイコンボードやラジオモジュールを使用しましたので、前回作成したものよりは、よりシンプルな構成となりました。 音声取込やSDカードへの記録、カレンダー機能の組み込み等は、前回の作例と全く同じです。今回は、オペアンプによる音声信号の増幅回路や、時報信号を検出するためのオペアンプによるコンパレータ回路は省略し部品点数を減らしました。 マイコンボード、ラジオモジュール以外の部品としては、2kΩ の抵抗2本と、受信モニター回路用の抵抗1本と電解コンデンサ1個、それとステレオミニジャック、ならびにACアダプタ接続用のDCジャック、FMアンテナ接続端子だけです。 DSPラジオICとマイコンボードとの接続 DSPラジオモジュール「M6951」の詳細については、商品サイトに簡単な外部接続回路図とともにICのデータシートがアップされていますのでそちらを参照してください。 このモジュールとマイコンボードとの接続は、モジュールの電源制御であるPONと、I2CインタフェースのCLKとDAT、さらに、音声信号の出力であるLOUTとROUTの5ピンのみの接続となります。 マイコンボード「SBDBT32」は、電源供給端子やPICkit3の接続用端子を含め、わずか10本しかありません。 そこで次のようにピンを割り当てました。
ラジオモジュールの音声出力端子のLOUT、ROUTは、電源電圧の1/2の電圧がバイアスされています。マイコンボードとラジオモジュールともに電源電圧+3.3Vで使用すると、LOUTやROUTをそのままPICのA/D入力に接続することができます。前回の作例では、オペアンプでバイアスをかけていましたが今回は不要です。 LOUT/ROUTとマイコンのA/D入力との接続は、直結ではなく一応2kΩの抵抗を間に入れておきました。さらに、LOUTとROUTは、受信モニター用としてイヤフォンが 接続出来るように、ラジオICのデータシートの回路図に沿った音声出力回路を組み込んでみました。 ラジオモジュールの外部接続回路図にある音量制御用のボリューム回路は、I2Cでマイコンから音量制御しますので省略しました。 また、LEDも基板に搭載済みのものをチューニングの目印として使用しました。 LED-Kを使用し、LED-Aは使用していません。AMは受信しませんのでAM用のバーアンテナは接続していません。 「SBDBT32」マイコンボードには、microSDカードのインタフェースが実装済ですのでそれを使います。USBコネクタは今回使用しません。
3.ソフトウエア MPLAB IDEの上で、C32コンパイラを使ってC言語で開発しました。出来上がったプロジェクトファイル一式は、以下のとおりです。
主な処理について、前回との変更点を中心に説明します。詳細については、ソースファイルを参照してください。 SDカードの制御(ff.c mmc.c) 自作基板では、SPI3を使ってSDカードにアクセスしていましたが、SBDBT32では、SPI2を使います。SPIモジュールの違いだけでプログラムの内容は変更ありません。 チューナーの制御(akc6951.c) DSPラジオICであるAKC6951のデータシートに従って作成したドライバープログラムです。PIC32MXのI2C処理を後半部分に収めています。 前回の作例に倣って、周波数を引数にしてTuned()関数を呼び出せば、目的の周波数が設定できるようにしました。 録音スケジュール(schedule.c) 前回と変更はありません。 録音処理(record.c) こちらも処理内容に変更はありません。前回は、アナログ入力にAN2/AN3を使いましたが、今回は、AN0/AN1を使いますので、AD変換モジュールの設定のみ変更しました。 時報による時刻補正(jiho.c) 今回は、オペアンプによるコンパレータ回路を省略しましたので、それに代わる処理が必要となりました。デジタル入力に代わって、AN0(ROUT)のアナログ入力を読み取り、0.05ボルトを境に、上なら1、以下なら0と判断する処理を加えました。 今回、電波時計による受信プログラムを削除しました。それに伴いファイル名を変更しました。 |