Несколько передатчиков и один приемник nRF24L01 — нужен совет..

android.mk
Offline
Зарегистрирован: 16.01.2017

Всем привет!

Решение с несколькими приемниками и одним передатчиком на обычных радиомодулях я встречал, у меня стоит обратная задача - отправка с нескольких передатчиков nRF24L01 на один такой приемник (модуль выбирался по дальности, нужно как минимум 300-400м).

Реально ли и программно и аппаратно реализовать? (в сторону написания своего протокола, по понятным причинам, я даже не смотрю:) Подключать всё планировал к НАНО, необходимо (только) принимать данные от десятка передатчиков. Нужно для зимней рабалки))

Благодарю за дельные советы (кроме пойти и купить готовый девайс:)
 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

android.mk пишет:

Всем привет!

Решение с несколькими приемниками и одним передатчиком на обычных радиомодулях я встречал, у меня стоит обратная задача - отправка с нескольких передатчиков nRF24L01 на один такой приемник (модуль выбирался по дальности, нужно как минимум 300-400м).

Реально ли и программно и аппаратно реализовать? (в сторону написания своего протокола, по понятным причинам, я даже не смотрю:) Подключать всё планировал к НАНО, необходимо (только) принимать данные от десятка передатчиков. Нужно для зимней рабалки))

Благодарю за дельные советы (кроме пойти и купить готовый девайс:)
 

делайте на ESP8266 и будет вам счастье

android.mk
Offline
Зарегистрирован: 16.01.2017

Я так понимаю ESP8266 с его штатной антеной это примерно 300м и wi-fi немного смущает.. а с nRF24L01 совсем никак?

AlexeySh
Offline
Зарегистрирован: 16.01.2017

 А какая разница один передатчик - несколько приемников и один приемник - несколько передатчиков? Протокол двухсторонний так что разницы не вижу. Есть правда другой нюанс - библиотека, которая мне попадалась позволяет подключить максимум 1 к 6 устройствам. Так что если у вас их десять придется её исправлять.

А вообще сам сейчас работаю над подобным устройством, как дойдет до программы можно будет обсудить.

android.mk
Offline
Зарегистрирован: 16.01.2017

AlexeySh пишет:

позволяет подключить максимум 1 к 6 устройствам.

Это печально. Хорошо, а если рядом (очень рядом) размещать 2 приемника (если вынести за скобки то что это извращение) - они могут как-то друг-другу мешать?

android.mk
Offline
Зарегистрирован: 16.01.2017

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

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

android.mk пишет:

Всем привет!

Решение с несколькими приемниками и одним передатчиком на обычных радиомодулях я встречал, у меня стоит обратная задача - отправка с нескольких передатчиков nRF24L01 на один такой приемник (модуль выбирался по дальности, нужно как минимум 300-400м).

Реально ли и программно и аппаратно реализовать? (в сторону написания своего протокола, по понятным причинам, я даже не смотрю:) Подключать всё планировал к НАНО, необходимо (только) принимать данные от десятка передатчиков. Нужно для зимней рабалки))

Благодарю за дельные советы (кроме пойти и купить готовый девайс:)
 

android.mk, если почитать datasheet то внезапно выяснится, что на nRF24L01 можно организовать по 6 логических каналов в каждом из более, чем 250 физических каналов.

UPD: .... из 125 физических каналов

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

esp8266 имеет мощность не ниже 300 милливат, esp-07 этой серии имеет максимальную дальность более 4 километров по прямой местности, можно подключить внешнюю антенну, из недостатков - малая память, 1 мегабайт )))

Сейчас такой пытаю, по чувствительности приёмного тракта очень достойная микросхема, в своих бабуинах видит с уровнем минус 93 (надеюсь децибел), внешняя антенна 3dbi, то-есть не хуже чем чип BCM, а может даже несколько лучше )))

 

spa-sam
Offline
Зарегистрирован: 14.12.2012

На днях собрал пару передатчиков на rfm69hw 868 MHz. Очень  достойная вещь. Дальность до 500м на открытом пространстве. Опробовал в городской застройке-пробивает один подъезд в торец дома + многоэтажку попути = около 250 метров. Передатчики на обычном 82мм проводке из витой пары. Приёмник был установлен просто на рабочем столе. Передатчик + мк 168 в режиме сна 16 мкА. В режиме передачи на макс мощности 20 мА (то что "успевает" словить мультиметр).

Есть RSSI, шифрование, буфер 66  байт,встроенный температурный датчик и т.д.

