工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

FMラジオ

コンポーネントと消耗品

>
SparkFunFMチューナーの基本的なブレイクアウト-Si4703
× 1
SparkFunスピーカー-0.5ワット(8オーム)
小さなラジオプロジェクトに最適なサウンドのスピーカー
× 1
Adafruit Monochrome 0.96 "128x64OLEDグラフィックディスプレイ
非常に優れたコントラストのクールな小さなディスプレイ
× 1
>
Texas InstrumentsLM386-オーディオアンプ-DIP-8
小型のバッテリー駆動オーディオプロジェクト向けの有名なオペアンプ
× 1
Arduino Nano R3
× 1
Adafruit Membrane1x4キーパッド
× 2
Adafruit4チャンネルI2C双方向ロジックレベルコンバーター
使用したことはありませんが、機能するはずです
× 1
Fコネクタ用伸縮アンテナFM
× 1
ケナブルパネルマウントFタイプネジ
× 1

このプロジェクトについて

子供の頃、私はAMラジオを作っていましたが、FMラジオを作ることはできませんでした。複雑すぎました。現在、完全なFMラジオチューナーをチップに搭載できますが、これらのチップは表面実装コンポーネントであり、趣味の人が操作するのは困難です。幸い、Sparkfunは、Silicon Laboratories Si4703 FMラジオチューナーチップ(データシート)のブレイクアウトを作成します。これにより、すべてのピンがブレイクアウトされます。このブレイクアウトの周りに完全なFMラジオを構築し、Arduinoを使用して組み込みの2線式制御インターフェースを介してチューナー機能を制御する方法を紹介します。 Sparkfunは、これを簡単にプログラミングできる完全なライブラリを提供します。

同時に、非常に高いコントラストと非常に低い消費電力を備えた、かっこいい小さなOLEDディスプレイをプロジェクトに追加しました。最後になりましたが、最小限の部品から素晴らしいサウンドのモノラルオーディオアンプを構築する方法を紹介します。完成したラジオは、3本の単三電池で何時間も動作します。

SparkfunFMチューナーベーシックブレイクアウトとI2Cシリアルバス

基本的なブレイクアウトは簡単に操作できます。ブレッドボードでブレイクアウトを使用できるように、最初にオスヘッダーにはんだ付けします。以下のピンレイアウトを参照してください。今のところ、1メートルの細いワイヤーのはんだはANTへのアンテナとして機能します。

<図> <図>
  • LOUTとROUTは、アンプに接続する左右の出力チャンネルです。

(独自のアンプを作成したくない場合は、代わりに評価ボードを購入できます。これは、ヘッドフォンで直接使用できます)。

  • 供給電圧Vccは+3.3ボルトです。
  • GNDは接地または0ボルトです。

Si4703は、シリアル通信を介してArduinoからチューナーを制御できるシリアルバスである2線式インターフェースを備えています。より正確には、バスはI2C(Inter-integrated Circuit;発音はI-squared-CまたはI-two-C)と呼ばれ、2本の双方向回線のみを使用します。

  • シリアルデータライン(SDA)および
  • シリアルクロックライン(SCL)。
  • さらに、リセットライン(RST)があります。

Si4703では、SDAはSDIOと呼ばれ、SCLはSCLKと呼ばれます。すべてのArduinoにはI2Cが組み込まれています。 I2Cバスについて詳しく知りたい場合は、TomIgoeとJeffFeddersenがすばらしいビデオを作成しました。 I2Cバスでは、Arduinoがマスターとして機能し、Si4703とOLEDディスプレイの両方がスレーブとして機能します。

I2Cバス電圧とArduinoの選択

Si4703とI2CバスのOLEDディスプレイに使用される電圧は3.3ボルトです。そのため、Sparkfunはフックアップガイドで3.3ボルトのArduinoを使用するようにアドバイスしています。これは、Arduino Pro Miniを使用することを意味します。これは、USBコネクタがなく、FTDIブレークアウトでプログラムする必要があるため、プログラムが少し難しくなります。しかし、別の問題があります。ArduinoProMiniは8MHzで動作し、ArduinoUnoまたはNanoの半分の速度です。私のテストでは、これは遅すぎてOLEDディスプレイを駆動できないことがわかりました。本当にディスプレイを維持したかったので、I2Cバスで5ボルトの信号レベルを持つArduino Nano(16 MHz)を使用し、3.3ボルトのバス信号に接続するために双方向I2Cロジックレベルコンバーター(I2Cシフター)を使用することにしましたディスプレイとラジオチップの。プロジェクトで使用した2つの信号を備えたI2Cシフターがいくつかありました。 SDA、SCL、RSTの合計3つの信号をレベルシフトする必要があります。 2つのI2Cシフターを使用する必要がありました。 (上記の説明で、ケーブルを節約するのに役立つ4つの信号を備えたI2Cシフターにリンクしました)。

