使用廉价射频模块模拟RSSI

时间:2017-09-06 21:51:55

标签: arduino radio

我的目标是使用计数接收数据包的系统来欺骗RSSI(接收信号强度指示符)。想法是有一些地方:

  • 在特定时间内从发射器发送特定数量的数据包。

  • 然后在另一个单位收到,并计算收到的包数。

  • 接收方计数器中的数字表示发射机在此时收到的数据包数量。

  • 收到的包裹(计数器价值)越少,发件人就越远。

我在代码中实现逻辑时遇到一些麻烦但是我非常感谢帮助。我正在使用带有NRF24L01 +无线电的Arduino Pro Mini 5V和RF24网络库。我的代码如下:

发射器:

#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
#include <Wire.h>

RF24 radio(8,9);                    

RF24Network network(radio);         

const uint16_t home_node = 00;   
const uint16_t distant_node = 01;   

struct payload_t {                  // Structure of our payload
  byte ID;
};


void setup(void) {
  Serial.begin(115200);
  SPI.begin();
  radio.begin();
  network.begin(/*channel*/ 92, /*node address*/ distant_node);
}

void loop(void) {

  byte ID = 1;

  for (int i = 0; i < 50; i++)
  {
    payload_t payload = {ID};                           
    RF24NetworkHeader header(/*to node*/ home_node);
    bool ok = network.write(header,&payload,sizeof(payload));
    if (ok)
      Serial.println("ok.");
    else
      Serial.println("failed.");
    delay (300); 
  }
  delay(15000);
}

接收器:

#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
#include <Wire.h>

RF24 radio(8,9);                    

RF24Network network(radio);         

const uint16_t home_node = 00;   
const uint16_t distant_node = 01;

struct payload_t {
  byte ID;
};

//const unsigned long interval = 3000; 
//unsigned long last_sent;
int count = 0;


void setup(void)
{
  Serial.begin(115200);
  SPI.begin();
  radio.begin();
  network.begin(/*channel*/ 92, /*node address*/ home_node);
}

void loop(void)
{
  RF24NetworkHeader header;
  payload_t payload;
  network.update();
  while ( network.available() ) {     // Is there anything ready for us?
     bool ok = network.read(header, &payload, sizeof(payload));
     if (ok) // Non-blocking
     {
       count++;
       Serial.println ("count=");
       Serial.println (count);
     }
     else 
       Serial.println ("Failed");

  }
}

0 个答案:

没有答案