AlexeySh
Offline
Зарегистрирован: 16.01.2017

Andy пишет:

android.mk пишет:

Всем привет!

Решение с несколькими приемниками и одним передатчиком на обычных радиомодулях я встречал, у меня стоит обратная задача - отправка с нескольких передатчиков nRF24L01 на один такой приемник (модуль выбирался по дальности, нужно как минимум 300-400м).

Реально ли и программно и аппаратно реализовать? (в сторону написания своего протокола, по понятным причинам, я даже не смотрю:) Подключать всё планировал к НАНО, необходимо (только) принимать данные от десятка передатчиков. Нужно для зимней рабалки))

Благодарю за дельные советы (кроме пойти и купить готовый девайс:)
 

android.mk, если почитать datasheet то внезапно выяснится, что на nRF24L01 можно организовать по 6 логических каналов в каждом из более, чем 250 физических каналов.

UPD: .... из 125 физических каналов

А если теперь подумать, что это означает. То станет понятно, что одновременно может приниматься 6 логических каналов. Так как если мы меняем физический, то не можем принимать те каналы, которые принимались в другом физическом канале.

Так что если нужно больше 6 каналов, просто ставим 2 модуля и имеем уже 12 каналов приема. И т. д. Если при этом их разнести по физическим каналам и временным интервалам в режиме передачи, то все будет работать прекрасно.

 

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

я думал как то на эту тему. что будет если 2 и более передатчиков одновременно будут вещать? ничего хорошего

чтобы было понятнее передатчики это будут датчики, а приемник база

тогда все датчики переводим в режим приемников. а базу в режим передатчика и он сам говорит кому сейчас "говорить". затем датчик к которому обращались (инфа содержится в посылке) переключается в режим передатчика, а база в режим приемника. и по новой. но делать это я предполагал если не получится с каналами 

radio.openReadingPipe(1,pipe);      // Открываем 1 канал приема

но в передатчике нет указания канала. значит у каждого передатчика свой адрес

radio.openWritingPipe(pipe);        // Открываем канал передачи

короче я не разбирался. есть несколько каналов, у каждого свой адрес, но как считать с конкретного канала я не понял

android.mk
Offline
Зарегистрирован: 16.01.2017

AlexeySh пишет:

просто ставим 2 модуля и имеем уже 12 каналов приема

а 2 модуля в одной ардуинке будут хорошо дружить? Ног на ней вроде бы хватает, если в качестве индикаторов использовать не светодиоды а какой-нить дисплей.

.. и тогда встает вопрос как использовать одну общую антену для нескольких модулей...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

android.mk пишет:

... и тогда встает вопрос как использовать одну общую антену для нескольких модулей...

"...куда вас сударь...понесло..."

Никак, в сотовом телефоне для этого (приём-передача) используется циркулятор )))

модулей с динамическим диапазоном более 130 дб не существует
 

AlexeySh
Offline
Зарегистрирован: 16.01.2017

android.mk пишет:

AlexeySh пишет:

просто ставим 2 модуля и имеем уже 12 каналов приема

а 2 модуля в одной ардуинке будут хорошо дружить? Ног на ней вроде бы хватает, если в качестве индикаторов использовать не светодиоды а какой-нить дисплей.

.. и тогда встает вопрос как использовать одну общую антену для нескольких модулей...

Модули если я не ошибаюсь по SPI подключаются? ATMega328P имеет два интерфейса SPI. Программно их можно и больше реализовать. В общем как дойду до программы напишу поподробнее, пока есть вопросы. У меня тут тоже нужно два различных устройства по SPI подключить: беспроводный модуль и счетчик. Нужно смотреть исходный код библиотек. Возможно где то придется переписывать.

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

AlexeySh пишет:

А если теперь подумать, что это означает. То станет понятно, что одновременно может приниматься 6 логических каналов. Так как если мы меняем физический, то не можем принимать те каналы, которые принимались в другом физическом канале.

Так что если нужно больше 6 каналов, просто ставим 2 модуля и имеем уже 12 каналов приема. И т. д. Если при этом их разнести по физическим каналам и временным интервалам в режиме передачи, то все будет работать прекрасно.

После того как подумал, снова в даташит. Одновременной передачи быть не может по определению. 6 каналов организуются на одной частоте, при этом в любой момент времени вещать может только один из шести.

AlexeySh
Offline
Зарегистрирован: 16.01.2017

