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

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

  1. Glyk5

    Glyk5 Нуб

    Это конечно хорошо, но приемник ни чего не принимает, т.е. событие radio.available() не возникает.
    такое ощущение, что или передатчик с первого раза не успевает отправить или приемник не успевает .
     
  2. parovoZZ

    parovoZZ Гуру

    Передатчику по барабану на приёмник и на то, что происходит в эфире. Надо ковырять приёмник. Лучше всего ловить прерывания у nrf на ноге IRQ и затем читать буфер. Событие radio.available() само по себе и не возникнет. Ведущим является микропроцессор - он и инициирует общение. А как микроконтроллер узнает о том, что модуль принял данные? Либо его постоянно опрашивать, что не есть хорошо, либо ждать запрос на прерывание от модуля. Если пакет ушел, а на ноге IRQ "пусто", то либо модули кривые, либо что-то не так с обоюдными настройками. Да, с ноги IRQ снимается сигнал только после чтения буфера.
     
  3. Glyk5

    Glyk5 Нуб

    Спасибо! Буду ковырять.
     
  4. Oleg_7

    Oleg_7 Гик

    Всем доброго дня. Встал вопрос об автономности радиопредатчика. Есть сделанный пульт на батарейке на базе nrf24, с целью экономии амперов, необходимо сделать включение питания кнопкой без фиксации- далее пакет отправляется - через 10 сек ардуина сама выключается. Вопрос как это сделать ?? нашел только такое готовое решение, но там нужно паять смд компонеты....а фена нет https://www.chipdip.ru/product/power-on
     
  5. rkit

    rkit Гуру

    Выпаиваете с ардуино все лишнее, включаете режим сна. Будет потреблять не больше 10 мкА.
     
    Последнее редактирование: 16 дек 2017
  6. FigaroVL

    FigaroVL Нуб

    Добрый день. У кого нибуть был опыт одновременного использования W5100+nRF24 на аппаратном SPI. Перейти на SoftSPI прошу не предлагать, т.к. использую UNO и LCD - все пины заняты:)
    Нашел статью в интернете, но там решение через SoftSPI: http://shanes.net/how-to-use-an-nrf24l01-rf24-with-an-arduino-ethernet-shield/
    Симптомы такие: nRF работает замечательно - принимает/передает данные, но как только подключаешь библиотеку SD или SDfs все виснет или UNO начинает постоянно перезагружаться, и наоборот когда только SD все работает. Аппаратная часть при этом не меняется.
    По памяти смотрел - скретч использует около 65% RAM и 85% ProgMem.
    Из вариантов и мыслей, что нарыл в интернете - разная скорость SPI, некорректное использование пинов CS в библиотеках - при "отпускании" шины SPI не выставляют уровень HIGH на CS пине, ну и совсем замысловатый вариант - разные режимы работы SPI (MODE0-3).
    Сам пока буду копать datasheet на чипы и библиотеки.
     
  7. У меня похоже рекорд.
    Стабильная связь на расстоянии 0,5 м.
    На метре теряет пакеты. На полутора теряет все...
    Мега - передатчик, Уно - приемник. NRF родные, на чипах маркировка.
    Менял канал передачи, разделял питание, менял ножки, менял приемник/передатчик местами (мега приемник, уно передатчик), напаял керамику... Все пустое...
    Что еще мог не учесть? Посоветуйте...
     
  8. rkit

    rkit Гуру

    Вот это
     
  9. parovoZZ

    parovoZZ Гуру

    Nrf в глубокий сон, микроконтроллер туда же. Всё лишнее с платы убрать. Микроконтроллер запускаете по прерыванию от кнопки. 10 сек вы что будете делать? При батарейном питании это непозволительная роскошь. На любых паузах в работе микроконтроллер необходимо вгонять в сон. Про delay () вообще забыть. При таком подходе на CR2032 запросто можно проработать пару лет.

    Родные кому?))) Оригинальные микросхемы стоят за сто рублей штучка при небольшом опте.
    Не забывайте, что данные микросхемы предназначены для игровых приложений, поэтому и радиус работы небольшой изначально.

    SPI интерфейс (точнее, регистры) никакого отношения к SC пинам не имеет. Вы должны самостоятельно проводить с ними работу. Что мешает взвести принудительно соответствующий SC пин?
     
  10. Oleg_7

    Oleg_7 Гик

    Спасибо за ответ! 10с - это условно. Задача, вкллючаем тактовой кнопкой питания ардуино, удерживаем, и чтобы при отпускании кнопки питания, ардуина успевала отправить по НРФ радиопасылку (например инфу о длительности нажатия на ту самую кнопку питания).
     
  11. Oleg_7

    Oleg_7 Гик

    как это правильно сделать? припаять конд по-жирней на gnd/vin ?
     
  12. rkit

    rkit Гуру

    Вы пишете "спасибо за ответ", но ответ не читали, судя по всему. Вам все уже объяснили и не один раз.
     
  13. Oleg_7

    Oleg_7 Гик

    Смущает "Всё лишнее с платы убрать"....... Т.к. я не большой мастер по пайке/распайке )) Поэтому и смотрю в сторону полного отключения платы...
     
  14. parovoZZ

    parovoZZ Гуру

    И в чем сложность? Устанавливаете прерывание на пин мк с кнопкой. В обработчике прерывания запускаете таймер. Там же надо отслеживать дребезг кнопки. Затем ждёте отпускания кнопки, останавливаете таймер и отправляете данные через nrf. Отправили, а сами в сон. Плата какая?
     
  15. Oleg_7

    Oleg_7 Гик

    Плата NANO. Я так и делал по началу, но без отпаяных светодиодов с платы все-равно расходовалось около 15мА во сне((. Так что хочется с полным отключением платы что то придумать. Получится так: припаяю конденсатор хороший, и при отпускании кнопки питания плата будет им питаться может 1с и успевать отправить пасылку ??
     
  16. ImrDuke

    ImrDuke Гик

    У меня удаленный термометр:
    Pro Mini + передатчик 433 МГц + датчик температуры + аккумулятор от Nokia.
    Отправляет 2 посылки раз в 10 минут. Итого это хозяйство держится больше двух месяцев без подзарядки.
     
  17. Oleg_7

    Oleg_7 Гик

    Это хорошо, но даже 3-4 мес мало..У меня цель - менять батарейку 1 раз / год .....или реже, как в пульте от телика ! )
     
  18. b707

    b707 Гуру

    Плату как питаете? 15мА светодиоды не жрут, это видимо регулятор напряжения и USB-UART переходник.
    Вообще, если вы хотите экономить электричество - не надо брать плату и "удалять лишнее", возьмите голый контроллер вообще без навесного.
     
  19. Faig

    Faig Нерд

    Всем здрасти,
    У меня сто тысяч БЛАГОДАРНОСТЕЙ!! и одно маленькое замечание автору темы. Вы написали в шапке не начинать читать тему сначала
    ОДНАКО, это не лучший ваш совет :), именно прочтение советов данных вами до указанного места и помогли мне победить данный модуль.
    Еще хочу добавить, что купив "base" модуль (модуль питания) в придачу к этим передатчикам, я смог передавать сообщения на неплохие расстояния (на расстояния обычного вайфая) питая прямо с Ардуины (Arduino Mega 2560).
     
    Последнее редактирование: 30 дек 2017
  20. Faig

    Faig Нерд

    Так же у меня есть вопрос:
    Есть ли команда показывающая работоспособность модуля (что он не завис), потому что, иногда я заметил что приемник перестает отправлять автоответ (ну или передатчик перестает их принимать), а лечится эта проблема только отключением и включением заново питания именно на радио модулях (у меня они питаются отдельно от ардуин). Причем команда
    Код (C++):
    radio.powerDown(); radio.powerUp();
    не помогает.
    А Ардуины, после переподключения радиомодулей, можно просто ресетнуть.
    Еще я заметил что если в pipes с 2 по 6 на приемнике вписать так как советовал автор (передатчик принимает и полноразмерный адрес) то он перестает отвечать. Надо вписать только маленький кусочек -
    Код (C++):
    const uint64_t pipe01 = 0xE8E8F0F0A1LL;
    const uint64_t pipe02 = 0xA2LL;
    const uint64_t pipe03 = 0xA3LL;
    const uint64_t pipe04 = 0xA4LL;
    const uint64_t pipe05 = 0xA5LL;
    const uint64_t pipe06 = 0xA6LL;
    последний значимый байт.
    Еще раз вопрос: Есть ли команда показывающая полную работоспособность модуля? Ну и как ей пользоваться?
     
    Последнее редактирование: 30 дек 2017