реклама на сайте
подробности

 
 
> Сеть радиодатчиков, collision и SimpiciTI
turnon
сообщение Nov 22 2015, 18:49
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207



Нужно реализовать систему, которая будет собирать данные с датчиков температуры. Самая простая топология - звезда. Мастер - постоянно запитан. Слейвы (до 100 шт.) имеют батарейное питание и включаются на короткое время раз в 5-10 мин для передачи текущей температуры мастеру.

Собираюсь использовать CC1101 и протокол SimpliciTI, у него есть даже ретрансляторы, но они не нужны.

Но возникает одна проблема. Как избежать одновременной работы нескольких слейвов. Ведь при одновременной работе вместо пакета от одного слейва мастер получит кашу/мешанину и скорее всего не примет пакет вообще или отбросит его из-за несоответствия CRC.

И как я понял, в SimpliciTI эта проблема (коллизии) никак не решается.

Пока видится несколько вариантов решения, но ни один из них не вдохновляет.

1. В том же СС1101 есть технология под названием Clear Channel Assessment (CCA). Т.е. слейв перед отправкой может проверить, не занят ли канал другим слейвом. Но в этом случае при большом количестве слейвов некоторые могут очень долго ожидать свободного канала. К тому же во время ожидания будет использоваться батарейка. А слейв должен работать минимально возможное время, в отстальное время - сон.

2. Разделение по времени отправки пакета каждым слейвом. Непонятно как синхронизировать время. Даже если на каждом слейве есть RTC и время одинаковое, непонятно в какой момент слейв должен выполнять отправку.

Если у кого есть опыт реализации подобного, буду очень благодарен если поделитесь опытом/протоколом.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mcheb
сообщение Nov 23 2015, 03:20
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602



По прошествии некоторого времени датчики выстроятся во времени и коллизий не будет
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 23 2015, 04:31
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Раз мастер имеет неограниченное питание, пусть управляет всем обменом - распределяет тайм-слоты в эфире. Выбираете некоторый период опроса, разбиваете его на тайм-слоты количеством равным максимальному кол-ву слэйвов. В начале каждого слота мастер пусть передаёт короткую посылку, содержащую номер слота и его длительность и общее кол-во слотов и после этого переходит на приём до конца слота. Каждый слэйв имеет свой уникальный номер. Когда у него есть данные на передачу, он слушает эфир, ловит ближайшую метку - начало слота, определяет по ней сколько осталось времени до слота с номером, равным его уникальному номеру и засыпает на время чуть меньшее, чтобы проснуться перед началом своего слота.
Для такого алгоритма не нужен никакой беспроводной протокол, достаточно простого приёмо-передатчика типа nRF24L01.
Go to the top of the page
 
+Quote Post
Yogen
сообщение Jan 5 2016, 04:02
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 16-11-09
Из: Омск
Пользователь №: 53 657



Цитата(jcxz @ Nov 23 2015, 07:31) *
Раз мастер имеет неограниченное питание, пусть управляет всем обменом - распределяет тайм-слоты в эфире. Выбираете некоторый период опроса, разбиваете его на тайм-слоты количеством равным максимальному кол-ву слэйвов. В начале каждого слота мастер пусть передаёт короткую посылку, содержащую номер слота и его длительность и общее кол-во слотов и после этого переходит на приём до конца слота. Каждый слэйв имеет свой уникальный номер. Когда у него есть данные на передачу, он слушает эфир, ловит ближайшую метку - начало слота, определяет по ней сколько осталось времени до слота с номером, равным его уникальному номеру и засыпает на время чуть меньшее, чтобы проснуться перед началом своего слота.
Для такого алгоритма не нужен никакой беспроводной протокол, достаточно простого приёмо-передатчика типа nRF24L01.

Здравствуйте.
Аналогичная задача – мастер с неограниченным питанием и слэйвы на аккумуляторах, всё на CC1101. Интуитивно пришёл к такому же алгоритму, какой предложили вы.
Но в чём необходимость обмена по тайм-слотам?
Возможен ли такой вариант (какие подводные камни):
1 Все слэйвы спят.
2 Включается мастер и рассылает широковещательный запрос.
3. Все слэйвы просыпаются по радио-запросу. Насколько я понял из доков на СС1101, у него есть соответствующий режим WOR (Wake-On-Radio).

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

