はじめに
Aliexpressで100円程度で売られているFMラジオキットを買ってみました。 (私が購入したときには95円でした)
感度も高く使えそうですが、流石に安価なだけあって周波数の表示等はなくどの放送局を聞いているのかわかりません。そこで、秋月で安価で購入できる50円マイコンCH32V003を使用したOLED表示付きのマイコンボードAKBONE2024 Rev.0をI2C接続する改造を試みてみました。
RD5807をI2Cで制御することにより、50MHzのアマチュア無線バンドから108MHzまで受信することができるようになりました。
回路図
FMラジオチップのRDA5807FPを使用しています。6番ピンをVCCに接続することにより、チップ単体で動くスタンドアローンモードとして使っているようです。この6番ピンをGNDに落とすことにより、7番ピン(SDA)、8番ピン(SCL)を使ってI2Cモードで動かすことができそうです。
この回路では、イヤホンのコードがアンテナになります。データシートでは、L1(0.1uF)と24pFのコンデンサで並列共振回路を構成し、約100MHzに共振させることにより、FM受信時の感度を向上させるような工夫が見られましたが、この回路では効果はちょっと?です。(気が向いたら測定してみます)
組み立て
販売ページの組立図を見て組立てます。メインチップのRDA5807FPのみSOP16の面付部品ですが、1.27mmピッチでそれほど難易度は高くないので頑張ってはんだ付けしましょう。
動作確認
100均のステレオイヤホン等を接続して聞いてみました。イヤホンコードのアンテナで、神奈川県相模原市内で、5、6局受信することができました。
魔改造
このラジオをマイコン制御に改造します。
FMラジオ側の改造のポイントは以下の2点です。
- RDA5807の6番ピンを浮かし、GND(5番ピン)に接続する。
6番ピンは、10番ピン(VCC)とチップ裏側のパターンで接続するため、実装後のパターンカットは困難です。頑張って6番ピンをパターンから浮かし、GNDに接続する必要があります。 - 7番ピン(SDA)、8番ピン(SCL)からI2Cの信号線を取り出します。CH+、CH-のタクトスイッチのパターンから取り出すのが楽だと思います。
SDA, SCLのプルアップはRDA5807のChip内で行われているようですが、非常に弱いため10kΩ程度でプルアップするのがおすすめです。
取り出した信号線は、基板上にピンヘッダを接着し、GROVE配列としておきました。
これをAKBONE2024 Rev.0のGROVEコネクタに接続します。M5Stack社のGROVEケーブルを使う場合は、黄色がSDA、白がSCLとなっていることに注意してください。
ソフトウェア
試作したソフトウェアはGitHubに格納済みです。
RDA5807のデータシートを参考に、CH32V003funの開発環境で、チャンネル切り替えやボリュームコントロールができるソフトウェアを開発しました。Arduino環境であればRDA5807ライブラリを使用することにより簡単に作成できると思いますが、CH32Vでは、I2CライブラリやRDA5807ライブラリを移植する必要があります。
主要な機能は以下です。
- 周波数選択
AKBONE2024のUP/DOWNボタンで、±方向にサーチによる選局ができます。 - 音量調整
0~15の16段階に音量を設定できます。 - 受信BAND選択
UP/DOWNボタンで、それぞれ76-108MHz(100kHzStep)、50-76MHz(50kHzStep)を選局することができます。50MHzのアマチュア無線バンドを受信することができます。アマチュア無線では、周波数Stepが20KHzの変調方式がNFMですので、かなりの小音量になりますが受信することができました。
##受信感度
手元のSGで簡易測定した結果、FMバンドでは1uV程度、50MHz帯でも2uV程度とかなり高感度です。
おわりに
100円FMラジオと、秋月で40円で入手できるCH32V003を使用することにより、1000円以下で50~108MHzを受信できるラジオを作ることができそうです。単3乾電池2本で使えますので持ち運びにも便利かと思います。