LRチャネル独立型FMラジオの作製
先日のDSP式FMステレオトランスミッターに合わせたLR単独動型受信機を作製している
名称に困って「LRチャネル独立型FMラジオ」って付けたが,つまりFMステレオ放送を受信して左右のどちらかだけアンプを通しスピーカーを鳴らすモノラルラジオということである
元々はゲーム音を耳元で鳴らしたいだけだったのだけど,以下の特徴がありそうだ
- FMステレオトランスミッターを利用して自由なスピーカー配置で高品質の音楽を聴くことができる
- 放送局の受信機能も付けるのでFMラジオを手軽に楽しめ,複数スピーカーの配置により臨場感を得るできる
基本設計概要
- FMトランスミッターとしては77.0MHzを使用
- 受信可能放送局をプリセット
- LRの出力は切替
- アンプ付きにして音量操作可能
- エンクロージャー内に設置可能なサイズ
パーツ選定
FMチューナー部はデジタル選局のほうが使い勝手が良いのでRDA5807M(右)を採用
- 電源電圧:2.7V~3.6V(3V)
- 消費電流:18mA(max)
- 受信周波数:76MHz~108MHz
- 通信方式:I2C(7bitAddress:0x10,0x11,0x60)
- S/N比:60dB
RDA5807Mのドライブはプログラムサイズの関係からATtiny85(左)を使用
アンプは完成品だと大きくなるのでLM386N(中)を最小で構成
回路図
(チューナー部)
- 電源電圧は3.3V
- ANTへは100pFを追加する予定
- LRの切り替えはSWではなくショートピンで行う
- 周波数変更はタクトSW1個でループさせる(初期値はトランスミッターの77.0MHz)
- タクトSWを2個で音量アップ・ダウン
(アンプ部)
- 20ゲインで動作させる
- R1,C8,R2は無くても問題ない(R1は200ゲイン時のノイズ対策用,C8,R2は発振対策用)
- 最終的にC9は220μFに変更(47μF~470μFでの試行結果)
(電源部)
- 省電力だったので三端子レギュレーターは50mAのS-812C33AY-B-Gに変更(ドロップ電圧が極小なのが魅力)
- C2は22μFに変更
スケッチ
(最初)
RDA5807MはArduinoでRadioライブラリを使用して試したこと(こちら)があるので同じスケッチを更新して使用したが,ATtiny85はRAMが512BytesしかないのでRadioライブラリをそのまま使うとオーバー(800Bytes超)するため,ライブラリーのデバッグ部分(データとなる文字列があるため)を外して減らす必要があった
コード:53,94Bytes,データ:308Bytesになり,なんとかATtiny85用のコンパイルが完了して書き込み
しかし,まったく動作しない
(Arduinoで試行)
ATtiny85でデバッグするのは困難なのでATMega328を搭載したArduinoで確認
これが困ったことに動作済スケッチでありながら動作しないので調査開始
途中,既存のスケッチを探して,こちらのスケッチを使ってみると動作したためRadioライブラリの破壊してしまったのかと再インストールしてみたが変化なし
すったもんだの結果,初期化の際,以下のような順序で構成すると動作することが判る
//最初に実行(initは駄目)
radio.setup(RADIO_FMSPACING, RADIO_FMSPACING_100);
//待ち(whileの方が良いかも)
if(!radio.initWire(Wire)) {
delay(1000)
}
//バンド設定
radio.setBandFrequency(FIX_BAND, FIX_STATION);
この構成でATtiny85でも動作確認できた
(最終)
結果,Radioライブラリでも確認できたが,スケッチサイズが減らせることもあり(調査途中で使った)上のスケッチのライブラリを使わせてもらうことにした(ラズパイの時も利用させてもらったかな)
スケッチ(SJIS,TAB4)
ライブラリのクラス名は「RDA5807M」から「XRDA5807M」に変更
試作
電源部も追加して,3.6Vで動作させてみたところ,十分な音量もあるようなので高校野球を試聴しながら試行中
現在1セットを基板に実装中