Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить

Re: nrf24L01+

Ср мар 02, 2016 22:43:52

Внесу свою лепту, как показала практика ковыряния 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

Доброго времени суток!
Помогите, пожалуйста, новичку.
Расскажите, как настроить nRF24L01 с помощью микроконтроллера. И что нужно, чтобы отправить по радиосвязи пакет на другой nRF24L01. И потом как с помощью мк на приемнике понять, что на nRF24L01 пришли данные и их нужно считать?
Прошу писать очень простым языком. Си не знаю, только немного assembler.
В интернете искал. Как я понял надо каким-то образом считать с nRF24L01 status регистр, выставить нужные биты (например установки работы как передатчика) и по spi отправить это обратно в регистр status. Принцип видимо такой, но как на практике он реализовывается не пойму..
Буду очень признателен за помощь



Сюда перенес.
aen

Re: Как настроить с помощью микроконтроллера nRF24L01?

Пн июн 06, 2016 16:19:19

а датащит почитать? там все популярно расписано. общаться с rf по spi, о приеме сигнализирует нога IRQ (если используется готовая плата), проще повесить ее на прерывание. инициализация практически модулю не нужна, если использовать параметры по умолчанию. примеров кстати куча по этим модулям.

Re: Как настроить с помощью микроконтроллера nRF24L01?

Пн июн 06, 2016 19:24:15

Смотри выше, пост от Ср мар 02, 2016 22:43:52

Re: nrf24L01+

Вс ноя 06, 2016 15:18:57

alex_ писал(а):в приёмнике должно стоять то количество байт которое вы хотите передать иначе передатчик выдаст ошибку, а на приёмнике будет пусто.

Бред полный...

Передатчик передаёт столько байт, сколько Вы засунули в буфер передатчика. Не больше и не меньше.

А приёмник принимает столько байт, сколько Вы указали в настройках приёмника. Не больше и не меньше.

Передатчик ни при каких условиях не выдаст ошибку. Передатчику пофигу)))

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

А если указать в настройках приёмника меньше байт, чем передаёт передатчик, то приёмник просто первые байты. А первые байты - адрес передатчика...

Короче... Передатчику пофигу что передавать. А приёмнику пофигу что принимать))) Вот и всё)) .
:tea:

Re: nrf24L01+

Вс ноя 06, 2016 15:26:52

Ээээ, простите, а как же квитанции? Там же вроде они автоматом обмениваются, не? Если передатчику не пришла квитанция о успешном приеме пакета, по-любому он будет знать это.

Что-то я подзабыл, забросил любимые nrf'ки, все некогда.

Re: nrf24L01+

Вс ноя 06, 2016 15:49:44

Denkot писал(а):как же квитанции?

Те кто внимательно читал даташит nrf24L01+ , те знают, что у nrf24L01+ есть разные режимы работы... )) По умолчанию стоит так называемый Усовершенствованный формат (Enhanced ShockBurst ™) с квитанцией... АСК.
Изображение
Квитанцию можно отключить, установиив/отключив бит в поле управления пакетами... NO_ACK. В этом случае квитанции не отправлюяться.
Изображение

А те кто дочитал даташит до конца... те знают, что у nrf24L01+ так называемый Усовершенствованный формат (Enhanced ShockBurst ™)можно отключить, для совместимости с nrf24L01+ более ранних моделей. В этом случае никакие квитанции вообще не передаются.
Изображение
В этом режиме так же можно отключить проверку контрольной суммы (CRC). Тогда приёмник будет принимать всё подряд... после обнаружения преамбулы и указанного адреса.... ))))

В даташите всё очень подробно написано (и даже нарисованно). )))

:tea:

Re: nrf24L01+

Вс ноя 06, 2016 15:56:06

А есть практический смысл, отключать квитанции и CRC? Это дает выигрыш в чем-то?

Re: nrf24L01+

Вс ноя 06, 2016 16:29:02

А как же )) Это даёт выигрыш в скорости передачи.

