RDA5807FPは、RDAマイクロ製のFM対応のDSPラジオICである。SOP16ピンのパッケージで、変換基板にハンダ付けして使用した(パッケージタイプ(副番)が色々あるので注意)。
安価(データシートの参照リンクあり)に購入でき、使用部品が少なくて済むので使い易い。
I2Cインターフェースでコントロールするので、Arduinoとの組み合わせが可能である。
ここでは、Seeeduino XIAOと組み合わせる。RDA5807FPは電圧3.3Vで動作し、必要な電流は20mA程度なので、XIAO(3V3端子)から供給できる。
使用したRDA5807用のライブラリは、こちら(pu2clr at GitHub)にある。
基本的な使い方は、こちら(Qiita)を参考にすると良い。
選局やボリュームの変更には、4x4のKeypadを使用する。XIAOとはMCP23107というIC(基板)を経由して、I2Cインターフェースで接続する。
MCP23017をサポートするKeypad_MC17.hライブラリを利用した。
このライブラリは標準のKeypad.hライブラリを拡張している。
機能
16個のタクトスイッチの内、2個はボリュームの増減、1個は、低音のブースト切替に使用、残りの13個は選局(プログラミングが必要)に使用できる。
OLED(横長の物を使用)には、選局した周波数、ボリュームの数値、信号強度(RSSI)を表示している。
受信周波数の範囲は、76-108MHz(に設定した)で、ワイドFM対応である。
出力はオーディオジャック経由で小口径のスピーカー(ステレオ)を接続する。
H/W構成
・Seeeduino XIAO - コントローラ
・SSD1306 128x32 OLED表示装置
・4x4のKeypad
・Xtal発振器(32768Hz)、コンデンサ類
・MCP23107基板
・I2C接続 RDA5807FP、表示装置、MCP23107(マルチドロップで接続)
3つ同時に接続した時点で応答が無くなったので、SCKとSDAに5.6KΩのプルアップ抵抗を接続してある
汎用基板に実装。手前がXIAO、奥がRDA5807。アクリルケースの上面にKeypadを配置。
接続
各コンポーネントの接続は以下の通り。
I2C | XIAO |
SCK | D5 |
SDA | D4 |
I2Cのアドレス
RDA5807FP | 0x10 or 0x11 ライブラリで既定 |
OLED | 0x3C 既定 |
MCP23107 | 0x20 基板のハンダ付け(ブリッジジャンパー)で設定 |
インストール
- コードを、ZIP形式でダウンロード
- ArduinoIDEにおいて、ライブラリマネージャから以下を検索してインストールする
- Adafruit_BusIO
- Adafruit_GFX
- Adafruit_SSD1306
- 追加のライブラリ(文中のリンクより)を、ZIP形式でダウンロード、ライブラリマネージャからインストールする
- RDA5807
- MCP23107
- ArduinoIDEからrda5807_xiao_pad16_oled.inoを開く
- 「検証・コンパイル」に成功したら、一旦、「名前を付けて保存」を行う
若干の解説
・回路図はデータシートを参照のこと。LOUT、ROUTのコンデンサは100-200μF程度を接続すると音質が良くなる。なお、回路図にあるインダクタンス系の部品は無くても動作する。
・stnFreq[]に受信する放送局の周波数を指定する。例えば80.4MHzの場合、8040と指定する。なお、stnName[]はコメントであり、表示には使っていない。
・MCP23107の基板とKeypad間は8本の線で接続する必要がある。MCP23107は電圧レベルを合わせるため、3.3Vで動作させている。
注意事項
・利用の際は、自己責任でお楽しみください。