Подскажите по NRF24

ed1610@yandex.ru
Offline
Зарегистрирован: 03.07.2014

Всем привет! Копаюсь с ардуино не так давно, стоит задача настроить связь между Adruino UNO и Arduino Mega через радио модули nrf24l01.

Передатчик -  Adruino UNO

Приемник - Arduino Mega

Библиотека - RF24

Все пины как в таблице: http://www.google.ru/imgres?imgurl=http%3A%2F%2Fhobbycomponents.com%2Fimages%2Fforum%2FnRF24L01_Wireless_Tranceiver_Arduino_Table_HCMODU0004.png&imgrefurl=http%3A%2F%2Fforum.hobbycomponents.com%2Fviewtopic.php%3Ff%3D39%26t%3D1317&h=312&w=694&tbnid=6KM-n-lXBXE7GM%3A&zoom=1&docid=A4r9HsNdoaydZM&ei=jlG0U5XAEuO9ygO_gYHQDQ&tbm=isch&ved=0CFwQMyglMCU&iact=rc&uact=3&dur=1799&page=3&start=34&ndsp=20

 

ed1610@yandex.ru
Offline
Зарегистрирован: 03.07.2014

Код передатчика:

#include <SPI.h>
#include "RF24.h"
 
RF24 radio(7, 8);
 
const uint64_t pipes[2] = {
  0xF0F0F0F000LL, 0xF0F0F0F0FFLL};
 
int val[3]={
  1,2,3};
 
void setup(){
  Serial.begin(9600);
 
  radio.begin();  
  radio.setDataRate(RF24_250KBPS);
  radio.setChannel(100);
  radio.setRetries(15,15);
  radio.openWritingPipe(pipes[1]);
  Serial.println("Configured");
}
void loop(){
  Serial.println("Start recieve!");
  radio.write(val, sizeof(val));
  Serial.println("Sent!");
  delay(1000);
}
 
 
 
Код приемника:
#include <SPI.h>
#include "RF24.h"
 
RF24 radio(7, 8);
 
 
const uint64_t pipes[2] = {
  0xF0F0F0F000LL, 0xF0F0F0F0FFLL};
 
int data[3];
 
void setup(){
  Serial.begin(9600);
 
  radio.begin();  
  radio.setDataRate(RF24_250KBPS);  // Скорость передачи
  radio.setChannel(100); // Номер канала от 0 до 127
  radio.setRetries(15,15); // Кол-во попыток и время между попытками
  //radio.openWritingPipe(pipes[0]); // Открываем канал передачи
  radio.openReadingPipe(1, pipes[1]); // Открываем один из 6-ти каналов приема
  radio.startListening(); // Начинаем слушать эфир
  Serial.println("Start listening...");
}
 
void loop(){  
  if(radio.available()){
    radio.read(data, sizeof(data));
    Serial.println(data[1]);    
  } 
  else{
    Serial.println("Empty"); 
  }
}
 
Приемник все время выдает "пустоту". 
 
Подскажите, пожлуйста, что я делаю не так?
 
toc
Offline
Зарегистрирован: 09.02.2013

попробуйте примеры из библиотеки rf24. Например pingpair.

И добавьте паузу в loop приёмника

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

toc пишет:
попробуйте примеры из библиотеки rf24. Например pingpair.

И добавьте паузу в loop приёмника

Такие странные идеи.. зачем пробовать примеры.. примеры это для ламеров.. наш выбор это сразу написать свой код и потом спрашивать на форуме чё оно не работает. .

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

toc пишет:
попробуйте примеры из библиотеки rf24. Например pingpair.

И добавьте паузу в loop приёмника

Такие странные идеи.. зачем пробовать примеры.. примеры это для ламеров.. наш выбор это сразу написать свой код и потом спрашивать на форуме чё оно не работает. .

Toto_G
Offline
Зарегистрирован: 20.11.2015

по нрф 1001 тема. открывать ещё думаю не стоит).

подскажите на нормальном языке что есть трубы в физическом плане? 

канал я так понял - диапазон , составляющий 1/128 всего диапазона, частоты есть. А про трубы как-то не догоняю что они есть.

alexvs
Offline
Зарегистрирован: 22.07.2014

Трубы бывают разные: стальные, чугунные, пластковые, маточные наконец - тоже трубы

В контексте nRF24 - Это идентификатор принимающего/передающего устройства на рабочем канале.

Toto_G
Offline
Зарегистрирован: 20.11.2015

alexvs пишет:

В контексте nRF24 - Это идентификатор принимающего/передающего устройства на рабочем канале.

по даташиту модуль может одновременно принимать по 6 трубам. или по 5-ти.

это значит максимальная скорость передачи в 2Мбс делится на 5?

a5021
Offline
Зарегистрирован: 07.07.2013

Это значит, что скорость делится на один.

alexvs
Offline
Зарегистрирован: 22.07.2014

В конкретный момент времени прием осуществляется только с 1 устройства - поэтому скрость не делится.

Toto_G
Offline
Зарегистрирован: 20.11.2015

alexvs пишет:

В конкретный момент времени прием осуществляется только с 1 устройства - поэтому скрость не делится.

 то есть скорость р2р - 2Мб\с,  но общая скорость при конфигурации звездой будет делиться на количество лучей. Например, 5 лучей, - по 400кб\с (средняя за единицу времени). И это в том случае, если будет безупречно устроена "очередь" радиообмена?

alexvs
Offline
Зарегистрирован: 22.07.2014

Да как вы не поймете, пусть хоть 100 лучей, какая разница, если в каждый отдельный момент времени прием/передача (радиообмен) ведется только с 1 конкретным устройством. Если вы будете вести передачу ОДНОВРЕМЕННО с 5 устройств, то часть информации будет теряться.

