Использование функции уровня сигнала модуля 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?
@user175079, 👍4
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.
Чтобы этот код работал, приемник должен прослушивать данные. Просто прослушайте данные на приемнике, нет необходимости проверять данные.
- вопрос по трубке nRF24L01
- Как автоматически сбросить nrf24l01+ с кодом?
- Не получаем данные от NRF24L01
- Как отправить данные датчика с Arduino через NRF24L01 на Raspberry Pi
- Модуль nRF24L01 с использованием библиотеки Mirf работал, а затем остановился
- Модуль Bluetooth против беспроводного модуля Arduino
- nRF24L01 + потеря пакетов, вызванная считыванием Arduino и связью с датчиками
- Ошибка записи NRF24L01