Проблема с nRF24l01
- Войдите на сайт для отправки комментариев
Пнд, 13/11/2017 - 22:24
Здравствуйте. Приобрел 2 nRF24l01 и переходник для их питания. подключил одну к Nano, другой к про мини. у обоих модулей CE - 8, CSN-9.
Залил в обе ардуино прошивку nrf_listen_air. оба модуля выводят инфу, выводят каналы, отображают занятые роутером и свободные каналы.
Далее залил прошивку "время передачи TX-RX", естественно изменив CE и CSN на свои. выдало "Fail". При этом канал 0х60 был свободен, судя по nrf_listen_air. но на всякий случай изменил канал на 0.
Залил прошивку пингпонг из стандартных примеров библиотеки. та же история.
И наконец припаял сначала 4,7uF, затем 1000uF - не помогло.
Куда копать дальше или можно выкинуть эти модули?
Начните с простого. Создайте максимально простые скетчи приемника и передатчика, установите одну и ту же скорость, канал и трубу, подтверждение ответа выключите - и помотрите, будет ли что-то передаваться хотя бы когда модули лежат рядом. Раз у вас показываются параметры и шум в эфире - значит подключено все правильно и модули рабочие.
я даже не знаю куда уж проще чем RX-TX_time. там отсылается 1 байт всего. Возможно не хватает каких то настроек, на одном модуле по дефолту так, а на другом сяк...
это меня и удивляет - читать эфир может а отсылать(или читать мою передачу) - нет
Где-то читал, что на нулевом канале модули могут не работать.
Недавно было - собрал на макетке на атмега8 проводами 10 см до нрф-ки, передача работает без доп. кондеров. Спаял всё на плату, проводники до 2 см, передача пропала. Нет ни вблизи, ни вдалеке. Дотрагиваюсь до антенны передатчика - всё пошло. Припаивал кондеры керамику на 0.1 мкФ, электролит на 47-100 мкФ, тантал на 100 мкФ. Ничего. Всё убрал, припаял керамику на 1мкФ - всё заработало.
Понял, попробую еще пару каналов из всего диапазона.
антену трогал, не влияет, короче помучаю еще...
Где-то читал, что на нулевом канале модули могут не работать.
Недавно было - собрал на макетке на атмега8 проводами 10 см до нрф-ки, передача работает без доп. кондеров. Спаял всё на плату, проводники до 2 см, передача пропала. Нет ни вблизи, ни вдалеке. Дотрагиваюсь до антенны передатчика - всё пошло. Припаивал кондеры керамику на 0.1 мкФ, электролит на 47-100 мкФ, тантал на 100 мкФ. Ничего. Всё убрал, припаял керамику на 1мкФ - всё заработало.
да вообще эти китайские NRF - вещь в себе. У кого-то сразу заводится, у кого-то с кондерами, у одного на нулевом канале не пашет, у другого как раз лучше всего на нулевом...
У меня, к примеру, модули при тестах из эфира не ловят ничего, при сканировании одни нули на всех каналах, при этом связываются и отсылают данные сразу. при минимальной настройке.
Проблема решена.
Победил модуль намотав на один из них 3 витка жилой из UTP кабеля. намотав 5 витков увеличилась скорость доставки. Второй можуль работает без намотки, но намотав и на него еще чуть чуть повысилась скорость передачи и стабильность.
Проблема решена.
Победил модуль намотав на один из них 3 витка жилой из UTP кабеля. намотав 5 витков увеличилась скорость доставки. Второй можуль работает без намотки, но намотав и на него еще чуть чуть повысилась скорость передачи и стабильность.
хм, интересно... А можно подробнее - куда именно наматывали, к чему намотку подключали. Лучше с фото
намотал как попало и концы между собой скрутил, никуда их не подключал.
вот так:
Появилась вторая проблема: Передатчик, если подключен пин прерывания и чтение ответа происходит в прерывании, после этого прерывания зависает. В прерывание первый раз заходит и все. дуп не крутится, прерывания не возникают.
и третья проблема - как редактировать регистр GICR. нужно запретить прерывания только от INT0, а deattach почему то срабатывает не сразу и прерывание выполняется 2-3 раза от дребезга. т е мне нужно войти в прерывание, сразу и быстро одной командой(а не медлительной ардуиновской функцией) запретить эти прерывания
Мне кажется, Вы слишком много хотите от прерывания.
Уберите из прерывания печать и читайте в прерывании по одному байту, а не весь пакет сразу.
Прерывание должно только выставлять флаги (и читать уже пришедшие (!) байты), а все остальное - в основном цикле.
Подскажите. Есть много nRF2401L+ они работают если делать тест каждой. питание надежное 3.3 + кондер как обычно, но почему то идет зависание если пробую отправлять с них. с любой так что думаю что дело в программе( соединение тоже норм. Крч мозг сломал в чем дело( Даже когда nRF не подключен то все равно при отправки зависание( библиотек не менял. Вроде все работало на ней. не знаю в чем может быть причина?
выключить подтверждение приема
А как это влияет на передачу? Попробую щас. Я передаю массив. И самое интересно. что даже без nRF код виснет. Ардуино повисает и или перезагружается или ниче не происходит(
Не помогает. Т.е. даже без самой nRF подключеной код ребутит дуню. Именно на моменте отправки массива. Без radio.write(&Protocol, sizeof(Protocol)); все норм а с функцией отправки все виснит и потом видно как дуня перезагружается и все по новой в цикле. В чем может быть беда? Какие идеи? Модули норм дуни тоже разные пробывал все норм. С подключением и питанием как я понял это не связано(( так как даже без модуля виснет
значит ищите проблему в вашем секретном коде
Он элементарен. Вот:
Может библиотека. хотя я кочал уже разных кучу пробывал. Смысл такой что даже если я ничего в loop не делаю. Он у меня виснит еще на моменте запуска
избавтесь от delay
Да делал)) сут ьв том что почему то даже при отключенной nRF виснет причем у меня что МК куча что и nRF и все они так себя ведут. Я даже ума не приложу что такое. МОжет из за IDE нового?
как сделать что бы при обрыве связи между nrf24l01 моторчик отключался
Единственным способом - слать сообщения непрерывно, пока моторчик должен работать.
ПРосто зашить в код прошивки проверку присланых пакетов. И поставить таймер отдельный в прошивке и по таймеру проверять был пакет проверочый или нет если нет то связи нет с базой грубо говоря и тогда отключать что надо.
в этом и проблема я не умею прописывать скетч и в какую строку его вставлять.
Вам сюда: http://arduino.ru/forumy/ishchu-ispolnitelya
1) поставил на пульт МТ3608 выставил 11воль. и не работает. а от двух 18650 работает. 2) пульт работает только когда антенка сложана! в положение (прямо) страшно глючит или совсем не работает. но когда антену трогаешь то работает. что не так?
1) поставил на пульт МТ3608 выставил 11воль. и не работает. а от двух 18650 работает. 2) пульт работает только когда антенка сложана! в положение (прямо) страшно глючит или совсем не работает. но когда антену трогаешь то работает. что не так?
Потирая хрустальный шар -
1) ваше питание слишком "шумит".
2) Антена неправильной геометрии для этой длинны волны, ваше тело является лучшей антеной чем ваша "антена" в разложеном состоянии.
Извините за тавтологию =)
а вообще гадать что не так с антенной и антенным трактом без лабораторного оборудования - то еще удовольствие... =)
Всем привет! Не стал создавать новую тему. Нужна помощь, кто сталкивался с проблемой токого рода.
Есть две Arduino nano.
Есть такие модули https://ru.aliexpress.com/item/Free-Shipping-NRF24L01-PA-LNA-Wireless-Module-with-Antenna-1000-Meters-Long-Distance-FZ0410-We-are/32810139818.html?spm=a2g0s.9042311.0.0.da1c33edIWwTT8 2 шт.
Такие модули https://ru.aliexpress.com/item/New-Socket-Adapter-plate-Board-for-8Pin-NRF24L01-Wireless-Transceive-module-51/32642877857.html?spm=a2g0v.10010108.1000013.1.70d54a861Nq8DY&scm=1007.13339.90158.0&scm_id=1007.13339.90158.0&scm-url=1007.13339.90158.0&pvid=7da67a70-344c-484c-a2a6-3484b3a12470&_t=pvid%3A7da67a70-344c-484c-a2a6-3484b3a12470%2Cscm-url%3A1007.13339.90158.0 2 шт.
Все спаяно, и соединения проверены.
При тесте обоих выдает:
Скетч из примера GettingStarted:
Далее заливаем в передатчик:
Заливаем в приемник:
И в мониторе порта передатчика начинается зависание, после отключения модуля NRF зависание прекращается. В мониторе порта приемника также происходит зависание, после отключения модуля NRF соответственно начинает появлятся data:0. Тоже самое происходит при подключении NRF от лабораторного блока питания.
Кто встречался с данной проблемой помогите пожалуйста, уже не знаю куда копать.
Схему или фото соединения в студию. Те модули что вы показываете давольно много потребляют и самое интересное, ваш переходник питания им не поможет ибо нет гасителя ввиде конденсатора. я лично на них ставлю в любом случии от 40мкФ до 100мкФ достаточно для нормально работы. Т.е. при попытке отправить что то он повисает например. Второй вариант неправильное соединение. Надо начинать не с этого проверку модулей этих а со сканирования частоты там ест ьскетч. Если он работает то все подключено верно. Следовательно проблема в питании. У этих модулей две проблемы питание и не правильное соединение
Привет. Вот залил в обе ардуины, включена раздача по WI-FI.
Значит все соединено правильно! Проблема кроется в питании. Хоть оно и 3.3 НО! в моменты отправок модулями те модули что у вас могут кушать даже 100мА т.е. просадка идет а у вас на линии питания нет компенсирующего кондера. точнее есть они но они чисто для подавления мелких всплесков. А вот при нехватки питания он просто повисает сам и вешает ваш МК вот и все. Крч напаяйте на ножки + - кондер на микрофарад так 47 например и будет вам счастье и запитывайте ваш адаптер от 1А блока питания как минимум. И ещеземля должна быть общая у них с МК
Я запитывал от лаб. блока питания на 5А, земля общая, ладно сейчас попробую кондеры впаять, потом отпишусь. Я просто думал китайские модули со стабилизатором 3,3В, там на них есть кондеры, и везде где читал, пишут что их хватает.
ну как вам такой мелкой керамики которая там стоит хватит?))) она там на пикофарады или нано фарады от сиолы чисто для компенсации мелочевки. их хвататет частенько но не всегда для обычных которые без усилителя. Так что пробуйте.
http://arduino.ru/forum/proekty/radioupravlyaemyi-kater-iz-potolochki?pa...
Попробуй
Мужики спасибо! Конденсатор на 47мФ помог!
=) Не за что!
Крч думал про nRF знаю все но нет! Крч nRF2401+PL питанрие отбельное за глаза отфильтрованное! На компенсацию кондер есть 100мкФ. Суть такая она работает на прием без нареканий. А вот на отправку вешает цикл кристала. Не могу найти причину. думал непропай или по питанию как обычно но нет. Где еще можно глянуть или в чем может быт ьпричина? Может быть причина в самой плате?
У меня таже проблема. Передатчик виснет через 3-4 цикла обмена с приемником.
Причем, все работало прекрасно целые сутки. Решил чуток изменить скетч и все....
Грешу на библиотеки. Потому как перед заливкой программы, с дуру, обновил библиотеки с автообновлением.
Там были и ISP и RF24. Попытка откатится на более ранние либы, не помогла, так как номера раб.библиотек не запоминал.
У кого модули хорошо между собой общаются, сообщите пожалуйста номера работчих версий ISP и RF24.
У меня проблема была аппаратная. Сомневаюсь я в библиотеках. Ибо сами порассуждай если в коде то один фиг раньше суток повиснет. Предлагаю решение включить просто Watch dog на мк и все))) или посмотреть в сторону питания. Какое у вас питание не может просадку давать?
А у меня была проблема именно в библиотеке, я давал на нее ссылку. Не только мне помогло
Всегда надо пробывать все)))
Мужики, хвтит наезжать на НРФки. Если Вы их не спалили, то все работают прекрасно. Буквально на днях пришлось испытать 11 штук. Из них четыре моих - две с усилителями и две обычных. И еще 7 штук условно неисправных, которые - по словам хозяев не работают. В результате все обеспечивают уверенную связь на расстоянии 15 метров , через два бетонных перекрытия. При условии, что отключено автоподтверждение. Если его включить, то уверенная связь не более 5 метров, и никаких препятствий. С моими модулями расстояние около 30 метров с обычными и порядка 70 метров с усилителями. Из доработок- кондюк около 10 мкф по питанию и экранирование части модуля ниже антенны. Без экранирования периодически (безсистемно) связь прерывалась, и восстанавливалась, если дотронуться до модуля. После экранирования проблем не было. Для экранирования достаточно обмотать все, что ниже антенны скотчем, затем фольгой и снова скотчем. Правда у меня не фольга, а полоска отрезанная от пивной банки, но думаю, что это не принципиально. Некоторые нюансы по питанию, если модуль с усилителем, то нужно достаточно мощный стабилизатор 3,3 В. Так при питании от ардуинки - при мощности MIN, LOW связь устойчивая, если выставляем HIGH, время достоверного отклика увеличивается на порядок, если ставим MAX, то связь прерывается. От отдельного стабилизатора 3,3 В такого не наблюдается. С обычными модулями - без усилителя , тоже.
Если правильно "готовить" проблемы конечно возможно и не будут. Но у меня были, и не только, и проблема была не в модулях, а в либе. На одном модуле и экраны делал чтобы заработало, но стоило либу поменять уже ничего не нужно, просто работает
Все может быть, но экраны помогают очень сильно. Особенно в начале. Во всяком случае убирают эти непонятки с поднесение рук к модулю и перемещением его. Когда все работает их влияние не так заметно, но дальность устойчивого соединения увеличивается процентов на 20.
их не только нужно хорошо готовить, но и можно самому распаивать :)
Ну это уж, слишком радикально. Эффект заметный?
это украдено из дш на nrf, с соблюдением размеров, немного переделана под керамическую антену, а так работает лучше чем китайские модули на 0603 элементной базе, родная на 0402, ну и две стены пробивает без проблем
У меня с одной стеной проблема, эадняя стена дома обшита профнастилом. И через нее стандартная НРФка не пробивает, только с усилителями за счет отраженки.
железо пробивать тяжело так как экран получается, так что только на отраженке жить :)
Все же грешу на библиотеки.
Условия для тестирования идиальные: 5В и 3.3В лаб. БП. Конденсаторы, экранировку модуля не рассматриваю как не существенное для теста на столе с растоянием 10 см друг от друга. Модули и Ардуинки из одной партии. Тесты модулей, сети, каналов все проходит на ура.
Самое главное: система заводится. 3 сообшения проходят отлично. Причем, всегда строго 3 шт, а потом на передатчике модуль отваливается, вижу по амперметру: на БП - потребление в ноль. Ардуинка переходит в неуправляемый бесконечный цикл, так как будто непрерывно идет сообщение с модуля. Такое ощущение что переполняется буфер radio.available() . Получается что функция radio.read( &command, sizeof(command) не очищает буфер до конца. Или я не в ту сторону копаю?
А у меня была проблема именно в библиотеке, я давал на нее ссылку. Не только мне помогло
Либа не скачивается. Можно еще раз ссылку.