Arduino и библиотека RF24: связь прекращается через короткий промежуток времени

Я использую два Arduino Unos, приемопередатчики NRF24L01+ и несколько компонентов согласно этому сайту, на котором я следую второму руководству на этой странице: Учебное пособие по беспроводной связи Arduino — NRF24L01.

Я также использую точный код со страницы и настроил все в соответствии со схемами, однако через короткое время все перестает работать. Обычно между 15 и 30 секундами все остается включенным, но кажется, что приемопередатчики перестают обмениваться данными. Сброс платы Передачи (той, что с потенциометром) устранит проблему, пока она снова не остановится через 15 или 30 секунд.

Есть идеи, что может происходить?

, 👍0

Обсуждение

Я могу сказать, что многих проблем с этими модулями можно избежать путем серьезной развязки питания, подаваемого на модули. Поэтому не могли бы вы припаять электролитический конденсатор емкостью 5000-10000 мкФ и меньший керамический конденсатор непосредственно к GND и VCC модуля. Также было бы полезно узнать, какие у вас есть nRF, точные фотографии, если можно., @Avamander


4 ответа


1

Ваш вопрос не дает достаточно информации для продолжения. Настройка, как указано в руководстве, является хорошим началом, но не гарантирует отсутствие проблем. Это все еще может быть проблема из-за аппаратного обеспечения или прошивки.

Проблемы прошивки:

  • Через некоторое время радиоданные могут быть повреждены, что проявляется как сбой радиотранзакции.
  • Вы непреднамеренно изменили настройки регистрации радио.

Проблемы с оборудованием:

  • На используемом вами радиоканале присутствуют шумовые помехи из-за городской среды (Wi-Fi и т. д.). Система работает лучше на другом канале?
  • Радиостанция потребляет слишком много энергии и выключается, а затем возвращается к настройкам по умолчанию на микросхеме, а не к тем, которые установлены в скетче Arduino.
,

1

Есть несколько возможных причин:

Во-первых: Если вы впаяли конденсатор, его емкость может оказаться слишком большой, тогда, если появится пропадание напряжения, радиомодуль не восстановится от него из-за вашего большого размера конденсатора.

Во-вторых: это может быть неправильный конфиг. используйте RF24_PA_LOW, RF24_PA_HIGH и RF24_PA_MAX, но не MIN, поскольку он не поддерживается всеми модулями RF24.

В-третьих: это может быть пониженное напряжение, которое вызывает отказ платы arduino (а не радиомодуля). Тогда используйте альтернативный источник питания для радиомодуля. Но не забудьте оставить кабель заземления радиомодуля подключенным к ардуино (для данных).

,

0

У меня была такая же проблема, и до сих пор я не смог найти причину, почему это происходит.

В любом случае, мое временное решение состояло в том, чтобы заставить Arduino засыпать и просыпаться. В тот момент, когда плата переходит в спящий режим и перезагружается, все снова работает отлично.

Выполняйте этот код время от времени

#include <avr/wdt.h>

....

// включить сторожевой таймер. Это разбудит плату через 120 мс.
wdt_enable(WDTO_120MS);

// переходим в глубокий сон
if (true)
{
  SMCR |= (1 << 2); // режим отключения питания
  SMCR |= 1;        // включить сон;
  __asm__ __volatile__("sleep");
}

Я знаю, что это не решение, но это лучше, чем ничего, как в моем случае.

Изменить (решение, которое сработало для меня)

По какой-то причине, если я удаляю функцию millis(), код продолжает работать.

    unsigned int end = millis() + 2500; 
    for(int i=0; i<2000; i++) // Новый код
    // while (millis() < end) // Старый код перестает работать через 2 минуты ....
    {

Я выполняю задачу в течение 2,5 секунд, поэтому я использовал функцию миллис...

,

0

У меня была похожая проблема. Мой NRF24L01+ проработал целый день, но потом он внезапно сломался, и я не смог его починить. Судя по моим онлайн-исследованиям, у NRF24L01+ много проблем с надежностью. В конце концов, я реализовал свой план Z: переключил NRF24L01+ на модуль bluetooth HC-05 (что очень просто!!), проверьте: https://www.instructables.com/How -to-Connect-HC-05-to-Windows-1011-Mac-Apple-Com/ Если вы продолжаете беспокоится, я предлагаю просто использовать HC-05, что сэкономит вам много головной боли и времени.

Однако UART на HC-05 передает данные намного медленнее, чем SPI на NRF24L01, но скорость мне была не нужна, поэтому коммутатор был для меня отличным решением.

,