NRF24L01+ チュートリアル: Arduino間のRF通信

発行者

Arduinoで作られたようなマイクロコントローラ ボードは、実用的で、それ自体が非常に多用途です。 しかし、ビルダーとしての能力が成長し進歩するにつれて、ワイヤレス インターフェイスの機能が欲しくなるかもしれません。

赤外線インターフェースは、BluetoothやWi-Fiと同様に多くの状況で役立ちますが、別の代替手段としてNRF24L01+ モジュールがあります。このモジュールは、Wi-Fiと同じ無免許の2.4 GHz帯域で情報を送受信します。正しく構成されていれば、これらのモジュールのうち2つは、ユーザー側で接続の煩わしさなしにRF情報を送受信します。

Arduinoを使用したRFモジュール

これらの安価なデバイスで面倒なのは、最初に配線してすべてをプログラミングすることです。セットアップ プロセスでは、たとえばBluetoothモジュールで使用する4本のワイヤではなく、7本または8本のワイヤを適切に接続する必要があります。実用的な観点からさらに複雑なのは、一般的なモジュールのピン配列がブレッドボードに正しく適合しないため、それぞれをジャンパーで接続するか、適切なアダプターを見つける必要があることです。この潜在的に面倒な配線設定に踏み切ることに決めたら、ジャンパーをArduino UnoまたはNanoボードに接続します (最初にArduinoピンがリストされ、次にRFモジュールの接続が続きます)。

- 3.3V ==>VCC

- GND==>GND

- 8==>CSN

- 7==>CE

- 13==>SCK

- 11==>MOSI

- 12==>味噌

NRF24L01+ ボードにはオプションの割り込み (IRQ) ピンもありますが、ここでは説明しません。Arduino Mega 2650 などの外部ボードとの接続は可能ですが、異なるピン配置が必要になる場合があります。このテストでは、受信ボードの出力D2に適切な抵抗器付きのLEDも取り付けます。これは視覚的な送信インジケーターとして機能します。

すべてを安全に接続したら (通信相手が必要なため、2つのArduinoボードに)、GitHubから RF42ライブラリ をインストールします。それが完了したら、 送信機と受信機のサンプル コード をダウンロードし、各ボードにコードをインストールします。

NRF24L01オーディオ通信

テストには、Arduino IDEの2つのインスタンスを別々に開くと便利です。 Bluetooth通信。この設定により、両方のコードを同時に表示および変更できます。開いているArduino IDEの [ファイル - 新規] ダイアログではなく、デスクトップ ショートカットまたはファイル フォルダーからArduinoソフトウェアにアクセスすることもできます。 

キャプション:「LLL」信号は受信側のArduinoでは認識されませんが、「L」はシリアル フィードバックを出力し、LEDをオンにします。

すべて接続され、適切にインストールされると、「受信」Arduinoは通常送信ユニットから1秒ごとにシリアル テキストを受信し、送信機は「L」を受信すると応答として点滅します。9600ボーで受信Arduinoのシリアル モニターを開くと、「L」という行に続いて「is L-Light On」という行が1秒ごとに繰り返されます。

ここから、応答を観察できます。この構成に基づいて、次のようなさまざまな制御シナリオを実装できます。

- リモコン車両で前進と後進の反応をトリガーする「F」と「R」

- シミュレートされたアナログ出力の数値信号

- 双方向コミュニケーション

NRF24にコンデンサを追加する

NRF24無線ユニットは電力を非常に効率的に使用しますが、ノイズや電力不足にも敏感です。スムーズに動作させるために、 コンデンサ ユニットのグランドと3.3 V入力間の4.7 ~ 47 µFの範囲です。Arduinoボードとは別の電源を使用することを推奨する人もいますが、その理論はまだテストされておらず、コンデンサを使用すれば十分なようです。

NRF24L01+ は15 mAの範囲の電力を使用し、Unoは3.3 Vで50 mAの供給能力を備えているため、別の電源は不要と思われます。ただし、コンデンサはArduinoからの電力スパイクや不足を均一化するのに役立ちます。

キャプション: アンプとアンテナにより範囲は広がりますが、サイズも大幅に大きくなります。

これらの受信機のパフォーマンスにはいくつかの要因が影響する可能性があります。最も明らかなのは、受信機には小型のオンボードアンテナを備えた形式と、範囲が改善されたバージョン、および外部接続を必要とするパワーアンプを備えたバージョンがあることです。外部アンテナモデルは1000メートルの範囲で送信できると言われていますが、これらのモデルははるかに大きく、高価です (それでも数ドルで入手可能です)。

Arduinoソフトウェアを使用してRF信号を増幅する方法

両方のArduinoコード例のセットアップ関数で参照されている、範囲を改善するためのいくつかのソフトウェア トリックを試すこともできます。電力レベルはradio.setPALevel() によって定義され、RF24_PA_MIN、RF24_PA_LOW、RF24_PA_HIGH、RF24_PA_maxの間で変化します。

1.radio.setDataRate() 関数を使用してデータ レートを設定します。RF24_250KBPSは250 kbpsを意味し、これは利用可能な最も遅い速度であり、最も長いデータ伝送範囲を提供します。RF24_1MBPSは1Mbps、RF24_2MBPSは2Mbpsを意味し、転送速度は速くなりますが、範囲は狭くなります。

2.radio.setChannel() を使用して、無線のチャネルを2.400 ~ 2.524 GHzの間で設定することもできます。その読み取りでは、0〜124の値は2.4GHzにMHz単位のチャネル番号を加えたものに対応します。したがって、radio.setChannel(21)です。したがって、無線は2.421 GHzで通信することになります。速度に関しては少し漠然としていますが、周囲の環境に応じて異なるチャネルを使用すると、パフォーマンスが向上することは間違いありません。通常、このタイプの伝送では2.483.5 GHzが法定上限であるため、必ずこの点に留意してください。

ボードの通信に問題がある場合は、各ワイヤを適切な順序で接続し、ブレッドボードまたははんだ付けですべてを固定していることを確認してください。緩い接続や間違った接続はどのプロジェクトでも問題を引き起こす可能性がありますが、2つの別々のシステムを扱っている場合は、トラブルシューティングがさらに難しくなる可能性があります。

最新ニュース

申し訳ございませんが、フィルター選択では結果が返されませんでした。

We've updated our privacy policy. Please take a moment to review these changes. By clicking I Agree to Arrow Electronics Terms Of Use  and have read and understand the Privacy Policy and Cookie Policy.

Our website places cookies on your device to improve your experience and to improve our site. Read more about the cookies we use and how to disable them here. Cookies and tracking technologies may be used for marketing purposes.
By clicking “Accept”, you are consenting to placement of cookies on your device and to our use of tracking technologies. Click “Read More” below for more information and instructions on how to disable cookies and tracking technologies. While acceptance of cookies and tracking technologies is voluntary, disabling them may result in the website not working properly, and certain advertisements may be less relevant to you.
We respect your privacy. Read our privacy policy here