Ух. Как все сложно у Вас. А в чем проблема если один вещает? А в следующий момент времени другой? И так по кругу.

Ладно, спорить пока не о чем. Как напишу код для своей системы, тогда и выложу алгоритм получения сигналов с 6 каналов.

android.mk
Offline
Зарегистрирован: 16.01.2017

ua6em пишет:

"...куда вас сударь...понесло..."

недостаток своих знаний придется компенсировать размерами будущего девайса )

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

AlexeySh пишет:

Ух. Как все сложно у Вас. А в чем проблема если один вещает? А в следующий момент времени другой? И так по кругу.

Никаких проблем, вешаем по 6 передатчиков на каждый из 125 физических каналов, всего 750, и разговариваем один-на-один с каждым.

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015

ua6em пишет:

esp8266 имеет мощность не ниже 300 милливат, esp-07 этой серии имеет максимальную дальность более 4 километров по прямой местности,

А, можно подробней про эти параметры особенно про мощность 300 милливат.

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ES8266 все версии имеют на передачу +25дбм это 300 милливатт, по приёму на антенну 3dbi принимают с уровнем Минус 93дб, это сравниво с чипсетами BCM и атерос, мощная версия nRF24L01 всего +20дб, приём не мерял, модули есть, посмотрел и положил в коробочку, занимаюсь каналом на ESP. Как точка доспупа будет orange pi

 

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015

ua6em пишет:

ES8266 все версии имеют на передачу +25дбм это 300 милливатт,

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

  

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

oleg_kazakof пишет:

ua6em пишет:

ES8266 все версии имеют на передачу +25дбм это 300 милливатт,

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

 

Померять есть чем, но надо к ребятам сходить )))
в TP-LINK 741 чипсет имеет возможность вещать до 300 милливат, если не ошибаюсь, выставьте страна применения - УСА, а вот ставим Россия и честные 100 милливатт )))
В жизни всё относительно

На самой ESP читаем - PA +25dbm

AlexeySh
Offline
Зарегистрирован: 16.01.2017

AlexeySh пишет:

android.mk пишет:

AlexeySh пишет:

просто ставим 2 модуля и имеем уже 12 каналов приема

а 2 модуля в одной ардуинке будут хорошо дружить? Ног на ней вроде бы хватает, если в качестве индикаторов использовать не светодиоды а какой-нить дисплей.

.. и тогда встает вопрос как использовать одну общую антену для нескольких модулей...

Модули если я не ошибаюсь по SPI подключаются? ATMega328P имеет два интерфейса SPI. Программно их можно и больше реализовать. В общем как дойду до программы напишу поподробнее, пока есть вопросы. У меня тут тоже нужно два различных устройства по SPI подключить: беспроводный модуль и счетчик. Нужно смотреть исходный код библиотек. Возможно где то придется переписывать.

Дошел, отвечаю. Все намного проще. Есть два варианта.

Первый такой. Вешаем 2 модуля на 1 интерфейс SPI. Выводы SS каждого модуля вешаем на отдельные пины Ардуино. Подачей LOW на соотвествующий вывод подключаемся к нужному нам модулю. Обмен данными с модулями осуществляем в цикле поочередно. Если нужно отслеживать состояние модулей, подключаем также вывод IRQ на вход Ардуино, который может работать с внешними прерываниями. Тогда мы можем отследить получение например модулем информации и подключиться к нему по SPI для её загрузки. Ещё можно CP на отдельные пины подвесить, чтобы быстро переключать модули в режим приема или передачи.

Второй способ. Подправляем ручками библиотеку SPI так, чтобы она работала с двумя SPI интерфейсами. Минус - второй SPI на тех же выводах, через которые заливаются скетчи в Ардуино. Так что возможно при заливке скетча придется отключать модуль. В принципе проблему решает подтягивающий резистор на SS этого модуля.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Алекс, а про какую такую платформу вы говорите, что у неё 2 SPI?

AlexeySh
Offline
Зарегистрирован: 16.01.2017

У микроконтроллера ATmega328 два SPI. Любая платформа на его основе: новая UNO, MINI и т. д. имеет два аппаратных SPI интерфейса. Просто разработчики библиотеки SPI для Ардуино не стали себя озадачивать добавлением поддержки второго интерфейса в библиотеку. Поэтому библиотека работает только с тем SPI, который подвешен на разьем ICSP. Второй интерфейс по совместительству является UART и используется в Ардуино только в таком качестве.

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