NanoはUnoとほとんど同じですが、フットプリントがはるかに小さくなっています。必要に応じて、代わりにUnoを使用できます。私は最初のテストのためにそれをしました。どちらにもUSBコネクタがあり、ArduinoIDEで簡単に使用できます。

回路図Arduinoのラジオとディスプレイへの接続

次に、Nano周辺の配線とI2Cバス接続の詳細を見てみましょう。 (ドットがない場合は、ワイヤーが交差するだけです。)

<図>

ご覧のとおり、このプロジェクトは3本の単3電池(4.5ボルト)を搭載しています。バッテリーは、電圧レギュレーターをバイパスして、ArduinoNanoの5ボルトピンに直接接続されています。このように、Nanoは3本のAA電池から楽しく動作します。 警告! NanoをUSB経由でコンピューターに接続する前に、必ずバッテリーを取り外してください。 そうしないと、コンピューターからの5ボルトがバッテリーで短絡します。最初のテスト段階では、バッテリーなしでUSB電源から回路を実行します。安全にプレイしたい場合は、単三電池6本(9ボルト)を使用し、プラス極をNanoのVINピン(5ボルトピンではなく)に接続します 。そうすれば、USBケーブルを接続すると、Nanoの電源管理によってバッテリーが自動的にオフになります。 (代わりに9ボルトブロックバッテリーを使用できますが、数時間しか持続しない場合があります)。

Arduino SDA(A4)とSCL(A5)は、I2Cシフターの5ボルト側に接続されています。また、RST信号としてD2を使用しています。 I2Cシフターの3.3ボルト側で、Si4703のSDIO、SCLK、およびRSTに接続します。 OLEDディスプレイの場合、SDAとSCLに接続するだけで十分です。 (私はbanggood.comで購入しました。黄色(一番上の行)と青の2色で、RSTピンがなかったためです)。

すべてのコンポーネントをNanoの3.3ボルト出力とアースに接続します。 I2Cシフターにはさらに高電圧側に5ボルトが必要です。

IOピンD5〜D12は2つのキーパッドに接続されています。ボタンを押すと、入力がアースに接続されます。

低電圧オーディオアンプLM386

LM386チップを使用してモノラルアンプを構築しました。 LM386は70年代から存在しています。これは、低電圧の民生用アプリケーション(データシート)で使用するために設計されたパワーアンプです。外部部品数を低く抑えるために、ゲインは内部で20に設定されていますが、ピン1と8の間に外部抵抗とコンデンサを追加すると、ゲインは20から200までの任意の値に増加します。最低ゲインの20で動作します。これは、8オームのスピーカーを使用する場合には十分な高さです。

<図>

プロジェクトのオーディオアンプ部分の回路図を次に示します。

<図>

最初にSi4703を見てみましょう。左側には、ArduinoへのI2C信号接続が示されています。オーディオ出力チャンネルは次のように接続します。抵抗R4をLOUTに接続し、R5をROUTに接続します。次に、2つの信号が結合されてMONO信号になります。ブレイクアウトボードの出力にはコンデンサがあるので、追加する必要はありません。 R2とR3は、増幅器への入力信号レベルを下げるための分圧器を定義します。もちろん、R2とR3をポテンショメータに置き換えて、音量を調整するために使用することもできます。しかし、私たちは音量をデジタルで制御したいと思っています。 Si4703の出力レベルは、I2Cを介して1から15まで段階的に上げることができます。R2/ R3を使用すると、さまざまな抵抗を試して、これをアンプに合わせることができます。たとえば、R3を増やすと、音量が上がります。

回路はデータシートから直接取得されます。 C2は少なくとも220µFである必要があります。値を小さくすると、低音のレスポンスが低下します。低音をブーストしたい場合は、データシートをご覧ください。ブレッドボード上に回路を構築し、コンポーネントの追加/削除を試してください。C3はチップの近くに配置する必要があります。 C3とC1はオプションです。

LM386プロジェクトについてのビデオがYouTubeにたくさんあり、多くの人が悪い音について不平を言っています。それらのほとんどはおそらく適切な地面のレイアウトを欠いています。回路図を見ると、入力グラウンドを出力グラウンドから分離した方法がわかります。これは非常に重要です。それらは、チップの接地ピンであるピン4で合流します。これについて詳しく知りたい場合は、JohnAudioTechのこのビデオをご覧ください(完全なLM386プロジェクトについてはこのビデオをご覧ください)。

