Внесу свою лепту, как показала практика ковыряния NRF24L01+ для проверки достаточно будет:
Код:
Настройка приёмника: // регистр данные SPI_Write(0x11+0x20); SPI_Write(0x03); //Хотим принять 3 байта // включаем камень SPI_Write(0x00+0x20); SPI_Write(0x0F); //CONFIG PRIM_RX-RX, PWR_UP, CRC-2байта, CRC, вкл маскировка прерываний выкл CE=1;
Настройка передатчика:
SPI_Write(0xA0); SPI_Write(0x11); //Грузим значение в W_TX_PAYLOAD SPI_Write(0x22); SPI_Write(0x33); //итого 3 байта, например // включаем камень SPI_Write(0x00+0x20); SPI_Write(0x0E); //CONFIG PRIM_RX-TX, PWR_UP, CRC-2байта, CRC, вкл маскировка прерываний выкл) CE=1; Delay_us(15); CE=0; // усё улетело
После этого оба чипа заводятся один передаёт второй принимает, даже не надо менять канал передачи, при условии что он не засран, у меня WI-FI под носом стоит и мышка на NRF24E, по дефолту в настройках стоит 2 канал, мне его даже менять не приходиться. Не обязательно менять адреса с дефолтными настройками всё прекрасно работает, проверено лично Основное чтобы всё заработало, конфиг регистр(0Х00) был одинаковый на обоих устройствах за исключением одного бита который определяет режим работы: приём или передача, и в приёмнике должно стоять то количество байт которое вы хотите передать иначе передатчик выдаст ошибку, а на приёмнике будет пусто.
Заголовок сообщения: Как настроить с помощью микроконтроллера nRF24L01?
Добавлено: Вс май 22, 2016 20:57:29
Родился
Зарегистрирован: Вс май 22, 2016 20:48:24 Сообщений: 1
Рейтинг сообщения:0
Доброго времени суток! Помогите, пожалуйста, новичку. Расскажите, как настроить nRF24L01 с помощью микроконтроллера. И что нужно, чтобы отправить по радиосвязи пакет на другой nRF24L01. И потом как с помощью мк на приемнике понять, что на nRF24L01 пришли данные и их нужно считать? Прошу писать очень простым языком. Си не знаю, только немного assembler. В интернете искал. Как я понял надо каким-то образом считать с nRF24L01 status регистр, выставить нужные биты (например установки работы как передатчика) и по spi отправить это обратно в регистр status. Принцип видимо такой, но как на практике он реализовывается не пойму.. Буду очень признателен за помощь
Заголовок сообщения: Re: Как настроить с помощью микроконтроллера nRF24L01?
Добавлено: Пн июн 06, 2016 16:19:19
Встал на лапы
Зарегистрирован: Вс май 10, 2009 18:23:45 Сообщений: 110
Рейтинг сообщения:0
а датащит почитать? там все популярно расписано. общаться с rf по spi, о приеме сигнализирует нога IRQ (если используется готовая плата), проще повесить ее на прерывание. инициализация практически модулю не нужна, если использовать параметры по умолчанию. примеров кстати куча по этим модулям.
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650.
Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
в приёмнике должно стоять то количество байт которое вы хотите передать иначе передатчик выдаст ошибку, а на приёмнике будет пусто.
Бред полный...
Передатчик передаёт столько байт, сколько Вы засунули в буфер передатчика. Не больше и не меньше.
А приёмник принимает столько байт, сколько Вы указали в настройках приёмника. Не больше и не меньше.
Передатчик ни при каких условиях не выдаст ошибку. Передатчику пофигу)))
Если в приёмнике указано больше байт, чем передал передатчик, то последнии байты будут случайный набор цифр - это просто шум приёмника (шум эфира)... Другими словами - передатчик уже закончил передачу и выключился, а приёмник продолжает принимать байты(шум эфира)... Вот и всё.
А если указать в настройках приёмника меньше байт, чем передаёт передатчик, то приёмник просто первые байты. А первые байты - адрес передатчика...
Короче... Передатчику пофигу что передавать. А приёмнику пофигу что принимать))) Вот и всё)) .
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Ээээ, простите, а как же квитанции? Там же вроде они автоматом обмениваются, не? Если передатчику не пришла квитанция о успешном приеме пакета, по-любому он будет знать это.
Что-то я подзабыл, забросил любимые nrf'ки, все некогда.
Те кто внимательно читал даташит nrf24L01+ , те знают, что у nrf24L01+ есть разные режимы работы... )) По умолчанию стоит так называемый Усовершенствованный формат (Enhanced ShockBurst ™) с квитанцией... АСК. Квитанцию можно отключить, установиив/отключив бит в поле управления пакетами... NO_ACK. В этом случае квитанции не отправлюяться.
А те кто дочитал даташит до конца... те знают, что у nrf24L01+ так называемый Усовершенствованный формат (Enhanced ShockBurst ™)можно отключить, для совместимости с nrf24L01+ более ранних моделей. В этом случае никакие квитанции вообще не передаются. В этом режиме так же можно отключить проверку контрольной суммы (CRC). Тогда приёмник будет принимать всё подряд... после обнаружения преамбулы и указанного адреса.... ))))
В даташите всё очень подробно написано (и даже нарисованно). )))
-А если мне надо передавать потоковое аудио/видео ? Мне некогда ждать квитанцию... )) ACK отключаем. Вообще Усовершенствованный формат (Enhanced ShockBurst ™) отключаем. Длина пакета меньше. Скорость больше.))
-Или мне надо сделать рассылку на несколько модулей... Отключаем проверку CRC в приёмнике. (посчитаем потом, в МК)... )))... Ну насчёт выиграша от отключения CRC - вопрос спорный. Можно и не отключать. Только в некоторых особенных случаях можно.. Например мне надо промониторить радиоканал на наличие помех или занятости радиокагнала... и т.д. Тогда CRC отключаем.
Короче.. вариантов в жизни много)) Поэтому хорошо что у nrf24L01+ есть разные режимы. ))
Передатчик ни при каких условиях не выдаст ошибку. Передатчику пофигу)))
Если в приёмнике указано больше байт, чем передал передатчик, то последнии байты будут случайный набор цифр - это просто шум приёмника (шум эфира)... Другими словами - передатчик уже закончил передачу и выключился, а приёмник продолжает принимать байты(шум эфира)... Вот и всё.
А если указать в настройках приёмника меньше байт, чем передаёт передатчик, то приёмник просто первые байты. А первые байты - адрес передатчика...
Короче... Передатчику пофигу что передавать. А приёмнику пофигу что принимать))) Вот и всё)) .
Да сдрати, у этой ошибки даже название есть: MAX_RT передача не удалась так как не поступило ответа от приёмника, поскольку не совпала контрольная сумма, опять же идёт речь о настройках по дефолту, а не про то что вы такой умный и по отключали всё якобы лишнее.
Для некоторых в радость хотя бы с дефолтными настройками запустить, вот тут они и наткнуться на грабли: несовпадение контрольной суммы из-за разной длины пакетов(передатчик передаёт 3 а приёмник ждёт х пакетов, не помню сколько там по дефолту)
у этой ошибки даже название есть: MAX_RT передача не удалась так как не поступило ответа от приёмника, поскольку не совпала контрольная сумма, опять же идёт речь о настройках по дефолту, а не про то что вы такой умный и по отключали всё якобы лишнее.
2- Поэтому правильно будет говорить: ведущий/ведомый ... или мастер/слейв ....
В даташите принято обозначение - PTX and PRX.
Дословный перевод из даташита: "После того, как пакет передается с помощью PTX и получен PRX, пакет ACK передается от PRX к PTX."
MAX_RT - это если нет ответа от ведомого, а не от приёмника)) В даташите даже картинки есть ))
Повторяю - есть ведуший и ведомый, а не передатчик и приёмник, как Вы написали...
Если в схеме два nrf24L01+, то мы имеем два передатчика и два приёмника. Поэтому повторяю: Передатчику пофигу что передавать. )))
alex_ писал(а):
MAX_RT передача не удалась так как не поступило ответа от приёмника
MAX_RT - Это значит, что ведущий (он же мастер, он же PTX) не получил квитанцию (ACK) от ведомого (он же слейв, он же PRX) и больше ничего это не значит))) Удалась передача или не удалась... мы этого не знаем))
Единственное что я не понял - алгоритм вычисления CRC. Как nrf24L01+ его считает... У меня принятый CRC не совпадает с расчётным (в столбик и на калькуляторе CRC)... Кто бы мне ответил на этот вопрос...
По поводу терминологии(два пишем три в уме) опять же склоняюсь к первому старту модуля с дефолтными настройками. Безусловно это трансиверы т.е. устройства которые могут работать как на приём так и на передачу но начинающие и не только чаще всего предпочитают настраивать один модуль только на приём а второй только на передачу, вот отсюда и появилась терминология про приёмник и передатчик.
Цитата:
Передатчику пофигу что передавать. )))
В принципе да, но если хотите получить от "приёмника" ACK а не MAX_RT, то следует передавать то кол-бо байт на которое настроен "приёмник".
По поводу CRC, я как то не заморачивался, да и зачем, один модуль сам его сформирует, а второй примет и сравнит со своим, и отсюда сделает вывод принять или выбросить пакет. Вот например у ds18b20 дела обстоят по другому, тут контрольную сумму надо самому(контроллеру) считать, иначе не узнаешь битый пакет пришёл или нет.
По поводу CRC, я как то не заморачивался, да и зачем, один модуль сам его сформирует, а второй примет и сравнит со своим, и отсюда сделает вывод принять или выбросить пакет. Вот например у ds18b20 дела обстоят по другому, тут контрольную сумму надо самому(контроллеру) считать, иначе не узнаешь битый пакет пришёл или нет.
Жаль...
Вижу CRC nrf24L01+, но не могу определить алгоритм... Впринципе можно вычислить))
В другой теме делали самодельные радиомодули и CRC считали сами, в МК...
Во-первых мне интересно как работает CRC в nrf24L01+. Во-вторых я хотел его использовать в особых случаях для nrf24L01+...
И вообще... Если я что-то разбираю, то я разбираю всё подробно)). Будем искать... ))
Всем привет, у меня вопрос не обычный Как уменьшить дальность этого передатчика? Скажем до 1го метра. Программный метод все равно сильно далеко где то до 10 меров Какие могут быть идеи?
Да как вариант тоже рассматривал, еще не пробовал ни первый ни втрой метод. Еще интересно если питание понизить до мин. предела это скажется на дальности?
Спрошу не создавать же новую тему. А какие вообще возможности данного чипа кроме связи между себеподобными? Да, да именно так! С какими он протоколами может работать еще из промышленных существующих систем, блютуз, Wi-Fi,ZigBee передача напрямую в режиме ASK и FSK? И еще 1 вопрос его что надо постоянно опрашивать на предмет приёма он сам уведомляет что принял что то?
_________________ [url=https://nick-name.ru/nickname/id1368343/][img]https://nick-name.ru/forumt6/quant001.gif[/img][/url] Дауны думают, гении знают! Дебилы косят под по умных, умные за слово дебил становятся еще умнее и говорят спасибо!
Он создан общаться только с себе подобными. Под остальные протоколы он не заточен, может конечно и можно получить хоть что то, но это не имеет никакого смысла. Единственное что можно будет сделать это просканировать полосу частот на котором работает трансивер на предмет "засранности" канала. Если хотите Wi-Fi или ZigBee купите непосредственно чип под это заточенный, так как там уже всё заточено на аппаратном уровне.
Цитата:
И еще 1 вопрос его что надо постоянно опрашивать на предмет приёма он сам уведомляет что принял что то?
Там есть целая нога созданная специально для этой цели.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения