- RFM69HCWRFモジュール
- RFM69HCW
- RFM69モジュールのピン配列と説明
- カスタム開発ボードの準備
ステップ3: PCBを準備します。私はこの自家製PCBチュートリアルに従っています。銅板に足跡を印刷し、エッチング液に落としました
ステップ4:両方のボードの手順に従い、モジュールをフットプリントにはんだ付けします。両方のモジュールをはんだ付けした後、以下のようになります
RFM69HCWRFモジュールのピン配列を次の図に示します。
- 必要な材料
- ハードウェア接続
- サンプルスケッチの実行
- サンプルスケッチの作業
プロジェクトにワイヤレス機能を提供する場合、433Mhz ASKハイブリッド送信機と受信機は、低価格で使いやすいライブラリとコミュニティサポートにより、エンジニア、開発者、愛好家の間で一般的な選択肢です。また、この433MHz RFモジュールを使用して、RF制御のホームオートメーションやワイヤレスドアベルなどのいくつかのプロジェクトを構築しました。しかし、多くの場合、ASKハイブリッド送信機と受信機では不十分であり、範囲が狭く、一方向の通信であるため、多くのアプリケーションには適していません。
この絶えず発生して問題を解決するために、開発者のHopeRFが呼ばれるクールな新しいRFモジュール考案RFM69HCWを。このチュートリアルでは、RFM69HCWRFモジュールとその利点について学習します。まず、RFM69HCW用の自家製PCBを作成し、次にRFM69HCWをArduinoとインターフェイスさせて動作を確認し、選択したプロジェクトで使用できるようにします。それでは、始めましょう。
RFM69HCWRFモジュール
RFM69HCWは、以前のプロジェクトで使用したnRF24L01 RFモジュールと同様に、ライセンスのないISM(産業、科学、医学)帯域で動作する安価で使いやすい無線モジュールです。2つのモジュール間の通信に使用することも、メッシュネットワークとして構成して数百のモジュール間で通信することもできるため、ホームオートメーションやその他のデータ収集プロジェクトで使用されるセンサー用の安価な短距離ワイヤレスネットワークを構築するのに最適です。
RFM69HCWの機能:
- +20 dBm-100mWの出力能力
- 高感度:1.2kbpsで-120dBmまで
- 低電流:Rx = 16 mA、100nAレジスタ保持
- プログラム可能な注ぎ口:1dBステップで-18〜 + 20 dBm
- モジュールの電圧範囲にわたって一定のRF性能
- FSK、GFSK、MSK、GMSKおよびOOK変調
- クロックリカバリを実行する内蔵ビットシンクロナイザー
- 115 dB +ダイナミックレンジRSSI
- 超高速AFCによる自動RFセンス
- CRC-16、AES-128、66バイトFIFO内蔵温度センサーを備えたパケットエンジン
- 高いリンク予算
- 非常に低コスト
RFM69HCW
周波数
RFM69HCWは、低電力、短距離デバイス用のライセンスのない無線周波数のセットであるISM(Industry、Scientific and Medical)帯域で動作するように考案されています。異なる周波数は異なる領域で合法であるため、モジュールには多くの異なるバージョン315、433、868、および915MHzがあります。すべての主要なRF通信パラメータはプログラム可能であり、それらのほとんどは動的に設定できます。また、RFM69HCWは、プログラム可能な狭帯域および広帯域通信モードの独自の利点を提供します。
注:比較的低電力で短距離であるため、小さなプロジェクトでこのモジュールを実装することは問題になりませんが、それから製品を作ることを考えている場合は、正しい周波数を使用していることを確認してくださいあなたの場所。
範囲
範囲をよりよく理解するには、RFリンクバジェットと呼ばれる非常に複雑なトピックに対処する必要があります。それで、このリンク予算は何ですか、そしてなぜそれがそれほど重要なのですか?リンク予算は他のすべての予算と同じで、最初に持っていて、予算が使い果たされた場合に時間をかけて費やすもので、それ以上使うことはできません。
リンクバジェットは、送信者と受信者の間のリンクまたは接続にも関係します。これは、送信者の送信電力と受信者の感度によって満たされ、デシベルまたはdBで計算されます。これも周波数です。依存。リンクバジェットは、送信者と受信者の間のあらゆる種類の障害物とノイズによって差し引かれます。リンクバジェットが使い果たされると、距離ケーブルの壁の木の建物のように、受信機は出力でわずかなノイズを生成するだけで、使用可能な信号は得られません。 RFM69HCWのデータシートによると、それは持っている140デシベルのリンクバジェットをASKハイブリッドトランスミッタの105デシベルに比べしかし何この手段を行うことは、これは重要な違いですか?幸いなことに、Radio Link Budget Calculatorsはオンラインなので、トピックをよりよく理解するためにいくつかの計算を行いましょう。まず、送信者と受信者の間に見通し内接続があり、RFM69HCWの予算が140 dBであることがわかっているので、すべてが完璧であると仮定しましょう。通信できる最大の理論上の距離を確認し、すべてをゼロに設定し、距離を設定します。 500KMまで、周波数は433MHzまで、水平受信電力は139.2dBmです。
ここで、すべてをゼロに設定し、距離を9KMに設定します。周波数を433MHzに設定すると、水平方向の受信電力は104.3dBmになります。
したがって、上記の比較から、RFM69モジュールがASKハイブリッド送信機および受信機モジュールよりもはるかに優れていることに私たちは皆同意できると思います。
アンテナ
注意! モジュールにアンテナを取り付けることは必須です。アンテナがないと、モジュール自体の反射電力によってモジュールが損傷する可能性があるためです。
アンテナの作成は、思ったほど難しくはありません。最も単純なアンテナは、一本鎖22SWGワイヤだけで作成できます。周波数の波長は、式 v / f で計算できます。ここで、 v は伝送速度、 f は(平均)伝送周波数です。空中では、 v は光速である c に等しく、299.792.458 m / sです。したがって、433 MHz帯域の波長は、299.792.458 / 433.000.000 = 34,54cmです。この半分は17,27cm、4分の1は8,63cmです。
433 MHz帯域の場合、波長は299.792.458 / 433.000.000 = 69,24cmです。この半分は34,62cmで、4分の1は17,31cmです。したがって、上記の式から、アンテナ線の長さを計算するプロセスを見ることができます。
電力要件
RFM69HCWの動作電圧は1.8V〜3.6Vで、送信時に最大130mAの電流を引き出すことができます。下の表では、さまざまな条件でのモジュールの消費電力を明確に確認できます。
警告:選択したArduinoが5Vロジックレベルを使用して周辺機器と通信し、モジュールをArduinoに直接接続すると、モジュールが損傷します
シンボル |
説明 |
条件 |
最小 |
タイプ |
マックス |
単位 |
IDDSL |
スリープモードの電流 |
- |
0.1 |
1 |
uA |
|
IDDIDLE |
アイドルモードの電流 |
RCオシレータ対応 |
- |
1.2 |
- |
uA |
IDDST |
スタンバイモードの電流 |
水晶発振器対応 |
- |
1.25 |
1.5 |
uA |
IDDFS |
シンセサイザーの現在 モード |
- |
9 |
- |
uA |
|
IDDR |
受信モードの電流 |
- |
16 |
- |
uA |
|
IDDT |
適切なマッチングを備えた送信モードでの供給電流、VDD範囲全体で安定 |
RFOP = +20 dBm、PA_BOOSTで RFOP = +17 dBm、PA_BOOSTで RFOP = +13 dBm、RFIOピン RFOP = +10 dBm、RFIOピン RFOP = 0 dBm、RFIOピン RFOP = -1 dBm、RFIOピン |
- - - - - - |
130 95 45 33 20 16 |
- - - - - - |
mA mA mA mA ママ |
このチュートリアルでは、2つのArduinoNanoと2つのロジックレベルコンバーターを使用してモジュールと通信します。内蔵の内部レギュレータがピーク電流を非常に効率的に管理できるため、Arduinonanoを使用しています。以下のハードウェアセクションのフリッツ図は、それをより明確に説明します。
注:電源が130mAのピーク電流を供給できない場合、Arduinoが再起動するか、さらに悪いことにモジュールが適切に通信できない可能性があります。この状況では、ESRの低い大きな値のコンデンサが状況を改善できます。
RFM69モジュールのピン配列と説明
ラベル |
関数 |
関数 |
ラベル |
蟻 |
RF信号の出力/入力。 |
パワーグラウンド |
GND |
GND |
アンテナアース(電源アースと同じ) |
デジタルI / O、ソフトウェア構成 |
DIO5 |
DIO3 |
デジタルI / O、ソフトウェア構成 |
トリガー入力をリセット |
RST |
DIO4 |
デジタルI / O、ソフトウェア構成 |
SPIチップセレクト入力 |
NSS |
3.3V |
3.3V電源(少なくとも130 mA) |
SPIクロック入力 |
SCK |
DIO0 |
デジタルI / O、ソフトウェア構成 |
SPIデータ入力 |
MOSI |
DIO1 |
デジタルI / O、ソフトウェア構成 |
SPIデータ出力 |
味噌 |
DIO2 |
デジタルI / O、ソフトウェア構成 |
パワーグラウンド |
GND |
カスタム開発ボードの準備
モジュールを購入したとき、ブレッドボードと互換性のあるブレイクアウトボードが付属していなかったため、自分で作成することにしました。同じことをしなければならない場合は、手順に従ってください。また、これらの手順に従う必要はありません。RFモジュールにワイヤーをはんだ付けしてブレッドボードに接続するだけで、引き続き機能します。私はこの手順に従って、安定した頑丈なセットアップを実現します。
ステップ1: RFM69HCWモジュールの回路図を準備する
ステップ3: PCBを準備します。私はこの自家製PCBチュートリアルに従っています。銅板に足跡を印刷し、エッチング液に落としました
ステップ4:両方のボードの手順に従い、モジュールをフットプリントにはんだ付けします。両方のモジュールをはんだ付けした後、以下のようになります
RFM69HCWRFモジュールのピン配列を次の図に示します。
必要な材料
モジュールと通信するために必要なもののリストは次のとおりです
- 2つのRFM69HCWモジュール(周波数が一致):
- 434 MHz(WRL-12823)
- 2つのArduino(私はArduino NANOを使用しています)
- 2つのロジックレベルコンバータ
- 2つのブレイクアウトボード(カスタムメイドのブレイクアウトボードを使用しています)
- 押しボタン
- 4つのLED
- 1つの4.7K抵抗器4つの220オーム抵抗器
- ジャンパー線
- アンテナを作るためのエナメル銅線(22AWG)。
- そして最後にはんだ付け(uがまだそれをしていない場合)
ハードウェア接続
このチュートリアルでは、5ボルトのロジックを使用するArduino nanoを使用していますが、上記の表から明らかなように、RFM69HCWモジュールは3.3ボルトのロジックレベルを使用しているため、2つのデバイス間で適切に通信するには、ロジックレベルコンバーターが必須です。 ArduinonanoをRFM69モジュールに接続する方法を説明しました。
フリッツ図送信者ノード
接続テーブル送信者ノード
Arduinoピン |
RFM69HCWピン |
I / Oピン |
D2 |
DIO0 |
- |
D3 |
- |
TAC_SWITCH |
D4 |
- |
LED_GREEN |
D5 |
- |
LED_RED |
D9 |
- |
LED_BLUE |
D10 |
NSS |
- |
D11 |
MOSI |
- |
D12 |
味噌 |
- |
D13 |
SCK |
- |
フリッツ図受信ノード
接続テーブルレシーバーノード
Arduinoピン |
RFM69HCWピン |
I / Oピン |
D2 |
DIO0 |
- |
D9 |
- |
導いた |
D10 |
NSS |
- |
D11 |
MOSI |
- |
D12 |
味噌 |
- |
D13 |
SCK |
- |
サンプルスケッチの実行
このチュートリアルでは、2つのArduino RFM69ノードをセットアップし、それらを相互に通信させます。以下のセクションでは、LowPowerLabのFelix Rusuによって作成されたRFM69ライブラリを使用して、モジュールを起動して実行する方法を説明します。
ライブラリのインポート
うまくいけば、あなたは以前に少しArduinoプログラミングをしていて、ライブラリをインストールする方法を知っているでしょう。そうでない場合は、このリンクの「.zipライブラリのインポート」セクションを確認してください。
ノードの接続
送信側ノードのUSBをPCに接続し、新しいCOMポート番号をArduino IDEの「ツール/ポート」リストに追加してペンダウンします。次に受信側ノードを接続すると、別のCOMポートがツール/に表示されます。ポートリストもペンで書き留めます。ポート番号を使用して、スケッチを送信者ノードと受信者ノードにアップロードします。
2つのArduinoセッションを開く
最初のセッションがロードされた後にArduinoIDEアイコンをダブルクリックして2つのArduinoIDEセッションを開く、2つのArduinoシリアルモニターウィンドウを開き、2つのノードの出力を同時に監視する方法であるため、2つのArduinoセッションを開く必要があります
サンプルコードを開く
すべてがセットアップされたら、両方のArduinoセッションでサンプルコードを開く必要があります。
ファイル>例> RFM6_LowPowerLab>例> TxRxBlinky
クリックして開きます
サンプルコードの変更
- コードの上部近くで、#define NETWORKIDを探し、値を0に変更します。このIDを使用すると、すべてのノードが相互に通信できます。
- #define FREQUENCYを探し、ボード周波数に一致するようにこれを変更します(私のものは433_MHzです)。
- #defineENCRYPTKEYを探します。これは16ビットの暗号化キーです。
- #define IS_RFM69HW_HCWを探し、RFM69_HCWモジュールを使用している場合はコメントを解除します
- そして最後に、デフォルトでRECEIVERとして設定されている#defineNODEIDを探します
次に、以前に設定したレシーバーノードにコードをアップロードします。
送信者ノードのスケッチを変更する時間
ここで、#define NODEIDマクロでそれをSENDERに変更し、コードを送信者ノードにアップロードします。
これで、すべてが正しく行われた場合、2つの完全な作業モデルをテストする準備ができました。
サンプルスケッチの作業
スケッチのアップロードが成功すると、ArduinoのピンD4に接続されている赤いLEDが点灯するのがわかります。次に、送信側ノードのボタンを押すと、赤いLEDがオフになり、緑色のLEDが消えます。下の画像に示すように、ArduinoのピンD5に接続されていることが点灯します
ボタンが押されているのを観察することもできます!以下に示すように、シリアルモニターウィンドウのテキスト
次に、送信側ノードのピンD9に接続されている青色LEDを観察します。2回点滅し、受信ノードのシリアルモニターウィンドウで、次のメッセージと、のD9ピンに接続されている青色LEDを観察します。レシーバーノードが点灯します。受信ノードのシリアルモニターウィンドウに上記のメッセージが表示され、LEDが点灯した場合おめでとうございます!これで、RFM69モジュールとArduinoIDEとの通信に成功しました。このチュートリアルの完全な動作は、このページの下部にあるビデオにもあります。
これらすべてのモジュールはすべて、気象観測所、ガレージドア、インジケーター付きワイヤレスポンプコントローラー、ドローン、ロボット、猫などを構築するのに最適です…空は限界です!チュートリアルを理解し、何か役に立つものを作るのを楽しんだことを願っています。ご不明な点がございましたら、コメントセクションに残すか、フォーラムを使用して他の技術的な質問をしてください。