Arduino TEA5767FMラジオ受信機
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
アプリとオンラインサービス
> |
|
このプロジェクトについて
はじめに <図> <図>
親愛なる友人が戻ってきました!このチュートリアルでは、ブレッドボード上にシンプルな FMラジオ受信機を構築します 。
添付のビデオをご覧になり、数秒間お聴きください。ご覧のとおり、ラジオは正常に機能しており、ラジオから音楽が流れています。この安価なFM送信機を使用して、この周波数でYouTubeの安全なトラックを送信しています。私はNokia5110 LCDディスプレイを使用して、選択した周波数、信号強度、ステレオサウンドを受信している場合はステレオアイコンを表示しています。プロジェクトの頭脳は小型で安価なArduino Nano 。このポテンショメータを使用してスピーカーの音量を制御したり、このポテンショメータを使用して無線周波数を変更したりできます。
これは魅力的なプロジェクトであり、比較的簡単に構築できます。作成方法を見てみましょう。
ステップ1:すべての部品を入手する <図>
このプロジェクトを構築するために必要な部品は次のとおりです。
- Arduino Nano
- FMラジオモジュール
- Nokia 5110 LCD
- 10Kポテンショメータ
- オーディオアンプ
- 3Wスピーカー
- 大型ブレッドボード
- オーディオケーブル
- ジャンパー線
- 3 in1ワイヤー
- FMトランスミッター
- パワーバンク
プロジェクトの総費用は約15ドルです。
ステップ2:Nokia 5110 LCD <図>
Nokia 5110は、Arduinoプロジェクトで私のお気に入りのディスプレイです。
Nokia 5110は、もともと携帯電話の画面として使用することを目的とした基本的なグラフィックLCD画面です。低電力CMOSLCDコントローラー/ドライバーであるPCD8544コントローラーを使用します。このため、ディスプレイの消費電力は非常に優れています。
オンのときは0.4mAしか使用しませんが、バックライトは無効になっています。スリープモード時の使用量は0.06mA未満です。これが、このディスプレイを私のお気に入りにしている理由の1つです。 PCD8544は、シリアルバスインターフェースを介してマイクロコントローラーにインターフェースします。これにより、Arduinoで画面を非常に使いやすくなります。接続する必要があるのは8本のワイヤーだけです。 ArduinoでNokia5110LCDを使用する方法に関する詳細なチュートリアルを用意しました。
このチュートリアルでそのビデオを添付しました。ディスプレイに関する有用な情報を提供するので、注意深く見ることをお勧めします。ディスプレイの費用は約4ドルです。
ここで入手できます。
ステップ3:TEA5767FMラジオモジュール <図> <図>
このプロジェクトは、このFMラジオモジュールを中心に構築されています。
モジュールは TEA5767無線チップを使用します 、これはこちら。チップはI2Cインターフェースを使用しているため、Arduinoで簡単に使用できます。モジュールには、オーディオアンプもあります。残念ながら、これはヘッドホンアンプであり、オーディオ信号が非常に弱いため、スピーカーをモジュールの出力に直接接続することはできません。最初にそれを増幅する必要があります。また、ソフトウェアでモジュールから出る音量を制御する方法がないので、後でポテンショメータを使用します。モジュールには2つのヘッドフォンジャックがあります。1つはアンテナ用で、もう1つは標準のヘッドフォン出力です。モジュールには小さなアンテナが付属していますが、必要に応じて簡単に独自のアンテナを作成できます。
ここで入手できます。
ステップ4:パーツを接続する <図> <図> <図> <図> <図> <図> <図> <図> <図> <図> <図>
この回路図に従って回路を構築しましょう。
まず、すべてのパーツをブレッドボードに配置しましょう。ボリュームを制御するポテンショメータを除いて、すべてのパーツのアースピンをブレッドボードのアースレールに接続し、すべてのパーツのVccピンをブレッドボードのポジティブレールに接続します。それでは、無線モジュールを接続しましょう。 SLCピンはArduinoNanoのアナログピン5に接続され、SDAピンはアナログピン4に接続されます。次に、ポテンショメータの中央のピンをアナログピン0に接続します。このポテンショメータを使用して、周波数を選択します。
次に、ボリュームポテンショメータを接続してボリュームを制御できるようにする必要があります。オーディオケーブルを使用しました。ケーブルの一方の端をモジュールのオーディオ出力に接続しました。次に、もう一方の端を切断して、ケーブル内に4本のワイヤーを見つけました。モジュールはステレオサウンドを出力しますが、今回は1つのオーディオチャンネルのみを使用します。だから、私は2本のワイヤーだけを接続します。 1つはGNDで、もう1つは増幅が必要なオーディオ信号です。オーディオ信号線は、ボリュームポテンショメータの入力ピンに接続されています。ポテンショメータの真ん中のピンは、出てくるオーディオ信号です。
音声信号を増幅するために、LM386アンプチップを使用したこのモジュールを使用します。オーディオ信号はこのピンに送られ、オーディオケーブルのアースピンはこのピンに送られます。今、私たちがしなければならないのは、モジュールに電力を供給することだけです。したがって、このピンをブレッドボードの正のレールに接続し、このピンをブレッドボードの負のレールに接続します。私たちが今しなければならない唯一のことは、このようにモジュールの出力に小さなスピーカーを接続することです。この小さなポテンショメータを使用すると、信号の増幅を制御できます。今、私たちがしなければならないのは、Nokia5110ディスプレイを接続することだけです。 Nokia 5110ディスプレイの使用方法に関する詳細なビデオを見て、接続方法を確認するか、回路図に従ってください。
Nokia 5110LCDディスプレイの接続
- RSTはArduinoのデジタルピン12に送られます
- CEはArduinoのデジタルピン11に行きます
- DCはArduinoのデジタルピン10に接続します
- DINはArduinoのデジタルピン9に移動します
- CLKはArduinoのデジタルピン8に送られます
- VCCはArduino3.3Vに接続します
- LIGHTはArduinoGNDに接続されます(バックライトがオン)
- GNDはArduinoGNDに接続されます
オプションの最後のステップは、このように330μFのコンデンサをブレッドボードに接続して、オーディオ信号のノイズを低減することです。
プロジェクトの電源を入れると、スプラッシュ画面が3秒間表示され、その後、スピーカーから音が聞こえます。このスピーカーとこのオーディオアンプの音質は最高ではありません。アンプを内蔵した別の市販スピーカーを使用すれば、音質は完璧です。見てみな。ですから、モジュールからの出力信号は完璧ですが、使用したアンプとスピーカーは音質を低下させるので、より良い品質のものを探す必要があります。ハードウェアを構築したので、プロジェクトのソフトウェア側を見てみましょう。
ステップ5:プロジェクトのコード <図>
このプロジェクトでは、2つのライブラリを使用します。 Nokia5110グラフライブラリとTEA5767FMチップ用のライブラリを使用しています。
コードはこのように機能します。まず、無線モジュールとディスプレイを初期化し、スプラッシュ画面を3秒間表示します。このスプラッシュ画面はPhotoshopでデザインしました。グラフィックをNokia5110ディスプレイにアップロードする方法を知りたい場合は、添付のビデオチュートリアルをご覧ください。
void setup(){radio.setMonoReception(); radio.setStereoNoiseCancellingOn(); initScreen(); showSplashScreen(); Serial.begin(9600);}
次に、ループ関数で、数ミリ秒ごとに周波数を制御するポテンショメータから値を読み取ります。ポテンショメータからアナログ値を取得し、それを周波数値にマッピングします。アナログ値を読み取るため、この値は一定ではありません。ポテンショメータを回さなくてもわずかに上下します。
frequencyInt =map(val、2、1014、8700、10700); // 87.0 MHz〜107.00MHzの周波数に対するアナログ値floatfrequency =frequencyInt / 100.0f;
したがって、安定した周波数を実現するために、周波数が大幅に変更された場合にのみ、ラジオを別の周波数に調整します。したがって、周波数に大きなシフトがある場合は、無線モジュールをその周波数に調整し、信号強度を取得して画面に印刷し、必要に応じてステレオアイコンを印刷し、最後に選択した周波数を印刷します。
if(frequency-previousFrequency> =0.1f || previousFrequency-frequency> =0.1f){lcd.clrScr(); radio.selectFrequency(周波数); printSignalStrength(); printStereo(); printFrequency(頻度); previousFrequency =頻度; }
これがコードの仕組みです。シンプルですが、問題なく機能します。いつものように、このステップに添付されているプロジェクトのコードを見つけることができます。
これは開発中のプロジェクトであるため、プロジェクトのWebページ(http://educ8s.tv/arduino-fm-radio-project
)でコードの最新バージョンを見つけることができます。 FMRadio.zip
ステップ6:最終的な考え <図> <図>
約30分でわかるように、ブレッドボード上にFMラジオを構築できます。なんてクールなんだ!
このプロジェクトから得られる音質はまだ良くありません。私はこのプロジェクトにもっと取り組み、あらゆる分野でそれを改善するつもりです。このプロジェクトをレトロな3Dプリントのエンクロージャーを備えた完全なラジオに変えたいと思います。まず、このプロジェクトから優れたオーディオ品質を引き出すために、さまざまなオーディオアンプとスピーカーを試してみます。また、ブレッドボードから離して、プロトタイピングボード上に永続的なバージョンを作成します。また、このプロジェクトのエンクロージャーを設計して、ラジオのように見せます。もちろん、プロジェクトのコードにも多くの改善と微調整が必要です。追加したい機能の1つは、音質をさらに向上させる微調整機能です。
ディスプレイのバックライトが無効になっている場合、プロジェクトには約50mAの電流が必要です。このプロジェクトをバッテリー駆動できるように、現在のソフトウェアとハードウェアのトリックをさらに減らすことができます。結果は印象的だと思います。このプロジェクトが私の机の上で完了するのを待ちきれません。このビデオはほんの始まりに過ぎませんでした。
このプロジェクトについてのご意見をお聞かせください。このプロジェクトは面白いと思いますか?また、どのような改善を提案しますか?このプロジェクトを改善するためのあなたの経験からのトリックはありますか?
下のコメントセクションにコメントを投稿してください。面白いと思ったら、ビデオを気に入って友達と共有することを忘れないでください。どうもありがとうございました!
コード
- コードスニペット#1
- コードスニペット#3
コードスニペット#1 プレーンテキスト
void setup(){radio.setMonoReception(); radio.setStereoNoiseCancellingOn(); initScreen(); showSplashScreen(); Serial.begin(9600);}
コードスニペット#3 プレーンテキスト
if(frequency-previousFrequency> =0.1f || previousFrequency-frequency> =0.1f){lcd.clrScr(); radio.selectFrequency(周波数); printSignalStrength(); printStereo(); printFrequency(頻度); previousFrequency =頻度; }
回路図
製造プロセス