5. Ну и на этом как бы всё, все спят дальше.


P.S. Может кто в курсе, при приёме пакета на CC1101, я получаю адрес того кто его отправил (на уровне драйвера)? В исходниках не нахожу соответствующего регистра.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 5 2016, 08:12
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Yogen @ Jan 5 2016, 10:02) *
Но в чём необходимость обмена по тайм-слотам?
Возможен ли такой вариант (какие подводные камни):
1 Все слэйвы спят.
2 Включается мастер и рассылает широковещательный запрос.
3. Все слэйвы просыпаются по радио-запросу. Насколько я понял из доков на СС1101, у него есть соответствующий режим WOR (Wake-On-Radio).

1. Не знаю как там сделано в конкретном чипе, но чтобы он что-то принял, у него должен быть включен приёмник, а приёмник кушает много (имхо - на порядки больше просто спящего МК с выкл. радио-частью) и если передача из центра может произойти в любой момент, то значит приёмник должен быть включен всегда. И никакого малого потребления в этом случае не получите.
2. Если у Вас по каждому кадру от центра будут просыпаться все слэйвы, опять крайне не эффективно - захотел центр пообщаться плотно с одним узлом (какой-нить большой журнал считать с него) - и в результате в течение всего обмена все слэйвы в сети спать не будут.
Go to the top of the page
 
+Quote Post
Yogen
сообщение Jan 5 2016, 08:41
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 16-11-09
Из: Омск
Пользователь №: 53 657



Цитата(jcxz @ Jan 5 2016, 12:12) *
1. Не знаю как там сделано в конкретном чипе, но чтобы он что-то принял, у него должен быть включен приёмник, а приёмник кушает много (имхо - на порядки больше просто спящего МК с выкл. радио-частью) и если передача из центра может произойти в любой момент, то значит приёмник должен быть включен всегда. И никакого малого потребления в этом случае не получите.
2. Если у Вас по каждому кадру от центра будут просыпаться все слэйвы, опять крайне не эффективно - захотел центр пообщаться плотно с одним узлом (какой-нить большой журнал считать с него) - и в результате в течение всего обмена все слэйвы в сети спать не будут.


1. Думаю так и есть. Но именно чтобы "что-то принял", а чтобы просто проснулся похоже достаточно запроса из эфира. А принять можно и при следующем запросе, через интервал, необходимый для полного пробуждения. Вот дока от TI по этой фитче CC1101 http://www.ti.com/lit/an/swra126b/swra126b.pdf. Планирую так будить RF, а он уже через GPIO Разбудит МК.

2. В моём случае не критично, т.к. к этим слэйвам мастер будет приезжать очень редко, раз в неск. недель. Фактически это летаргический сон.

Сообщение отредактировал Yogen - Jan 5 2016, 08:43
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 5 2016, 08:50
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Yogen @ Jan 5 2016, 14:41) *
1. Думаю так и есть. Но именно чтобы "что-то принял", а чтобы просто проснулся похоже достаточно запроса из эфира. А принять можно и при следующем запросе, через интервал, необходимый для полного пробуждения. Вот дока от TI по этой фитче CC1101

Как определить "запрос" это или просто помеха прилетела из эфира? Без включённого приёмника, имхо - никак. А если рядом у Вас что-то работает в том-же диапазоне? Вафля например. Всё время просыпаться от неё будете.
Go to the top of the page
 
+Quote Post
Yogen
сообщение Jan 5 2016, 09:00
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 16-11-09
Из: Омск
Пользователь №: 53 657



Цитата(jcxz @ Jan 5 2016, 11:50) *

Как определить "запрос" это или просто помеха прилетела из эфира? Без включённого приёмника, имхо - никак. А если рядом у Вас что-то работает в том-же диапазоне? Вафля например. Всё время просыпаться от неё будете.