Тут немного про сетевой обмен http://tmrh20.github.io/RF24Network_Dev/Tuning.html

Toto_G
Offline
Зарегистрирован: 20.11.2015

почему не пойму. понял уже. вчера. спасибо за пояснения.

средняя скорость передачи за отрезок времени - например, приём с первого нода в течении 2сек со скоростью 2мбс, потом 2сек приём со второго нода со скоростью 2 мбс. ....... с 5-го нода 2 сек со скоростью с мбс. Потом по кругу. Получается за 10сек от каждого нода придёт 4мб, то есть средняя скорость передачи за отрезок времени - 400 кбс, при симметричной постоянной нагрузке. Понятно обьяснил? При этом ни один нод не должен мешать другому, строго распределённая очерёдность.

 

Toto_G
Offline
Зарегистрирован: 20.11.2015

Запустил сегодня нРФки с усилителем и внешней антенкой которые. Без конденсаторов на питании не хотели - связь есть, но очень нестабильна и на расстоянии 2м. С конденсаторами завелся получше, на 20м и 5 бетонных стен пробивает. Уже раза в 2  лучше нРФки без усилителя, простой. Но всё равно почему-то маловато, мне кажется. Гонял пример самый первый из библиотеки RF24 от TMRh20. Только мощность с минимума переставил на максимум. Битрейд оставил 1Мб\с.

 Добился кто-нибудь заявленных полкилометра "в чистом поле"? TMRh20 скинул ссылку на чела, он тестил центральный узел с нРФ с усилителем, а периферийные без усилителей. У него получилось 250-280м

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

так чем меньше битрейт тем чувствительнее приемник у этого модуля насколько помню

Toto_G
Offline
Зарегистрирован: 20.11.2015

а, вопрос забыл задать) у меня в периферийном модуле подключен был мультиметр на ток нРФки, и он показывает всего 30 мА. А по паспорту вроде как 120 мА должен. Эти 120 в момент только передачи, которая несколько мс  за цикл несколько секунд и поэтому мультик не ловит? или всё же мощность не раскачивается до максимальных дб?

jeka_tm пишет:

так чем меньше битрейт тем чувствительнее приемник у этого модуля насколько помню

да, всё правильно, это я тоже прочитал. как и влияние бетона, армированного заземлённой арматурой, и + штук 5-8 вифи передатчиков , свой и соседские, учитываю

std
Offline
Зарегистрирован: 05.01.2012

Заявленного можно добиться поместив передатчики на 50-метровые мачты, а наверху ещё двухметровую палку из радиопрозрачного материала, иначе слишком много посторонних факторов. На таких частотах не то что капот машины будет влиять - зависит даже от того, гнилое на пути сигнала стоит дерево или сухое, сидит ли на ветке этого дерева кот или просто птица. 2.4 ГГц экранирует ВСЁ, в чём есть любой металл, кремний (в т. ч. силикатное стекло), углерод (в т. ч. оргстекло и любые пластики), вода (в т. ч. водяной пар). Так что реально 300-400 м.

Трубой в терминологии maniacbug RF24 называется адрес.

Toto_G
Offline
Зарегистрирован: 20.11.2015

про трубы я понял уже.

завтра потестю на прямой видимости с 30м высоты (на 10-м этаже живу) , с преградой из 2-х силикатных стёкол и с помехами уже перечисленными(вифи трансляторы) на стороне центрального модуля.

 про помехи есть такое, даже когда встаёшь на линии связи - это заметно

Toto_G
Offline
Зарегистрирован: 20.11.2015

 Докладываю по результатам опыта про реальную дальность nRF24l01+ +PA +NLA.

Отправляющий и принимающий , и выдающий в сериал блок - на 2-х-метровом удлинителе усб, в 2-х метрах от открытого компа, в метре от широкого окна с 2-мя 3-х-мм стёклами в деревянной раме. Состоит из про мини, nRF24l01+ +PA +NLA, питание рф- от липо через линейный регуль 3,3в, не паяно, на проводах висит. Дом 10-этажный, этаж 10, высота метров 27-30. Вифи-роутеров - почти в каждой квартире, квартир 300. И ещё 100 в доме рядом. Перед окном - частный сектор.

  Периферийный модуль - состоит из про мини, nRF24l01+ +PA +NLA, питание рф- от липо через линейный регуль 3,3в. Висит всё на проводах, не паяно, сложил в картонную коробку, уплотнил пузырчатым полиэтиленом.

 Ещё надо дополнить, что без конденсаторов на входе нрфки работать не хотели, припаял на один 10мкф тантал и 50мкф электролит бочку, на второй 10мкф тантал и 100мкф электролит.

 Пример использовал первый из библиотеки, GettingStarted- как-то так называется. Изменил только мощность на макс, остальное по дефолту - канал (100 емнип), битрейд(1 мбс емнип).

  Результат - 800м (гугл ерт) в прямой видимости окна - связь стабильная, если хорошо направлена антена, если совсем чуть повернуться - протери вплоть до 100%. Дальше отойти не смог, там предприятие большое, огороженное.

  Бетон экранирует очень жестко. Вышел из квартиры и спустился на этаж - потери 100%.

В 100метрах зашёл за угол бетонного дома - 100% потери

Примерно 60-80см бетона (с 3-4-ым армированием) убивают сигнал на 100%

В целом теперь спокойно могу продавану с али отписать что получил и доволен ).

зы. ну и второй вывод - мультиметр на ток нрф показывет 30мА и это нормально для этого примера.