-А если мне надо передавать потоковое аудио/видео ? Мне некогда ждать квитанцию... )) ACK отключаем. Вообще Усовершенствованный формат (Enhanced ShockBurst ™) отключаем. Длина пакета меньше. Скорость больше.))

-Или мне надо сделать рассылку на несколько модулей... Отключаем проверку CRC в приёмнике. (посчитаем потом, в МК)... )))...
Ну насчёт выиграша от отключения CRC - вопрос спорный. Можно и не отключать. Только в некоторых особенных случаях можно.. Например мне надо промониторить радиоканал на наличие помех или занятости радиокагнала... и т.д. Тогда CRC отключаем.

Короче.. вариантов в жизни много)) Поэтому хорошо что у nrf24L01+ есть разные режимы. ))
:tea:

Re: nrf24L01+

Пн ноя 07, 2016 19:25:04

roman.com писал(а):Бред полный...

Я таки извиняюсь но вы нифига не правы:
Передатчик ни при каких условиях не выдаст ошибку. Передатчику пофигу)))

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

А если указать в настройках приёмника меньше байт, чем передаёт передатчик, то приёмник просто первые байты. А первые байты - адрес передатчика...

Короче... Передатчику пофигу что передавать. А приёмнику пофигу что принимать))) Вот и всё)) .

Да сдрати, у этой ошибки даже название есть: MAX_RT передача не удалась так как не поступило ответа от приёмника, поскольку не совпала контрольная сумма, опять же идёт речь о настройках по дефолту, а не про то что вы такой умный и по отключали всё якобы лишнее.

Для некоторых в радость хотя бы с дефолтными настройками запустить, вот тут они и наткнуться на грабли: несовпадение контрольной суммы из-за разной длины пакетов(передатчик передаёт 3 а приёмник ждёт х пакетов, не помню сколько там по дефолту)

Re: nrf24L01+

Вт ноя 08, 2016 10:01:39

alex_ писал(а):у этой ошибки даже название есть: MAX_RT передача не удалась так как не поступило ответа от приёмника, поскольку не совпала контрольная сумма, опять же идёт речь о настройках по дефолту, а не про то что вы такой умный и по отключали всё якобы лишнее.

Я дико извиняюсь...)) Но надо разобраться с темринологией. https://ru.wikipedia.org/wiki/Терминология
:)))

1- Радиомодуль nrf24L01+ - это не передатчик и не приёмник, а трансивер.)) https://ru.wikipedia.org/wiki/Трансивер

2- Поэтому правильно будет говорить: ведущий/ведомый ... или мастер/слейв ....

В даташите принято обозначение - PTX and PRX.

Дословный перевод из даташита: "После того, как пакет передается с помощью PTX и получен PRX, пакет ACK передается от PRX к PTX."

MAX_RT - это если нет ответа от ведомого, а не от приёмника)) В даташите даже картинки есть ))
Изображение

Повторяю - есть ведуший и ведомый, а не передатчик и приёмник, как Вы написали...

Если в схеме два nrf24L01+, то мы имеем два передатчика и два приёмника. Поэтому повторяю: Передатчику пофигу что передавать. )))
alex_ писал(а):MAX_RT передача не удалась так как не поступило ответа от приёмника

MAX_RT - Это значит, что ведущий (он же мастер, он же PTX) не получил квитанцию (ACK) от ведомого (он же слейв, он же PRX) и больше ничего это не значит)))
Удалась передача или не удалась... мы этого не знаем))


Единственное что я не понял - алгоритм вычисления CRC. Как nrf24L01+ его считает... :dont_know:
Изображение
У меня принятый CRC не совпадает с расчётным (в столбик и на калькуляторе CRC)... Кто бы мне ответил на этот вопрос... :dont_know:

Re: nrf24L01+

Вт ноя 08, 2016 19:59:10

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

По поводу CRC, я как то не заморачивался, да и зачем, один модуль сам его сформирует, а второй примет и сравнит со своим, и отсюда сделает вывод принять или выбросить пакет. Вот например у ds18b20 дела обстоят по другому, тут контрольную сумму надо самому(контроллеру) считать, иначе не узнаешь битый пакет пришёл или нет.

