人員と機密データを共有するためのローカルネットワークを作成することは、現代の世界の一般人にとってほとんど不可能になっています。これは主に、Whatsapp、Facebook、ハングアウトなどの一般的なチャット方法がすべてインターネット接続に関係しているためです。
インターネットを介さずにデータを共有できるとしたらどうでしょうか。
ネットパックやインターネット接続がなくても、家や職場の人とコミュニケーションがとれるとしたら、どれほどクールだろうか。
自分の想像力でチャット画面をカスタマイズできるとしたらどうでしょうか。
これはすべて、マイクロコントローラーとワイヤレス伝送媒体で可能です。nRF24L01プロジェクトを使用したこのArduinoチャットルームは、お住まいの地域に低コストのチャットルームを設定する方法をご案内します。
それでは、飛び込んで、それがどのように機能するかを見てみましょう。
作業説明:
基本的にこれを機能させるには、Arduinoボードと安価なワイヤレスモジュールのペアが必要になります。ここで使用するワイヤレスモジュールはnRF24L01です。これらのモジュールを選択する理由は、これらがZigbeeの後継であり、セットアップされた接続で簡単に操作できるためです。また、これらのモジュールは2.4 GHz(ISM帯域)で動作し、周波数ホッピングスペクトラム拡散とショックバーストオプションを備えているため、干渉の問題を緩和できます。
ArduinoとNRF24L01を接続してシリアル通信を確立し、相互に通信できるようにします。 NRF24L01は半二重トランシーバモジュールであるため、データを送受信できます。データはユーザーから収集され、送信されます。このデータは、任意の(または1つの特定の)モジュールで受信して、画面に表示できます。
だが!!!!!Arduinoのデバッグ画面を使用してチャットしますか?もちろん違います。「処理」を使用して、独自のチャット画面を作成およびカスタマイズします。処理は、UARTを使用してArduinoと通信できるソフトウェアです。処理言語を使用して.exeファイルを作成します。これは、Javaランタイムを備えた任意のコンピューターで実行できます。チャットするには、Arduinoを接続してこの.exeファイルを開くだけです。Booooom!! 私たちは私たち自身の民営化された完全に無料のチャットルームにいます。
このプロジェクトはチャットルームに2人のメンバーを追加するだけに制限されていますが、nRF24L01には6つのパイプラインがあるため、チャットルームには最大6人のメンバーがいる可能性があります。このチャールームは、nRF24L01モジュールに応じて100メートルの範囲内で機能します。
だから買い物に行きましょう!!!!
必要なコンポーネント:
- Arduino(任意のバージョンまたはモデル)-2Nos
- nRF24L01 +ワイヤレストランシーバモジュール-2Nos
- 3.3電圧レギュレータ-2Nos。(必須ではありません)
- 接続線
- 興味(ロルツ)
回路図:
nRF24L01を搭載したArduinoMega:
nRF24L01を搭載したArduinoNano:
私たちのプロジェクトには、複雑な接続は含まれていません。私が使用しているArduinoのメガをし、ArduinoのナノとのnRF24L01との接続は、上に示しています。Arduinoモデルを使用できます。
nRF24L01 +ワイヤレストランシーバモジュールの操作:
ただし、nRF24L01をノイズなしで動作させるために、次のことを検討する必要があります。私はこのnRF24L01 +に長い間取り組んできましたが、次の点が壁にぶつかるのを防ぐのに役立つことを学びました。
1.市場に出回っているnRF24L01 +モジュールのほとんどは偽物です。EbayとAmazonで見つけることができる安価なものは最悪です(心配しないでください、いくつかの調整でそれらを機能させることができます)
2.主な問題は、コードではなく電源です。オンラインのコードのほとんどは正しく機能します。私自身、個人的にテストした機能するコードがあります。必要な場合はお知らせください。
3. NRF24L01 +として印刷されるモジュールは、実際にはSi24Ri(はい、中国製品)であるため、注意してください。
4.クローンモジュールとフェイクモジュールはより多くの電力を消費します。したがって、Si24Riの消費電流は約250mAになるため、nRF24L01 +データシートに基づいて電源回路を開発しないでください。
5.電圧リップルと電流サージに注意してください。これらのモジュールは非常に敏感で、簡単に焼損する可能性があります。(;-(これまでに2つのモジュールを揚げた)
6.モジュールのVccとGndの間に2つのコンデンサ(10uFと0.1uF)を追加すると、電源を純粋にするのに役立ち、これはほとんどのモジュールで機能します。
それでも問題がある場合は、コメントセクションで報告するか、これを読んでください。
Arduinoのプログラミング:
Arduino NanoとMegaの両方のプログラムは、CEピンとCSピンの変更についても同様です。プログラムを小さなセグメントに分割して説明します。
ArduinoとnRF24L01はSPIを介して通信するため、SPIライブラリを要求しました。また、RFモジュールが機能するようにManiacbug RF24libを含めました。ここからファイルをダウンロードして、IDEに追加します。
#include
当社のNRFモジュールは、ピン8と10にそれぞれCEとCSに接続されています。
RF24 myRadio(8、10);
packageという構造化データパッケージを作成し ます 。可変 テキスト は、放送中のデータを送信するために使用されます。
struct package {char text; //オンエアで送信するテキスト}; typedef structpackageパッケージ; パッケージデータ;
で 無効セットアップ() 関数で、我々は、MINの消費電力と最大250kbpsの速度で115に9600とセットアップたちのモジュールにボーレートを初期化します。後でこれらの値をいじることができます。
void setup(){Serial.begin(9600); delay(1000); //Serial.print("Setup Initialized "); myRadio.begin(); myRadio.setChannel(115); // WIFI信号より上の115バンドmyRadio.setPALevel(RF24_PA_MIN); //最小電力低怒りmyRadio.setDataRate(RF24_250KBPS); //最低速度}
データがシリアルバッファを介して受信された場合、モジュールは送信モードで動作するようになります。それ以外の場合、モジュールは受信モードでオンエアのデータを検索します。ユーザーからのデータはchar配列に格納され、 WriteData() に送信されて送信されます。
void loop(){while(Serial.available()> 0)//ユーザーから値を取得{val = Serial.peek(); if(index <19)//配列のサイズより1つ小さい{inChar = Serial.read(); //文字を読み取りますinData = inChar; //インデックス++を保存します; //次の書き込み先をインクリメントしますinData = '\ 0'; //文字列をヌル終了します} if(val == '#'){strcpy(data.text、inData); WriteData(); //モジュールを送信モードにしますwhile(index!= 0){inData = ''; インデックス-; }}} ReadData(); //モジュールの受信モードを設定します}
void WriteData() 関数は、0xF0F0F0F0AAアドレスにデータを書き込みます。このアドレスは、他のモジュールの書き込みパイプとして使用されます。
void WriteData(){myRadio.stopListening(); //受信を停止し、送信を開始しますmyRadio.openWritingPipe(0xF0F0F0F066); //この40ビットアドレスでデータを送信しますmyRadio.write(&data、sizeof(data)); delay(300); }
void ReadData() 関数は、このアドレスの0xF0F0F0F066にデータを書き込みます。このアドレスは、他のモジュールの読み取りパイプとして使用されます。
void ReadData(){myRadio.openReadingPipe(1、0xF0F0F0F0AA); //読み取るパイプ、40ビットアドレスmyRadio.startListening(); // Transmintingを停止し、Reveicingを開始しますif(myRadio.available()){while(myRadio.available()){myRadio.read(&data、sizeof(data)); } Serial.println(data.text); }}
これで、プログラミングの部分は終わりました。ここでいくつかのことを理解できない場合は、以下のコードセクションに記載されている両方のArduinoの2つのプログラムを確認してください。コメント行を追加して、より適切に説明しています。
処理プログラム:
「Processing」は、アーティストがグラフィックデザインに使用するオープンソースソフトウェアです。このソフトウェアは、ソフトウェアおよびAndroidアプリケーションの開発に使用されます。開発は非常に簡単で、Android開発IDEと非常によく似ています。そのため、説明を短くしました。
両方のチャット画面の処理コードは次のとおりです。
- チャット画面1処理コード
- チャット画面2処理コード
それらを右クリックし、[名前を付けてリンクを保存]をクリックしてダウンロードし、Arduinoをセットアップした後にコンピューターで開きます。これらの*.pdeファイルを開くには「Processing」ソフトウェアをインストールしてから、「Run」してチャットボックスを開く必要があります。コメントセクションはクエリ用に開かれています。送信機と受信機モジュールの処理スケッチは同じです。
以下のコードセクションでは、 「port = new Serial(this、Serial.list()、9600); // 9600ボーレートで4番目のPORTを読み取る」 が重要です。これはどのポートからデータを取得するかを決定するためです。
void setup(){size(510,500); ポート=新しいSerial(this、Serial.list()、9600); // 9600 baudrateで4番目のPORTを読み取りますprintln(Serial.list()); background(0); }
ここでは、Arduinoの4番目のポートからデータを読み取りました。
たとえば、COM COM COM COMCOMがある場合
次に、上記のコードはCOMからデータを読み取ります。
テスト:
これで、ProcessingとArduinoのスケッチの準備ができたので、プログラムをArduinoにアップロードし、ラップトップに接続したままにします。処理スケッチを開き、入力を開始して「Enter」を押すと、メッセージが他のArduinoに送信され、他のコンピューターに接続されている別の処理アプリケーションに受信したテキストが表示されます。完全なデモンストレーションについては、以下のビデオをさらに確認してください。
このように、この安価なArduinoチャットルームを使用して、インターネットに接続せずに地域の友人や家族と話すことができます。