Автоматика и аппаратура связи Дистанционное и непосредственное управление исполнительными механизмами, сотовая, а также радиосвязь. |
24.05.2013, 14:09
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Нет смысла использовать режим сна. При потреблении 20мА радиочипом, экономия сомнительная. Переводите в режим работы от 32кГц RC. Будет у вас меньше 1мА. И ждите прихода пакета.
У меня сделано по-другому. Мастер-устройство сидит на примеме и питается от чего-то бесконечного. Ваш модуль на батарейках отсылает при необходимости пакет. Получая подтверждение, переходит в режим приема. Дальше уже идет связь.
|
|
|
|
24.05.2013, 14:48
|
|
Прохожий
Регистрация: 21.05.2013
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Сообщение от Easyrider83
|
Переводите в режим работы от 32кГц RC.
|
Не совсем понял идею... Не могли бы пояснить подробнее... Перевести на постоянное тактирование от 32кГц!?
Сообщение от Easyrider83
|
Мастер-устройство сидит на примеме и питается от чего-то бесконечного. Ваш модуль на батарейках отсылает при необходимости пакет. Получая подтверждение, переходит в режим приема. Дальше уже идет связь.
|
Просто идея использовать устройство, как ведомое... Т.е. производить действия только при запросе от сервера(передатчика)... Вот сфера применения:
Допустим, датчик температуры и нужно собирать данные... Если период равный, там каждые 30 минут, то нет проблем, загнали в прошивку алгоритм и все работает в режим сон/пробуждение от вачдога... А теперь, если я хочу сделать сбор каждый час или каждые 10 минут... Что делать!? перепрошивать или же вводить в в программу переменную, которую буду передавать от сервера... Но опять же, как, при таких условиях, передать эту переменную??? только в момент когда ведомый контроллер проснется и тогда передать!?
|
|
|
|
24.05.2013, 14:56
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
В вашем случае проще передавать данные раз в минуту, а ненужные отбрасывать уже на хосте. А еще лучше фильтровать накоплением.
|
|
|
|
24.05.2013, 15:01
|
|
Прохожий
Регистрация: 21.05.2013
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Ну, проще да... И если ничего не выйдет с моим вариантом, или не придумаю что-нибудь еще, то так и реализую...
Но в идеале, конечно, хотелось бы правильнее и энергоэффективнее... По хорошему, для подобных целей прерывание на IRQ и сделали... Но желания не всегда соответствует действительности...
|
|
|
|
24.05.2013, 15:36
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Ну еще вариант - включать на 10-20 мс приемнк каждую секунду. А с хоста бомбить эфир, как из пулемета. Но лучше так не делать.
|
|
|
|
24.05.2013, 15:46
|
|
Прохожий
Регистрация: 21.05.2013
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Сообщение от Easyrider83
|
Ну еще вариант - включать на 10-20 мс приемнк каждую секунду. А с хоста бомбить эфир, как из пулемета. Но лучше так не делать.
|
Ну это совсем не выход... Это будет более не эффективно, если просто оставить модуль слушать эфир все время... интересно, на сколько хватит батареи при такой работе... Если отключить всю не нужную периферию...
|
|
|
|
24.05.2013, 15:49
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Можно и не отключать. 20мА в режиме приема. Батареи 2032 хватит на 10 часов.
|
|
|
|
24.05.2013, 16:40
|
|
Прохожий
Регистрация: 21.05.2013
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Сообщение от Easyrider83
|
Можно и не отключать. 20мА в режиме приема. Батареи 2032 хватит на 10 часов.
|
Пичалька... На самом деле Вы правы, на счет 20мА в режиме приема... Ждущий режим здесь не поможет...
Пока склоняюсь к варианту: Каждую минуту просыпаться(включать трансивер) и отправлять на хост данные/состояние устройства ждать n миллисекунд, если не пришло ничего от хоста, засыпать, если пришло - то менять состояние и тоже засыпать...
Тогда, если время ожидания будет равно секунде, то батарея продержится в районе месяца, если мои расчеты верны...
|
|
|
|
24.05.2013, 16:59
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Я ж вам дал подсказку - посылать надо с подтверждением. Если его нет, значит можно сразу спать. Если есть - подождать 10-20мс. В этом случае у вас батарея пару лет протянет.
|
|
|
|
28.05.2013, 19:42
|
|
Частый гость
Регистрация: 22.08.2010
Сообщений: 37
Сказал спасибо: 1
Сказали Спасибо 11 раз(а) в 9 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Привем всем!
Собрал два модуля, на базе Arduino Nano (без использования программных оболочек arduino), к нему подключил модуль NRF24L01+ c полосковой антенной, запитываю от FT232R на Nano, 3.3V.
Модули получены от разных китайских шопов, в чем и подозреваю загвоздку. Визуально отличаются незначительно, только расположением элементов.
Написал программку, для передачи 8-и байт (тестировал и 1 байт), и тут начались чудеса. Данные передаются, менял модули местами, поэтому приемный и передающий тракт на обоих модулях рабочий, но ACK - не принимается, после передачи взлетает MAX_RT и хоть ты тресни. Данные передаются стабильно, модули рядом друг с другом, тестировал на 250кбит и 1Мбит.
Регистры (все в hex, регистр:значение), различаются на приемнике в соответствующих частях STATUS/FIFO_STATUS, ну и конечно флажок PTX/PRX.
0:b 1:1 2:1 3:3 4:ff 5:0 6:6 7:e 8:0 9:1 a:de b:c2 c:c3 d:c4 e:c5 f:c6 10:de 11:0 12:0 13:0 14:0 15:0 16:0 17:11 18:0 19:0 1a:0 1b:0 1c:1 1d:5
Адреса на модулях совпадают. (Конечно и 5-и байтовые регистры RX_P0/TX, и на TX и на RX модуле одинаковые).
Регистры вроде-бы несколько раз перепроверил, все верно. Маркировка чипов тоже вроде нормальная (с плюсом).
Черновой кусок кода для передачи данных
Код
NRF24L01_RXTX(NRF_TX, 8, dd);
while (NRF24L01_NOOP() == 0xe);
spi_data = NRF24L01_NOOP();
if (spi_data & 0x10) {
printf("Error %x CLR\r\n", spi_data);
}
NOOP считывает статус регистр.
RXTX посылает 0xA0 и потом данные, там вроде как тоже ничего особенного.
Может там перепиленный NRF24L01 без плюса? Или ревизии разные?
Никто не сталкивался с такими чудесами?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:08.
|
|