Re: nrf24L01+

Вт ноя 08, 2016 22:10:24

alex_ писал(а):По поводу CRC, я как то не заморачивался, да и зачем, один модуль сам его сформирует, а второй примет и сравнит со своим, и отсюда сделает вывод принять или выбросить пакет. Вот например у ds18b20 дела обстоят по другому, тут контрольную сумму надо самому(контроллеру) считать, иначе не узнаешь битый пакет пришёл или нет.

Жаль...

Вижу CRC nrf24L01+, но не могу определить алгоритм... Впринципе можно вычислить))

В другой теме делали самодельные радиомодули и CRC считали сами, в МК...

Во-первых мне интересно как работает CRC в nrf24L01+. Во-вторых я хотел его использовать в особых случаях для nrf24L01+...

И вообще... Если я что-то разбираю, то я разбираю всё подробно)). Будем искать... )) :tea:

Re: nrf24L01+

Пт мар 03, 2017 10:28:48

Помогите врезать в NRF24L01+ для 3х блоков клонов такой пример с 3 кнопками и 3 led на прием и передаче команд. Запарился уже с 10 вариантами.

const int buttonPin[] = {5,6,7};
const int ledPin[] = {A0,A1,A2};

long previousMillis[] = {0,0,0};

long interval = 1000;

void setup() {
for(int i=0; i<3; i++)
{
pinMode(ledPin[i], OUTPUT);
digitalWrite(ledPin[i], LOW);
pinMode(buttonPin[i], INPUT);
}
}

void loop() {
unsigned long currentMillis = millis();
for(int i=0; i<3; i++)
{
if (digitalRead(buttonPin[i]) == LOW)
{
digitalWrite(ledPin[i], HIGH);
previousMillis[i] = currentMillis;
} else
if (currentMillis - previousMillis[i] > interval)
{
digitalWrite(ledPin[i], LOW);
}
}
}

Re: nrf24L01+

Ср авг 23, 2017 13:39:36

Всем привет, у меня вопрос не обычный
Как уменьшить дальность этого передатчика?
Скажем до 1го метра. Программный метод все равно сильно далеко где то до 10 меров
Какие могут быть идеи?

Re: nrf24L01+

Ср авг 23, 2017 14:25:57

Подобный вопрос здесь обсуждали.
viewtopic.php?f=28&t=142289

Re: nrf24L01+

Сб авг 26, 2017 15:38:48

Merlin писал(а):Как уменьшить дальность этого передатчика?Скажем до 1го метра. Программный метод все равно сильно далеко где то до 10 меров

отключить антенну))

Re: nrf24L01+

Вс авг 27, 2017 20:16:31

Да как вариант тоже рассматривал, еще не пробовал ни первый ни втрой метод.
Еще интересно если питание понизить до мин. предела это скажется на дальности?

Re: nrf24L01+

Чт сен 07, 2017 13:43:24

Спрошу не создавать же новую тему. А какие вообще возможности данного чипа кроме связи между себеподобными? Да, да именно так! С какими он протоколами может работать еще из промышленных существующих систем, блютуз, Wi-Fi,ZigBee передача напрямую в режиме ASK и FSK?
И еще 1 вопрос его что надо постоянно опрашивать на предмет приёма он сам уведомляет что принял что то?

Re: nrf24L01+

Чт сен 07, 2017 15:10:45

Он создан общаться только с себе подобными. Под остальные протоколы он не заточен, может конечно и можно получить хоть что то, но это не имеет никакого смысла. Единственное что можно будет сделать это просканировать полосу частот на котором работает трансивер на предмет "засранности" канала. Если хотите Wi-Fi или ZigBee купите непосредственно чип под это заточенный, так как там уже всё заточено на аппаратном уровне.
И еще 1 вопрос его что надо постоянно опрашивать на предмет приёма он сам уведомляет что принял что то?
Там есть целая нога созданная специально для этой цели.
Ответить