AlexeySh я тебе не верю. докажи

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Есть такое, UART можно запустить как USART, подобие SPI. Только формат данных (старт- и стоп-биты, четность) вроде остаётся, что помешает nRF.

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015

ua6em пишет:

oleg_kazakof пишет:

ua6em пишет:

ES8266 все версии имеют на передачу +25дбм это 300 милливатт,

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

 

Померять есть чем, но надо к ребятам сходить )))
в TP-LINK 741 чипсет имеет возможность вещать до 300 милливат, если не ошибаюсь, выставьте страна применения - УСА, а вот ставим Россия и честные 100 милливатт )))
В жизни всё относительно

На самой ESP читаем - PA +25dbm

Вы рекламировали esp8266 на связь 4км. , а теперь уже TP-LINK 741(я незнаю что это такое)  сделайте реальное устройство на связь 4км. при  разрешонной мощности в этом диапозоне частот РФ, тогда я обращюсь к Вам в раздел исполнители и закажу устройство.

  

AlexeySh
Offline
Зарегистрирован: 16.01.2017

jeka_tm пишет:

AlexeySh я тебе не верю. докажи

Даташиты читать умеете? Открываете даташит на ATmega328/P на странице 254 и читаете раздел:

USARTSPI - USART in SPI Mode

Там все расписано. Полноценный SPI с поддержкой всех четырех режимов работы интерфейса.

Поправка. Не совсем полноценный, так как работает только как Master. Но для данного случая как раз то, что нужно. Вряд ли вы будете Ардуино как Slave цеплять к беспроводному модулю.

AlexeySh
Offline
Зарегистрирован: 16.01.2017
{
UBRRn = 0;
/* Setting the XCKn port pin as output, enables master mode. */
XCKn_DDR |= (1<<XCKn);
/* Set MSPI mode of operation and SPI data mode 0. */
UCSRnC = (1<<UMSELn1)|(1<<UMSELn0)|(0<<UCPHAn)|(0<<UCPOLn);
/* Enable receiver and transmitter. */
UCSRnB = (1<<RXENn)|(1<<TXENn);
/* Set baud rate. */
/* IMPORTANT: The Baud Rate must be set after the transmitter is enabled */
UBRRn = baud;
}

Код для инициализации интерфейса в режиме SPI

 

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

хорошо. буду знать. правда остаться без uart не всегда возможно, но как вариант

android.mk
Offline
Зарегистрирован: 16.01.2017

AlexeySh, спасибо за ценную инфу, железяки в дороге, как только приедут можно будет всё попробовать, пока по характеристикам и отзывам nRF24L01 очень нарвятся (ну и цене тоже))

По дальности модуля без антены советуют правда не обнадежваться, расчитывать максимум на 100м.

AlexeySh
Offline
Зарегистрирован: 16.01.2017

По дальности - используйте внешнюю антенну с дополнительным усилением. На открытой местности без гор (а это по-моему как раз ваш случай) должно и подальше чем 100 м работать.

По надежности работы для ответственных применений я бы предпочел Bluetooth Smart 4.2 или выше. Так как nRF24L01 не всегда стабильно срабатывает при определенных сигналах, то возможно придется подгонять протокол обмена под эти особенности.

semen-pro
Offline
Зарегистрирован: 16.02.2014

Я как-то подключал 2 передатчика по одному логическому каналу и все работало.
Для этого, передаем массив, в котором,  в одной из ячеек, пописываем номер  передатчика

payload[0] = 1; // Передатчик 1
payload[0] = 2; // Передатчик 2

И так далее,  в остальных ячейках массива передаем пользовательские данные.
Должно работать, хоть это и грязный хак.
Т.к., каждый передатчик все равно "добьется" и дошлет свой пакет.

AlexQ
Offline
Зарегистрирован: 05.02.2020

android.mk пишет:

Всем привет!

Решение с несколькими приемниками и одним передатчиком на обычных радиомодулях я встречал, у меня стоит обратная задача - отправка с нескольких передатчиков nRF24L01 на один такой приемник (модуль выбирался по дальности, нужно как минимум 300-400м).

Реально ли и программно и аппаратно реализовать? (в сторону написания своего протокола, по понятным причинам, я даже не смотрю:) Подключать всё планировал к НАНО, необходимо (только) принимать данные от десятка передатчиков. Нужно для зимней рабалки))

Благодарю за дельные советы (кроме пойти и купить готовый девайс:)
 

Доброго, получилось что то собрать? Задался такой же целью, для жерлиц на щуку.