nRF24L01+ : побеждаем модуль.

Тема в разделе "Проводная и беспроводная связь", создана пользователем ИгорьК, 19 июн 2014.

  1. Zap.ck

    Zap.ck Нуб

    спасибо попробую.
     
  2. mr_Bishop

    mr_Bishop Нуб

    Добрый день, скажите пожалуйста вам удалось решить проблему, столкнулся с аналогичной ситуацией, перепробовал все не пойму в чем проблема?
     
  3. cfif

    cfif Нерд

    возникли проблемы с подключением двух nrf. Почитал форум - часть вопросов решил. Удалось законектить. Но есть нюанс)) на передающей nrf указываю канал, например 62, а приемник читает данные на канале 57. Вот тут застрял. В чем может быть проблема?
     
  4. parovoZZ

    parovoZZ Гуру

    Канал 62 - это что?
     
  5. Un_ka

    Un_ka Гуру

    Как вы это выяснили? Покажите код.
     
  6. cfif

    cfif Нерд

    код передатчика:
    Код (C++):

    #include <SPI.h>
    #include <RF24.h>
    #include "printf.h"
    RF24 radio(9, 10); // порты D9, D10: CSN CE
    const uint32_t pipe = 111156789; // адрес рабочей трубы; 111156789

    byte data;
    void setup() {
      Serial.begin(9600);
      printf_begin();
      Serial.println("TransmitterTester ON "); //Оповещаем о включении ардуины
      radio.begin();                      // Запускаем радиомодуль
      delay(3000);                        // Ждем загрузку и стабилизации его работы
      radio.setDataRate(RF24_250KBPS);    // Скорость обмена данными RF24_1MBPS или RF24_2MBPS (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS)
      radio.setCRCLength(RF24_CRC_8);     // Размер контрольной суммы 8 bit или 16 bit
      radio.setPALevel(RF24_PA_MIN);      // Уровень питания усилителя RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH and RF24_PA_MAX ((RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm).
      radio.setChannel(0x62);             // Установка канала
      radio.setAutoAck(false);            // Отключаем автоответ на пакеты
      radio.powerUp();                    // Включение или пониженное потребление powerDown - powerUp
      radio.stopListening();              // Остановить прослушивание радиоэфира
      radio.printDetails();               // Вывод текущих параметров радиомодуля
      radio.openWritingPipe(pipe);        // открыть трубу на отправку
      Serial.println("Start send...");    // Оповещаем о начале работы
    }
    void loop() {
      data = 109;
      radio.write(&data, 1);
      delay(24);
    }
    код приемника:
    Код (C++):

    #include <SPI.h>
    #include "nRF24L01.h"
    #include "RF24.h"

    RF24 radio(9, 10); // порты D9, D10: CSN CE

    const uint32_t pipe = 111156789; // адрес рабочей трубы;
    byte data[1];
    int scn;  //счетчик циклов прослушивания эфира
    int sg;  //счетчик числа принятых пакетов с передатчика

    void setup() {
      Serial.begin(9600);
      Serial.println("ReceiverTester ON");

      radio.begin();  // инициализация
      delay(2000);
      radio.setDataRate(RF24_250KBPS); // скорость обмена данными RF24_1MBPS или RF24_2MBPS
      radio.setCRCLength(RF24_CRC_8); // размер контрольной суммы 8 bit или 16 bit
      radio.setChannel(0x57);         // установка канала
      radio.setAutoAck(false);       // автоответ
      radio.openReadingPipe(1, pipe); // открыть трубу на приём
      radio.startListening();        // приём
    }

    void loop() {
      if (scn < 1000)
      { // прослушивание эфира
        if (radio.available())
        {
          radio.read(data, 1);

          if (data[0] == 109) {
            sg++;
          }
        }
      } else {//всего принято
        {
          Serial.println("Принято: " + String(sg) + " пакетов");
          sg = 0;
        }
        scn = 0;
      }
      scn++;
      delay(20);

      if (scn >= 1000) scn = 1000; //защита от переполнения счетчика
    }
     
    если запустить сканер каналов, то информация передается на каналах с 54 по 5В
     
  7. parovoZZ

    parovoZZ Гуру

    wi-fi соседский или радиомышь вещает. Собственно, этот сканер ничего не доказывает и не опровергает. Единственная его цель - выбор наименее шумного канала.
     
  8. cfif

    cfif Нерд

    но приемник пишет, что принято 740 пакетов на 57 канале. А на 62 и других каналах - принято 0 пакетов. Если отключаю передатчик, то помехи на каналах с 54 по 5В пропадают
     
  9. parovoZZ

    parovoZZ Гуру

    ну если так сильно смещены частотные каналы, то выкинь их перепаяй кварцы на качественные.
     
  10. cfif

    cfif Нерд

    понял))) ну меня этот факт не сильно смущает - главное - работает) хотелось из спортивного интереса разобраться.
     
  11. Protobear

    Protobear Нуб

    Добрый вечер, уважаемые члены ордена амперки! Хочу поделиться информацией: купил 12 модулей, 2 на российском ><нормальном сайте за 100р. - работают, 10 на братском навеки сайте - 4 из них работают. 2 пишут вместо "port_low" - "Брюки кербек" или что-то в этом духе. 5 дней убил, кондеры впаивал читал все в итоге - те что работают - работают и без кондеров, один "брюки кербкер" модуль прогрел феном и он стал нормально передавать и вошел в число рабочих из 10.... сначала делал на атмеге 8, с гнусной отладкой через UART на программном SPI, потом на stm32 blue pill 2 сделал для проверки модулей и вот так все вышло, так что проверяйте сначала модули на заведомо известных примерах рабочих, ничего в этом стыдного нет, а потом совершенствуйтесь сколько влезет, а то будете учиться программированию на оплавленном пентиуме, и прилагать усилия к организации своей силы воли по "разбору с нуля" что не так. Спасибо за ряд информационных потоков в этом топике. Удачи.
     
  12. tolik777

    tolik777 Нуб

    Коллеги, а кто-то имел дело с модулями от eByte?
    А то ситуация такая: валялись какие-то старые модули nrf24l01 с ali, купленные лет 5 назад. С встроенной антенной, без усилителя. Сделал на базе них устройство. Все отлично работает, но дальность около 30 метров, а мне надо 50-60м.
    Купил на ali модули от eByte с усилителем, права без антенны. Антенну использовал от Wi-Fi маршрутизатора на 2.4 ГГц (пробовал разные которые дома нашел - dlink, zyxel и т.д.). В общем дальность 5-7 м. Настройки одни и те-же. Кондеры припаяны. Запитаны от отдельного источника 1А. Не могу понять в чем проблема.
    Неужели дело в антенне и надо использовать родные? Или может подделка?
     

    Вложения:

    Последнее редактирование: 21 май 2023
  13. parovoZZ

    parovoZZ Гуру

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

    проблема в том, что на али продают отбраковку. Весь ликвид уходит заказчику.
     
  14. vavab

    vavab Нуб

    Добрый день. Очень прошу помощи.
    Перепробовал уже четыре радиомодуля (в том числе два из амперкита, один из амперки) к двум одинаковым ардуинам леонардо (из амперкита). В том числе с подключением через адаптеры и внешний блок питания. Не работает никак. Все контакты прозванивал, по сто раз перепроверял подключение по схеме. Перепробовал кучу библиотек rf24. Бьюсь третью неделю...
    Скетч сканера спотыкается уже на radio.begin(), т.е. сообщает, что не видит плату, что видно по нулевой диагностике
    Код (C++):
    TX_ADDR        = 0x0000000000
    RX_PW_P0-6    = 0x00 0x00 0x00 0x00 0x00 0x00
    EN_AA        = 0x00
    EN_RXADDR    = 0x00
    RF_CH        = 0x00
    RF_SETUP    = 0x00
    CONFIG        = 0x00
    DYNPD/FEATURE    = 0x00 0x00
    Data Rate    = 1 MBPS
    Model        = nRF24L01+
    CRC Length    = Disabled
    PA Power    = PA_MIN
    ARC        = 0
    Функция isChipConnected возвращает false, функция isValid - true.
    Понимаю, что могут быть руки из задницы, хотя раньше этого не отмечалось, но мог сгоряча чего-то и спалить.
    Может кто-то лечит по фотографии или есть скрипты по диагностике пинов?
    [Фото не загружается и не вставляется через кнопку, поэтому ссылки]
    https://disk.yandex.ru/i/xVCfQSJfqvm-MA
    https://disk.yandex.ru/i/Ngy11QvP48y8mA
    [​IMG]
    [​IMG]
     

    Вложения:

    Последнее редактирование: 30 май 2023
  15. parovoZZ

    parovoZZ Гуру

    Проблема в неправильном подключении spi.
     
  16. vavab

    vavab Нуб

    это понятно. непонятно, в каком именно месте неправильное подключение и есть ли варианты проверить это, пины например как-то программно "пробить"...
     
  17. parovoZZ

    parovoZZ Гуру

    Пробить - это что такое?
     
  18. vavab

    vavab Нуб

    протестировать, прозвонить, проверить на работоспособность
     
  19. parovoZZ

    parovoZZ Гуру

    ЛА или осциллограф.
     
  20. vavab

    vavab Нуб

    что такое ЛА?