Arduino NanoとRDA5807Mで作るコンパクトFMラジオ
必要な部品と材料
- Arduino Nano R3 × 1
- ElectroPeak 0.96インチ OLEDディスプレイモジュール (64×128) × 1
- RDAマイクロエレクトロニクス RDA5807M FMラジオモジュール × 1
必要な工具と機器
- 3Dプリンター (汎用)
プロジェクト概要
最近、非常に小型のパッケージでFMラジオチューナーとして機能する RDA5807 モジュールを知りました。このモジュールは安価で、I2Cプロトコルを使用して通信するため、ICとのやり取りに必要な配線はわずか2本です。配線が少なくて済みます!
母が毎日の料理中にラジオを聴いていましたが、ラジオが壊れてしまいました。自作のラジオをプレゼントして驚かせたいと思い、このプロジェクトを始めました。
このチュートリアルでは、RDA5807 ICをArduinoとインターフェースする方法を紹介します。見た目を良くするためにケースを設計し、3Dプリントしました。3D設計は初心者なので、シンプルなデザインにしています。派手なことはしません。
さあ、始めましょう!
材料リスト
- Arduino Nano × 1
- RDA5807M FMラジオチューナーIC × 1
- I2C OLEDディスプレイ × 1
- 3Wスピーカー × 1
- PAM8403オーディオアンプモジュール × 1
- 6×6タクトスイッチ × 2
- 100kΩポテンショメータ × 1
- DC電源ソケット × 1
- オプション: 3Dプリンター
ステップ1: 計画
すべてをシンプルかつ整然と保つのが計画です。派手なことはしません。
Arduino Nanoをプロジェクトの頭脳として使用します。モジュールとの通信の難しい部分はすでにライブラリで実装されています。Radioライブラリを必ずインストールしてください。多くの機能を試すことができます。注: このライブラリはSI4703、SI4705、TEA5767でも動作します。
フロントのプッシュボタン1つで「周波数選択」モードに入り、もう1つのボタンで周波数を確定します。ポテンショメータでプリセット周波数をスクロールします(コード内でお住まいの地域に合わせて設定可能)。
OLEDディスプレイには、チューニングされている周波数を表示します。
ラジオモジュールの出力音声信号は非常に弱く、3Wスピーカーを直接駆動することはできません。PAM8403モジュールで音声信号を増幅します。このモジュールにはいくつかのバージョンがありますが、ボリューム調整用ポテンショメータとON/OFFスイッチを備えたものを選びました。
ステップ2: FMラジオモジュールの準備
写真を見るとわかる通り、モジュールは非常に小さいです! さらに、モジュールのパッド間隔はブレッドボードやユニバーサル基板に対応していません。
そこでブレイクアウト基板を作ります。モジュールと同じくらいのサイズのユニバーサル基板を切り出し、両側に少なくとも5つの穴が空くようにします。写真のようにピンヘッダをはんだ付けします。次に、モジュールを基板に置き、モジュールのパッドとヘッダピンの間を細い配線ではんだ付けします。私は部品の切り落としリード線を使用しました。
ステップ3: ケースの製作
3D設計は完全な初心者で、これがこれまでで最大の設計です。ケースはFusion 360で設計し、Creality Ender 3でプリントしました。使用したすべてのSTLファイルを添付しています。
フロントプレートは白く塗装しました(フィラメントが1色しかなかったため)。
アウターボディの穴に「M3ネジインサート」をはんだごてで圧入しました。かなり満足感のある作業でした!
インナーリムをアウターボディの内側に瞬間接着剤で固定します。
また、「バックプレート」にアンプのノブ用の6mm穴とアンテナ用の2mm穴を開ける必要があります。設計時に追加し忘れました。
ステップ4: 回路基板の準備
2枚の回路基板を作ります。1枚はArduinoとFMモジュールを搭載したメイン基板、もう1枚はフロントプレートに取り付けるプッシュボタン用基板です。
各部品をオス/メスのピンヘッダでコネクタ接続にしており、着脱が容易です。この手順は省略しても構いません。
回路図に従って配線してください。
ステップ5: コーディング
コードを添付しています。.inoファイルをダウンロードし、Arduino IDEで開いてください。アップロード前に2点修正が必要です。
- ラジオ局の数と周波数は地域によって異なります。検索すれば局名と周波数がわかります。リストアップしたら、画像のように 'stations[]' 配列に追加します。小数点は省略します。例: 9110 = 91.10 MHz、10110 = 101.10 MHz。また、角括弧内に総局数を指定します。私の場合は12局なので stations[12] となります。
- 総局数から1を引いた値をコードに入力します(画像2枚目参照)。今回は11です。もっと良い方法があることは承知していますが、他の方法ではエラーが多発しました!
修正したらコードをアップロードします!
ステップ6: 組み立て
OLEDディスプレイとスピーカーをホットボンドでフロントプレートに固定します。
3Dプリントしたボタンを所定の位置に置き、タクトスイッチに瞬間接着剤を1滴垂らして、ボタンとスイッチが合うように基板を上から被せます。
ポテンショメータをフロントプレートにネジ止めします。
インナーリムにたっぷり瞬間接着剤を塗り、すべての部品を実装したフロントプレートをリムに貼り付けます。
すべての部品をメイン基板と接続します。ラジオモジュールの音声出力を、バックプレートに取り付けたアンプに接続します。
コネクタ周りにホットボンドを盛って、応力緩和(ストレインリリーフ)とします。
M3ネジでバックプレートを固定します。
最後に、ホットボンドの棒を厚さ2〜3mmの輪切りに4つ切り、底面に貼り付けます。これらがゴム足の役割を果たします。
完成です!
ステップ7: お楽しみください!
5V電源でラジオを起動します。5V電源が手に入らない場合は、7805レギュレータを使って12Vから5Vを作ってください。
最後までお読みいただきありがとうございます。このプロジェクトを気に入っていただけたら幸いです。何か新しい発見があったなら嬉しいです。自分で作ってみた方はぜひ教えてください。YouTubeチャンネルの登録もお願いします。もう一度、ありがとうございました!
コード
- FMRadio_final.ino
GitHub: https://github.com/mathertel/Radio
カスタムパーツとケース
- Face Plate.stl
- Back Plate.stl
- Button.stl
- Inner Rim.stl
- Knob.stl
- Outer Body.stl
回路図
回路図はプロジェクトページを参照してください。
製造プロセス
- Python連携で信頼性向上: Arduino RFID勤怠管理システム
- Arduinoと1Sheeldで作る万能Androidリモコン──IR制御で家電を一括操作
- Arduino UNOで作るLCDアニメーション&ゲーム入門
- Raspberry PiとArduinoで作るWi-Fiインターネットラジオ:世界中の局をストリーミング
- Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
- ESP8266・Arduino・超音波センサーで作るスマートIoTジャー:リアルタイム中身監視
- Arduino UNOで周波数とデューティサイクルを高精度測定
- FirmataとXbox OneコントローラーでArduinoローバーをシームレス操作
- Arduino超音波センサーとProcessingで作るリアルタイム距離測定ソナー
- Bolt IoTとArduino UNOでLED輝度をシームレス制御
- ArduinoとProcessingで作るリアルタイムデジタルコンパス