Использование функции уровня сигнала модуля nRF24L01

Это проект walkie-talkie, и эта схема действительно работала, голос может передаваться от одного модуля nRF к другому nRF. Кроме того, я хочу наблюдать, насколько хорошо работает сигнал, зажигая светодиод.

Они говорили о тесте.РПД действует здесь для того, чтобы сделать это. Но говорят, что мы не можем использовать это с nRF24L01, но можем использовать только с nRF24L01P (я не знаю, в чем разница).

Проверьте, присутствует ли в канале сигнал (несущая или иной), превышающий или равный -64 дБм. Действителен только на оборудовании nRF24L01P ( + ). В nRF24L01используйте функцию testCarrier(). Полезно проверять наличие помех на текущем канале и стратегии перескока каналов. @return true, если сигнал => -64 дБм, false, если нет */


Разве мы не можем использовать его в nRF24L01 на самом деле?

Если я не могу использовать это, как я могу использовать функцию testCarrier для освещения светодиода (такого же яркого, низкого и выключенного), как упомянуто в цитате?

Если я могу использовать это, то какие изменения в коде должны быть сделаны? (Член TmrhProjects немного говорил об этом)


Он также намекает на этот код.

bool rpd = radio.testRPD();

while (radio.available()) {
  signalStrength = rpd + 1;
  radio.read, etc...
}

Должны ли мы написать приведенный выше код в файле RF24.h или мы должны записать его непосредственно в основной скетч Arduino?

, 👍4


1 ответ


1

Чтобы получить уровень сигнала, просто отправьте 100 пакетов без повторных попыток и посмотрите, сколько раз пакет поступит.

radio.begin();             
radio.setRetries(0,0); // по умолчанию nrf пытается 15 раз. Измените значение на "без повторных попыток", чтобы измерить силу

char buffer[32];
int counter = 0;

for(int i=0; i<100; i++)
{
   int status = radio.send(buffer,32); // отправить 32 байта данных. Не имеет значения, что это
   if(status)
       counter++;

   delay(1); // повторите попытку через 1 миллисекунду
}

//if... если счетчик > 80, сила сигнала велика
{

}

// else... в противном случае, если счетчик > 60, уровень сигнала хороший
{

}

// и т.д.

radio.setRetries(5,15); change back to its default when done.

Чтобы этот код работал, приемник должен прослушивать данные. Просто прослушайте данные на приемнике, нет необходимости проверять данные.

,