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

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

  1. geher

    geher Гуру

    Точно. Пропустил. Адреса труб разные.
    Пишет в одну трубу, а читает совсем из другой.
     
  2. AlR46

    AlR46 Нуб

    Поиграл скоротью, не помогло.
    getPayloadSize - это я уже искал всякие причины, подумал может размеры буферов разные.
    За 250кб спасибо, не разглядел, что это поддерживают только модули с +


    В смысле адреса труб разные? Я пробовал сделать так.
    На передатчике
    radio.openWritingPipe(pipe00);
    На приемнике
    radio.openReadingPipe(1,pipe00);
    Все равно не запустилось :( или там надо как то по другому.

    Попробовал команду radio.printDetails(); Она каждый раз разные данные выдает, это нормально?
     
  3. zaynus

    zaynus Нерд

    посмотрите что пишет radio.printDetails()(соответствует ли информация настройкам и меняется ли при изменении настроек( например скорости, это поможет выяснить что передатчик подключен и работает)

    Проверьте сетап модулей(примерно такой, измените настройки pipe под свой скетч)
    Код (Text):

    radio.begin();
      radio.setRetries(15, 15);
      radio.setChannel(120);
      radio.setPayloadSize(32);//
      radio.setPALevel(RF24_PA_MAX);
      radio.setDataRate(RF24_1MBPS);
      radio.openReadingPipe(1, pipe1);
      //radio.openWritingPipe(pipes[0]);
      radio.startListening();
      radio.printDetails();
      radio.enableAckPayload();
      radio.powerUp();
     
    Трубы прописаны правильно , если передатчик пишет в radio.openWritingPipe(pipe00);
    то приемник должен читать из нее.
    print.Details должна выдавать одинаковую информацию при каждом запуске.
    На стр. 16 есть скрины print.Details при подключенном модуле и при отключенном.
    Конденсатор на 100 мкф может не успевать заряжаться до старта модуля
     
    Последнее редактирование: 12 апр 2015
  4. AlR46

    AlR46 Нуб

    Попробовал, что вы сказали, поменять настройки. Пофигу, выдает случайные данные комкандой ptintDetails.
    Кондеров на 1-2 мкф нема, магазы закрыты. Подрубил БП от компа и взял с него 3.3в, результат такой же.
    Кучу библиотек перепробовал, даже специально для DUE нашел ссылку(на библиотеку в сети) в файле RF24.h.

    Ладно когда с ЖК бился, там китаезы напутали и не тот контроллер указали. А тут что можно напутать?
     
  5. zaynus

    zaynus Нерд

    У меня заводится от уно безо всяких кондеров.
    С библиотекой http://maniacbug.github.io/RF24/classRF24.html на дуе тоже.
    Немного выше в ветке человек не мог запустить из-за питания, пробовал множество внешних источников, пока наконец не запустил от "встроенных" 3,3в.
    Prindetails выводит всегда по разному или сообщения иногда повторяются?
    Поставьте скорость 2 мБит, будет ли Prindetails ее показывать на первый раз или на второй.
    Модуль где брали? Есть модули несовместимые с nrf но там другой чип.
    Как я понял у Вас 2 девайса, хоть один из них запускается корректно?
    Можно попробовать скетч scanner из библиотеки, хоть на одной заведется?
     
  6. AlR46

    AlR46 Нуб

    [​IMG]

    [​IMG]

    Вот такое вот получается с одной из библиотек. Остальные сканировать не могут и каждый раз выводят разную инфу о модуле. Сам модуль как на фотке точно такой же, 2 брал у наших продовцов(думал что китайские потерялись) и еще 4 у китаез.

    Может я что не так подключил. В скетче вот такие настройки CE и SCN туда и отправил.
    RF24 radio(9,10)
    Все остальное подключал к аппаратному SPI в центре дуино.
     
  7. zaynus

    zaynus Нерд

    Верно, на iscp выведены шина spi, только там питания 3.3в нету.
    CE_PIN 9 CSN_PIN 10
    Сканер показывает, значит по идее модуль завелся(так на всех модулях?)
    Интересно у Вас prindeails datarate показывает(все модули так?)
    У меня последние строчки выглядят так:
    duino_rf24_3.PNG
    Библиотека http://maniacbug.github.io/RF24/classRF24.html ?
    Попробуйте мою такую же .
    Там есть модифицированный сканер(2)
     
  8. AlR46

    AlR46 Нуб

    RF24/examples/scanner/

    Scanning all available frequencies...Scan completed.
    023 (2423Mhz): 03 - ***
    024 (2424Mhz): 05 - *****
    025 (2425Mhz): 07 - *******
    026 (2426Mhz): 05 - *****
    027 (2427Mhz): 05 - *****
    028 (2428Mhz): 05 - *****
    029 (2429Mhz): 08 - ********
    030 (2430Mhz): 05 - *****
    031 (2431Mhz): 05 - *****
    032 (2432Mhz): 05 - *****
    033 (2433Mhz): 05 - *****
    034 (2434Mhz): 05 - *****
    035 (2435Mhz): 05 - *****
    036 (2436Mhz): 05 - *****
    037 (2437Mhz): 07 - *******
    038 (2438Mhz): 05 - *****
    039 (2439Mhz): 05 - *****
    041 (2441Mhz): 03 - ***

    теперь выдает такую картинку
    RF24/examples/GettingStarted/
    Pong back
    *** PRESS 'T' to begin transmitting to the other node
    STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
    S q = 0xffffffffff 0xf0f0f0f0d2
    S ~ = 0xc3 0xc4 0xc5 0xc6
    S ‹ = 0xe7e7e7e7e7
    S “ = 0x20 0x20 0x00 0x00 0x00 0x00
    S ћ = 0x00
    S ¤ = 0x03
    S ® = 0x4c
    S ґ = 0x07
    S Ѕ = 0x0f
    S Д = 0x00 0x06
    Data Rate = S
    Model = S
    CRC Length = S
    PA Power = S

    Чем дальше, тем веселее. Уверен когда разберусь, вся соль окажется в какой нить мелочи.

    На всех модулях одинаково.

    А у вас какая версия IDE? Может компилируется криво?
     
    Последнее редактирование: 12 апр 2015
  9. zaynus

    zaynus Нерд

    1.5.6-r2
     
  10. zaynus

    zaynus Нерд

    сканер вроде правильно показывает, значит модуль работает
     
  11. AlR46

    AlR46 Нуб

    Полтергейст. :confused:Все заработало с кондером на 100 мкф и 16в и 0.47 мкф 50в и без кондера.
    Единственного, что сделал, это... а просто решил по второму кругу все библиотеки проверить и заработала это с пол тычка
    https://github.com/mcrosson/RF24/tree/due

    На опросе detailPrint() показывает такую же странную вещь, буквы S вместа данных в последних 4 строках.

    вот уже ~700 строк и ни одного пропуска пинга. Вот не даром говорят у админа должен быть хороший бубен.
     
  12. Stanik

    Stanik Нуб

    Проблема решилась. Был бракованный соединительный проводок с ардуины)
     
    Последнее редактирование: 15 апр 2015
  13. Lagvin

    Lagvin Нерд

    подскажите как работает эта функция radio.setRetries(15, 15);
     
  14. zaynus

    zaynus Нерд

    первая кол-во повторов отправки сообщения при неудачной доставке
    вторая временная пауза между повторами
    вродь так
     
  15. Lagvin

    Lagvin Нерд

    Это понятно, попробую по другому
    Есть: А приемник, В передатчик и С премопередатчик(так нужно для проекта)
    Как работает: "В" посылает сигнал для "А" и вдруг на пути "китайцы построили стену" (и тут начинаются попытки соединения (15,15)). Как "В" понимает что он соединился с А ? (тут если можно подробнее)
    Мне нужно:Если через определенное количество попыток В не соединился с А, он посылает посылку на С, а С в свою очередь принимает(потому,что она всегда рядом) и СМСит по GSM
    Здесь очень важна экономия электропитания, т.к. все на батарейках.
     
  16. zaynus

    zaynus Нерд

    у А есть функция autoAsk, которой он посылает ответ на принятую посылку,
    в качестве бонуса автоответом можно пересылать свои данные.
    В качестве функции включающей режим передачи С можно использовать ответ из функции radio.whatHappened
    (есть в примере pingpair irq библиотеки rf24)
    насчет экономии питания сам не пробовал, однако у трансивера есть режим powerDown.
     
    Lagvin нравится это.
  17. geher

    geher Гуру

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

    С экономией электроэнергии проще, но только на передатчике. Приемник должен слушать эфир постоянно, или придется вводить расписание сеансов обмена (окна, в течении которых приемник слушает эфир) и постоянно синхронизировать время приемника и передатчика.
    powerDown глушит и приемник, и передатчик.

    В библиотеке mirf (но, возможно, не во всех ее версиях) есть функции, которые включают приемник и передатчик избирательно: powerUpTx, powerUpRx.
    Не знаю как оно работает, и зачем оно вообще нужно, поскольку выключаются приемник и передатчик только общим powerDown (раздельного не нашел).
     
    Lagvin нравится это.
  18. Lagvin

    Lagvin Нерд

    Спасибо всем!
     
  19. AlexVS

    AlexVS Гик

    Я пробовал запитать NRF24 от цифрового вывода Ардуины, т.е. управляя состоянием вывода - подаем или отключаем питание радиомодуля, работает без проблем.
     
  20. zaynus

    zaynus Нерд

    а как же 3.3 вольта, понижали?
    или дуина 3х вольтовая?