LM386N-1は最低4ボルトを必要とし、数百mワットを供給します。私はこれを3本のAA電池(4.5ボルト)で実行し、1から10の間で音量を変えることができ、それは本当にいい音です。ただし、このような低い電源電圧の場合、8オーム(4オームではない)スピーカーを使用することが非常に重要です。音量を15に上げると、歪んで聞こえ始めます。ラジオを大音量で再生したい場合は、供給電圧を9ボルトに上げてください。

プロトタイピング

最初にプロジェクト全体を2つのブレッドボードで構築することを強くお勧めします。 Arduino、I2Cシフター、OLEDディスプレイを一方のブレッドボードにまとめ、Si4703ブレークアウトとオーディオアンプをもう一方のブレッドボードに近づけて、音響歪みを最小限に抑えます。私の最初のプロトタイプでは、オーディオ部分への長い信号ケーブルを備えたArduinoの近くにSi4703があり(写真を参照)、これにより歪みが発生しました。

<図>

ディスプレイと無線チップに電力を供給するArduinoからの安定化された3.3ボルト出力でUSBからArduinoに電力を供給します。バッテリーからLM386に電力を供給します(4.5〜9ボルト)。

プログラムコード

次のライブラリを含める必要があります:

  #include  #include  #include  #include  #include   

ライブラリをインストールする方法がわからない場合は、次のガイドを参照してください。 Sparkfunライブラリはここにあり、細部を気にすることなくSi4703と通信するための高レベルの関数を提供します。チュートリアル付きのAdafruitディスプレイライブラリはここにあります。

次に、いくつかの定義を行う必要があります:

  //ラジオの入力ボタン#definevolDown 9 #define volUp 10 #define channelDown 11 #define channelUp 12 // Si4703ラジオチップ#defineresetPin 2 #define SDIO A4 #define SCLK A5 Si4703_Breakout radio(resetPin、 SDIO、SCLK); #define SI4703Address 0x10 // Si4703I2Cアドレス。  

#defineを使用すると、ソースコードを読みやすくすることができます。 volDownがピン9を参照することを一度だけ定義した後、D9を意味するたびにvolDownと記述します。

次に、セットアップセクションを見てみましょう:

  //変数定義intチャネル; intボリューム; void setup(){//入力に内部プルアップ抵抗を設定pinMode(volDown、INPUT_PULLUP); pinMode(volUp、INPUT_PULLUP); pinMode(channelUp、INPUT_PULLUP); pinMode(channelDown、INPUT_PULLUP); //無線を初期化しますradio.powerOn();チャネル=882; radio.setChannel(channel);ボリューム=4; radio.setVolume(volume); }  

ピン9-12は入力ピンとして定義されます。パラメータINPUT_PULLUPは、内部プルアップ抵抗(ATmegaチップ内)を+ 5Vから入力ピンに接続します。その結果、ボタンを押さない限り、ピンの信号レベルはHIGHになります(押されたボタン=LOW)。

Sparkfunライブラリを使用すると、主な関数powerOn()、setChannel()、およびsetVolume()を使用してI2C経由で無線を簡単に制御できます。

