de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
Chris Muppitt
Chris Muppitt
質問

RF24 libコマンドの理想的な遅延時間は何ですか?

コミュニケーションのためにRF24ライブラリを利用するWiFiベースの灌漑システムに取り組んでいます。 リモートセンサーのプロトタイプを稼働させ、0.036mAのスタンバイ電流を持ち、毎時12mAのピーク付近でデータを送信します。 プロトタイプを走らせている間、私はいつも同じ条件の下で設定されているにもかかわらず、すべての送信で変化するようなさまざまな再試行を見ます。私はリトライループをコード化してこれをマスタに接続する10回の試行に制限します - マスタからの確認を得ずにセンサが連続して送信されないようにします

私が探しているのは、電力使用を節約するために、できるだけ送信時間を制限するために、さまざまなRF24コマンドの間に必要な理想的な遅延です。 何か案は?? (コードスニペットが添付されています)

   pinMode(mostureSensorVCC, OUTPUT);
   digitalWrite (mostureSensorVCC, HIGH); //VCC to sensor   
   pinMode(mostureSensor1, INPUT);      //moisture sensor on
   delay(10); 
   int sensorValue1 = analogRead(mostureSensor1);//read the input on analog pin 
   Serial.print("Current Value Sensor 1 is : ");//debugging
   Serial.println(sensorValue1);//print out the value you read:  
   msg[0] = sensorValue1;
    digitalWrite(mostureSensor1, LOW);
    digitalWrite(mostureSensorVCC, LOW);    
      while (message != sensorValue1)
        { 

          Serial.print("sensorValue in while loop is ");//debugging
          Serial.println(sensorValue1);                  //debugging
          Serial.print("Message One is ");               //debugging
          Serial.println(message);                       //debugging  
          radio.powerUp();
          delay(70);

          radio.stopListening();
          delay(50);
          radio.write(msg, 2);
          delay(40);
          radio.startListening();
          delay(50);

         Serial.println(d);              //debugging


          if (radio.available())
            {   
             Serial.println("Radio available");    //debugging
              radio.read(msg, sizeof(msg));
              message = msg[0];
              Serial.print("Check Message received from master ");// debugging
              Serial.println(message);

            }
            if(d>=10)
            {
              Serial.println("Unable to send to master");
              break;
            }
       d++;   
  }

delay(1000);       
radio.powerDown();
message = 0; 
msg[0] = 0;
1 2016-03-18T04:23:43+00:00 1
 user3704293
user3704293
編集された質問 27日 3月 2016 в 7:56
Arduino
sensors
nrf24l01+
Al.
18日 3月 2016 в 4:28
2016-03-18T16:28:56+00:00
さらに
ソース
編集
#56788842

startListening後の遅延以外のすべての遅延を削除します。

あなたはそれを "真実になるために利用可能である、または50msが経過した"というコードで置き換えることができます。メッセージが例えば受信後に既に受信されている場合、50ms待つ必要はない。 10ms。

NRFのACKパッケージ機能を使用する方が良いでしょう。この機能により、マスターはすでにスレーブ用のパッケージを用意しています。スレーブがメッセージを送信すると(毎時間)、準備されたパッケージがACK(確認応答)パケットに含まれます。

それをさらに最適化する。スリープコードを最適化してから、送信コードを最適化する方がよいでしょう。スリープパーツは送信するコードよりも1時間で多くの電力を消費しますが、それには10秒かかる場合もあります。

紛失したパッケージについて。別のチャンネルを使用してみてください。また、実際のアンテナを備えたNRFモジュール、さらにはアンプ用のマスターモジュールを入手することもできます。

PS配備されたバージョンのserial.printを削除できます。

1
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Денис Анненский
登録済み 1日前
2
365
登録済み 5日前
3
True Image
登録済み 6日前
4
archana agarwal
登録済み 1週間前
5
Maxim Zhilyaev
登録済み 1週間前
© de-vraag :年
ソース
arduino.stackexchange.com
ライセンス cc by-sa 3.0 帰属