Надеюсь, просыпается по осмысленным сигналам в эфире, например по преамбуле пакета, нужно вчитаться в доку.
Но предложенный вами вариант с тайм-слотами , если я правильно понял вообще, подразумевает постоянную прослушку эфира или периодическое пробуждение по таймеру на МК?! Лучше уж случайно/иногда от помехи, чем постоянно или периодически.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 5 2016, 09:08
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Yogen @ Jan 5 2016, 15:00) *
Но предложенный вами вариант с тайм-слотами , если я правильно понял вообще, подразумевает постоянную прослушку эфира или периодическое пробуждение по таймеру на МК?! Лучше уж случайно/иногда от помехи, чем постоянно или периодически.

Конечно периодическое пробуждение. Прочитайте мой пост внимательнее. В моём случае приёмник почти всё время полностью выключен. Если связь у Вас возникает редко, то таймслоты можно сделать большими (несколько секунд, а то и минут; в зависимости от требуемого времени реакции на опрос), а время вкл. состояния приёмника - миллисекунды. В этом случае потребление включенного приёмника размазывается в тысячи и десятки тысяч раз.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- turnon   Сеть радиодатчиков, collision и SimpiciTI   Nov 22 2015, 18:49
- - rx3apf   Рандомизируйте момент отправки пакета. Привязав к ...   Nov 22 2015, 19:17
- - x893   Это всё есть уже в SimpliciTi. задается #define .....   Nov 22 2015, 19:29
|- - turnon   Цитата(jcxz @ Nov 23 2015, 08:31) Раз мас...   Nov 23 2015, 07:37
||- - jcxz   Цитата(turnon @ Nov 23 2015, 13:37) А по ...   Nov 23 2015, 14:17
||- - Ariel   Похожая тема здесь   Nov 23 2015, 17:23
||- - turnon   Цитата(jcxz @ Nov 23 2015, 18:17) Не обяз...   Nov 24 2015, 11:22
|- - Yogen   Читал внимательно. Цитата(jcxz @ Nov 23 2015...   Jan 5 2016, 09:22
|- - jcxz   Цитата(Yogen @ Jan 5 2016, 15:22) Я про т...   Jan 5 2016, 11:32
- - x893   Мне кажется что с 2.4GHz дальность больше 100 м - ...   Jan 5 2016, 07:24
- - rx3apf   Приемник по-любому надо включить, чтобы понять, пе...   Jan 5 2016, 09:40
|- - Yogen   Цитата(rx3apf @ Jan 5 2016, 12:40) Если и...   Jan 5 2016, 09:56
- - rx3apf   Как вариант - да. У себя я использовал ежесекундны...   Jan 5 2016, 10:07
|- - Yogen   Цитата(rx3apf @ Jan 5 2016, 13:07) Как ва...   Jan 5 2016, 10:20
|- - Aner   QUOTE (rx3apf @ Jan 5 2016, 14:07) Как ва...   Jan 5 2016, 10:50
|- - Yogen   Цитата(Aner @ Jan 5 2016, 13:50) 10 ms по...   Jan 5 2016, 11:43
|- - rx3apf   Цитата(Yogen @ Jan 5 2016, 14:43) Рисунок...   Jan 5 2016, 12:16
|- - jcxz   Цитата(Yogen @ Jan 5 2016, 17:43) Почему ...   Jan 5 2016, 13:48
- - Aner   Как во многом, - "палка о двух концах". ...   Jan 5 2016, 12:13
|- - Yogen   Цитата(Aner @ Jan 5 2016, 15:13) 1...2 Мб...   Jan 5 2016, 12:32
- - Aner   jcxz догадаться, додумать самому никак? От проблем...   Jan 5 2016, 14:09
|- - jcxz   Цитата(Aner @ Jan 5 2016, 20:09) jcxz дог...   Jan 5 2016, 14:37
|- - Yogen   Цитата(jcxz @ Jan 5 2016, 17:37) Сделайте...   Jan 5 2016, 14:48
- - Yogen   Даже при таком тайминге 10/1000 ms и потреблении R...   Jan 5 2016, 14:27
- - Yogen   К вопросу «использовать режим WOR или запускать ре...   Jan 7 2016, 15:18


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01531 секунд с 7
ELECTRONIX ©2004-2016