メインループは、押されるボタンをリッスンし、それに応じてアクションを実行します。

  void loop(){//音量を下げるif(digitalRead(volDown)==LOW){if(volume> 0)volume--; radio.setVolume(volume); UpdateDisplay(); delay(100); } //音量を上げるif(digitalRead(volUp)==LOW){if(volume <15)volume ++; radio.setVolume(volume); UpdateDisplay(); delay(100); } //チャネルダウンif(digitalRead(channelDown)==LOW){channel =radio.seekDown(); UpdateDisplay(); delay(100); } //チャネルアップif(digitalRead(channelUp)==LOW){channel =radio.seekUp(); UpdateDisplay(); delay(100); }}  

以下の完全なソースコードをご覧ください。プリセットステーション(お気に入りのステーションを配置できる場所)用の4つのボタンと、使用可能なほとんどすべてのRAMを消費するOLEDディスプレイの更新に必要なすべてのコードが含まれています。 SSD1306ライブラリについて知りたい場合は、優れたAdafruitチュートリアルを参照してください。ライブラリは、ソフトウェアを介してディスプレイの画面サイズを判別できないことに注意してください。 Adafruit_SSD1306.hをインストールした後で指定する必要があります。ライブラリファイルを開き、コメントの説明を読み、それに応じてファイルを編集します。

ソースコードには、AVRチップ内の内部1.1ボルト基準と比較することによってバッテリーレベルを測定するための「高度な」機能が1つあります。バッテリーで動作しているため、バッテリー電圧を測定するための一定の5ボルトの基準電圧はありません。詳細については、次の記事を参照してください:Secret ArduinoVoltmeterとGammonフォーラム。

ブレッドボードのプロトタイプから完成したラジオまで

ここまで来たら、2つのブレッドボードに完全に機能するプロトタイプがあります。回路を2つのパフォーマンスボードに転送し、ラジオ全体を素敵なプロジェクトボックスに入れましょう。これまでにこれを行ったことがない場合は、恐れずに試してみてください。あなたが本当に間違ってできることは何もありません、そしてあなたはあなたが進むにつれて必要なスキルを学びます。 AdafruitのCollinが、ブレッドボードとパフォーマンスボードとパフォーマンスボードのプロトタイピングという2つのすばらしい紹介ビデオを作成しました。

NanoをI2Cシフター(2つのシフターを使用する必要がありました。上記を参照)と一緒に1つのパフォーマンスボードに配置することにしました:

<図> <図>

このプロトタイプのパフォーマンスボードを作成するために、私はチュートリアルに従いました。このチュートリアルでは、詳細に学習することをお勧めします。プリント回路基板を使用せずにプロトタイプを作成する方法。特に重要なのはステップ3です:配線計画を立ててください!計画は最も重要なステップであり、失敗と成功の違いです。さらにいくつかのヒント:写真にあるように、太すぎて操作が難しい黒の22AWGワイヤを使用しました。代わりに、さまざまな色の細い「ワイヤーラッピングワイヤー」(30 AWG)を入手してください。そして、より大きなパフォーマンスボードを使用してください!ピンヘッダーを作成し、デュポンジャンパー線を使用してさまざまなパーツを接続しました。

Si4703とオーディオアンプを一緒に2番目のパフォーマンスボードに配置します。これは、LM386アンプの小さなチュートリアルで、インスピレーションとして使用できます。回路図からVeroboardまで。ただし、LM386にはICソケットを使用することをお勧めします。あるいは、JohnAudioTechは、信号グラウンドから分離された電源グラウンドを備えた、優れたレイアウトを含む完全なLM386アンププロジェクト用の優れたビデオを作成しました。

次に、ラジオ用の素敵なプロジェクトエンクロージャが必要です。繰り返しになりますが、コリンはこのビデオでそれを行う方法を示しています。ドリルする場所をマークするためのマスキングテープのアイデアが特に気に入りました。べたつかないペインターのテープを購入しました。マスキングテープとドリルとは別に、ホットグルーガンを使用してください。スピーカー、パフォーマンスボード、バッテリーパックなどをエンクロージャーに接着し、パーツをデュポンジャンパー線で接続するだけです。最終的な製品は次のようになります:

<図>

ご覧のとおり、私は楽観的すぎて、かなり小さなプロジェクトボックスを購入しました。フロントパネルのディスプレイ用に正方形の開口部を作るために、内側からスタンレーブレードでカットしました(外側の醜いマークを避けるため)。あまりエレガントではありませんが、問題なく動作しました。次に、ディスプレイをホットグルーで開口部に接着しました。フロントパネルにスピーカーのサイズをマークし、サウンド用に3 mmの穴をたくさん開け、スピーカーを後ろから接着しました。

写真では、まだアンテナ線を見ることができます。次に、パネルマウントのF型コネクタと伸縮式FMアンテナを購入しました。アンテナの長さはわずか50cmですが、受信状態は非常に良く、小さなスピーカーの音は驚くほど良いです。でも最も驚くべきことは、小さなラジオを何日も聴いていても、まだ電池を交換していないという事実です。

その他のラジオプロジェクト

グレートスコットのビデオを見たとき、私は最初にこのプロジェクトを行うように促されました。グレートスコットは、後のビデオで彼のラジオ用の素敵な木製のプロジェクトボックスも作成しました。ただし、ジョン・オーエンのSi4703 Pocket FMラジオは、Sparkfunブレークアウトを使用しているため、彼のプロジェクトの説明をよく見る必要があります。私は彼のソースコードをモノラル機能とバッテリー電圧の測定に使用しました。

コード

FMラジオ
ArduinoNanoのソースコードを含むGithubリポジトリhttps://github.com/Notthemarsian/FM-radio

回路図

フリッティングダイアグラムFMラジオ
オリジナルのFritzingファイルと写真の両方/PDFhttps://github.com/Notthemarsian/FM-radio/tree/master/Fritzing%20diagrams

製造プロセス

  1. クラスBオーディオアンプ
  2. 555ヒステリシス発振器
  3. 無線回路
  4. ラジオの原理
  5. 無線
  6. 地上から地上への無線伝搬
  7. UnifiedWater v1
  8. Pi-Arduinoインターネットラジオ
  9. ArduinoベースのシャワーキャビンFMラジオ
  10. モバイル投票ボックス
  11. 原子ベースの無線通信