私たちは5Gおよび5G対応デバイスの時代に生きています。ただし、トランシーバーシステムやRF通信システムなどの古いテクノロジーは、リモート、短距離、安価、低コストの通信が必要なシナリオでは依然として最優先事項です。たとえば、建築会社や重量物の建設会社がある場合、作業員は協調作業のために互いに通信する必要があります。トランシーバーの助けを借りて、「PTT」ボタンを押すだけでお互いにコミュニケーションを取り、短いマッサージや指示を広め、他の作業者に音声を送信して、指示を聞いて従うことができます。別のアプリケーションは、スマートヘルメットにある可能性があります長いドライブ中にライダーのパック間で通信するために、ここで提案されているモデルは、一度に6人の間で通信できます。他のタイプの短距離ワイヤレスオーディオ送信プロジェクトを確認したい場合は、リンクを使用してIRベースのワイヤレスオーディオ送信機およびLi-Fiオーディオ送信機プロジェクトにアクセスしてください。
nRF24L01RFモジュールを使用したトランシーバー
このプロジェクトの主な成分であるのnRF24L01 RFモジュールとArduinoの宇野脳またはプロセッサです。サーボモーターをリモートで制御することにより、Nrf24L01をArduinoとインターフェースする方法をすでに学びました。このプロジェクトでは、デジタル通信媒体に比べていくつかの利点があるため、NRF24L01RFモジュールが選択されています。それは持っている非常に高い周波数のISMバンド2.4GHz帯をし、データ転送速度は最大250kbps、1Mbpsの、2 Mbpsのことができます。 1Mhz間隔の間に125の可能なチャネルがあるため、モジュールは125の異なるチャネルを使用でき、125の独立して動作するモデムのネットワークを1か所に置くことができます。
最も重要なことは、NRF24L01信号は、警察のトランシーバーや鉄道のトランシーバーなどの他のトランシーバーシステムとオーバーラップしたり、クロスインターフェイスしたりせず、他のトランシーバーを妨害しないことです。単一のnrf24l01モジュールは、受信状態にあるときに、他の6つのnrf24l01モジュールと通信できます。また、それは追加の利点である低電力消費モジュールです。広く利用可能で一般的に使用されているNRF24L01モジュールには2つのタイプがあります。1つはNRF24L01 +で、もう1つはアンテナ内蔵のNRF24L01 + PA + LNA(以下に表示)です。
nRF24L01 +は、オンボードアンテナとわずか100mの範囲を有します。屋内での使用にのみ適しており、屋外の長距離通信には適していません。さらに、送信機と受信機の間に壁があると、信号の伝送が非常に悪くなります。 外部アンテナとのnRF24L01 + PA + LNAを有する PA、送信前にブースト信号の電力を制御します。 LNAは低ノイズアンプの略です。明らかに、ノイズを除去し、アンテナから受信した信号の非常に弱くて不確実な低レベルをブーストします。有用なレベルの信号を作成するのに役立ち、 2dBの外部アンテナを備えており、1000メートルのオンエア範囲を送信でき ます。 そのため、屋外のトランシーバー通信プロジェクトに最適です。
Arduinoベースのトランシーバーに必要なコンポーネント
- NRF24L01 + PA + LNA、外部2DBアンテナ付き(2個)
- ArduinoUNOまたはArduinoの任意のバージョン
- オーディオアンプ(2本)
- マイク回路:自分で作るか(後で説明します)、サウンドセンサーモジュールを購入することができます。
- DC-DCステップアップブースターモジュール(2個)
- 3.3VAMS1117電圧レギュレータモジュール
- 電源インジケータLED(2個)
- 470オームの抵抗(2個)
- 4インチスピーカー(2個)
- 押しボタン(PTTボタン用)
- PTTボタン作成用104PF(2個)
- NRF24L01用100NFコンデンサ(2個)
- PTTボタンの抵抗1k(2個)
- リチウムイオン電池2セット
- リチウムイオンバッテリー充電およびバッテリー保護モジュール(2個)
- ジャンパーワイヤー、オスヘッダーピン、点線ベロボード
Arduinoトランシーバー回路図
Arduinoトランシーバーの完全な回路図を下の画像に示します。回路図は、PTTボタン、マイク回路、ステレオオーディオ出力を含むすべての接続を示しています。
重要: NRF24L01モジュールの電圧入力範囲は1.9vから最大3.6ボルトであり、電圧と電流の安定性のために、+ VCCと-GNDに100nfのコンデンサを使用する必要がありますが、nrf24l01モジュールの他のピンは5ボルトの信号に耐えることができますレベル。
ステップ1:自家製のカスタムPCBとArduinoAtmega328pボードの作成から始めました。私はICAtmega328pをプログラマーに置き、フラッシュしてからコードをアップロードしました。次に、(PB6、PB7)ピン9および10のAtmega328pICに16MHzクリスタルを追加しました。カスタムメイドのPCBと、プログラムされたICを備えた組み立て済みボードの写真を以下に示します。
ステップ2:回路図に示すようにNRF24L01モジュールを次の順序で接続しました。CEからデジタルピン番号7、CSNからピン番号8、SCKからデジタルピン13、MOSIからデジタルピン11、MISOからデジタルピン12、IRQからデジタルピン2。
電源の場合、最初に電圧を5ボルトから3.3ボルトに下げて、電流の安定性を高める必要があります。また、nrf24l01モジュールのVCCとグランドに100nFのコンデンサを配置する必要があります。そこで、3.3ボルトの電圧レギュレーターであるAMS1117を使用し ました。このモジュールは、プロジェクトのサイズを縮小し、コンパクトにします。
この電圧レギュレータボードを自分で作成したい場合は、3.3ボルトのレギュレータICのみを購入でき、RFモジュールは敏感なデバイスであるため、キャップ、入力と出力の抵抗を追加することで作成できます。または、ブレッドボード電源プロジェクトで行ったように、LM317可変電圧レギュレータを使用して3.3V安定化回路を構築することもできます。
ステップ3:回路図に示すように、サウンドセンサーを購入するか、簡単なマイク回路を作成できます。2n3904NPNトランジスタの1つのトランジスタのみで構成されています。下の画像は、Veroボード上に構築された自家製のマイク回路を示しています。詳細については、この単純なオーディオプリアンプ回路を確認することもできます。
理解を深めるために、以下に示すように、コンポーネント値を使用して接続全体を別の表現で表現しました。
ステップ4:マイクロシステムのデジタルピン番号9と10からオーディオアンプに接続するために、デフォルトでArduinoオーディオ出力が非常に低いため(通常はヘッドフォンだけを使用してのみ音を聞くことができる)、PAM8403ステレオオーディオアンプを使用しました、スピーカーではないので、増幅ステージが必要です)。このモジュールは2つのラップトップスピーカーを簡単に駆動でき、非常に低コストで入手できます。また、SMDパッケージには非常に強力なオーディオアンプが付属しており、必要なスペースはごくわずかです。PAM8403オーディオアンプモジュールを以下に示します。
接続は非常に簡単で、オーディオアンプに電力を供給するために3.7Vから5Vの電源が必要です。回路図に示すように、Arduinoピン9および10からの左チャネルおよび右チャネルのオーディオ入力とグラウンドピンを、このアンプモジュールの入力として指定する必要があります。私の場合、4インチ8オームのスピーカーを1つ使用し、右チャンネル出力のみを使用しました。必要に応じて、このモジュールで2つのスピーカーを使用できます。
ステップ5:次に、簡単な押しボタンを使用してPTTスイッチを作成しました。スイッチを押したときのスイッチのバウンスや信号の不安定さを防ぐために、104PFまたは0.1ufのコンデンサを追加しました。中断されたピンがコーディングに割り当てられるため、ピン4はArduinoデジタルピンD3に直接接続されます。
オーディオ信号またはDATAパケットを送信するときのNRF24L01 + PA + LNAは、より多くの電力を消費するため、より多くの電流を消費します。急にPTTボタンを押すと消費電力が増えます。この急激に増加する負荷を処理するには、NRF24L01 + PA + LNAモジュールの伝送安定性のために+ vccとグラウンドに100nFのコンデンサを使用する必要があります。
スイッチが押されると、ArduinoボードはピンD3でArduino割り込みを受け取ります。プログラムでは、Arduinoのデジタルピン3が常に入力電圧をチェックしていることを宣言します。入力電圧が低い場合はトランシーバーを受信モードに保ち、デジタルピン番号3が高い場合はトランシーバーを送信モードに切り替えて、マイクロコントローラーを介してマイクロフォンプロセスによってピックアップされた音声信号を送信し、 NRF24L01 + PA + LNAと外部アンテナ。
ステップ6:電源には、このリチウムイオン電池を選択しました。Arduino IC Atmega328p、NRF24L01 + PA + LNA、オーディオアンプ、PTTボタン、マイク回路などのすべてのコンポーネントに電力を供給するために、以下に示すように、このプロジェクトでは2セットのリチウムイオンバッテリーを使用しました。
優れたセルの電圧レベルは3.8v〜4.2ボルトで、充電電圧は4v〜4.2ボルトのみです。リチウム電池の詳細については、リンク先の記事をご覧ください。これらのバッテリーは、携帯型電子機器や電気自動車で非常に広く使用されています。ただし、リチウムイオン電池セルは他の電池ほど堅牢ではないため、過充電や過放電からの保護が必要です。つまり、充電/放電の電流と電圧を安全な範囲内に維持する必要があります。したがって、私は最もプロペラのリチウムイオン電池充電モジュールであるTP4056を使用しました。以前、このモジュールをポータブルパワーバンクの構築に使用しました。このボードの詳細については、このモジュールを確認してください。
ステップ7: Arduino atmega328p、オーディオアンプ、マイク回路、PTTボタンはすべて5ボルトを必要とするため 、2アンペアのDC / DCステップアップブースター モジュールを使用しましたが、バッテリーは3.7V〜4.2Vしか供給できないため、ブーストコンバーターが必要です1アンペア以上の安定した電力出力で5Vに到達します。
回路を構築したら、小さなエンクロージャーに組み立てることができます。下の画像に示すように、プラスチックの箱を使用して回路を配置しました
トランシーバーArduinoコード
Arduinoトランシーバーの完全なプログラムはこのページの下部にあります。このセクションでは、プログラムがどのように機能するかについて説明しましょう。そこに着く前に、以下にリストされているいくつかのライブラリを含める必要があります。
- nRF24ライブラリ
- nRF24オーディオライブラリ
- ManiaxbugRF24ライブラリ
以下に示すように、ラジオとオーディオライブラリのヘッダーを含めることからプログラミングを開始します。
#include
ピン7と8でRF無線を初期化し、音声無線番号を0に設定します。また、ピン3でpptボタンを初期化します。
RF24ラジオ(7,8); //ピン7(CE)8(CS)RF24Audio rfAudio(radio、0);を使用して無線を設定します。//ラジオを使用してオーディオを設定し、ラジオ番号0に設定しますint talkButton = 3;
セットアップ機能内で、デバッグのために115200ボーレートでシリアルモニターを開始します。次に、ピン3に接続するpptボタンを割り込みピンとして初期化します。
void setup(){Serial.begin(115200); printf_begin(); radio.begin(); radio.printDetails(); rfAudio.begin(); pinMode(talkButton、INPUT); //割り込みを設定してボタントークをチェックしますボタンを押しますattachInterrupt(digitalPinToInterrupt(talkButton)、talk、CHANGE); //各モジュールが受信するデフォルトの状態を設定しますrfAudio.receive(); }
次に、割り込みに応答して呼び出されるtalk()という関数があります。ボタンを押し続けると、プログラムはボタンの状態をチェックし、送信モードに入り、音声を送信します。ボタンを離すと受信モードになります。
void talk(){if(digitalRead(talkButton))rfAudio.transmit(); それ以外の場合、rfAudio.receive(); } void loop(){}
このプロジェクトの完全な動作は、以下にリンクされているビデオで見つけることができます。トランシーバーは、動作中にノイズを生成します。これは、nRF24L01モジュールの搬送周波数からのノイズです。優れたサウンドセンサーまたはマイクモジュールを使用することで、これを減らすことができます。このプロジェクトについて質問がある場合は、下のコメントセクションに残してください。また、フォーラムを使用して、他の技術的な質問に対する迅速な回答を得ることができます。