|
Сеть радиодатчиков, collision и SimpiciTI |
|
|
|
Nov 22 2015, 18:49
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Нужно реализовать систему, которая будет собирать данные с датчиков температуры. Самая простая топология - звезда. Мастер - постоянно запитан. Слейвы (до 100 шт.) имеют батарейное питание и включаются на короткое время раз в 5-10 мин для передачи текущей температуры мастеру.
Собираюсь использовать CC1101 и протокол SimpliciTI, у него есть даже ретрансляторы, но они не нужны.
Но возникает одна проблема. Как избежать одновременной работы нескольких слейвов. Ведь при одновременной работе вместо пакета от одного слейва мастер получит кашу/мешанину и скорее всего не примет пакет вообще или отбросит его из-за несоответствия CRC.
И как я понял, в SimpliciTI эта проблема (коллизии) никак не решается.
Пока видится несколько вариантов решения, но ни один из них не вдохновляет.
1. В том же СС1101 есть технология под названием Clear Channel Assessment (CCA). Т.е. слейв перед отправкой может проверить, не занят ли канал другим слейвом. Но в этом случае при большом количестве слейвов некоторые могут очень долго ожидать свободного канала. К тому же во время ожидания будет использоваться батарейка. А слейв должен работать минимально возможное время, в отстальное время - сон.
2. Разделение по времени отправки пакета каждым слейвом. Непонятно как синхронизировать время. Даже если на каждом слейве есть RTC и время одинаковое, непонятно в какой момент слейв должен выполнять отправку.
Если у кого есть опыт реализации подобного, буду очень благодарен если поделитесь опытом/протоколом.
|
|
|
|
|
 |
Ответов
|
Nov 23 2015, 04:31
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Раз мастер имеет неограниченное питание, пусть управляет всем обменом - распределяет тайм-слоты в эфире. Выбираете некоторый период опроса, разбиваете его на тайм-слоты количеством равным максимальному кол-ву слэйвов. В начале каждого слота мастер пусть передаёт короткую посылку, содержащую номер слота и его длительность и общее кол-во слотов и после этого переходит на приём до конца слота. Каждый слэйв имеет свой уникальный номер. Когда у него есть данные на передачу, он слушает эфир, ловит ближайшую метку - начало слота, определяет по ней сколько осталось времени до слота с номером, равным его уникальному номеру и засыпает на время чуть меньшее, чтобы проснуться перед началом своего слота. Для такого алгоритма не нужен никакой беспроводной протокол, достаточно простого приёмо-передатчика типа nRF24L01.
|
|
|
|
|
Nov 23 2015, 07:37
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(jcxz @ Nov 23 2015, 08:31)  Раз мастер имеет неограниченное питание, пусть управляет всем обменом - распределяет тайм-слоты в эфире. Выбираете некоторый период опроса, разбиваете его на тайм-слоты количеством равным максимальному кол-ву слэйвов. В начале каждого слота мастер пусть передаёт короткую посылку, содержащую номер слота и его длительность и общее кол-во слотов и после этого переходит на приём до конца слота. Каждый слэйв имеет свой уникальный номер. Когда у него есть данные на передачу, он слушает эфир, ловит ближайшую метку - начало слота, определяет по ней сколько осталось времени до слота с номером, равным его уникальному номеру и засыпает на время чуть меньшее, чтобы проснуться перед началом своего слота. Для такого алгоритма не нужен никакой беспроводной протокол, достаточно простого приёмо-передатчика типа nRF24L01. Похоже на рабочий сценарий. А по этому сценарию просыпаться слейву надо всегда два раза? Один раз для ловли метки, второй раз - для собственно передачи пакета во время своей метки?
|
|
|
|
|
Nov 24 2015, 11:22
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(jcxz @ Nov 23 2015, 18:17)  Не обязательно. Так как после первой передачи слэйв уже знает размер слота и кол-во слотов, он может сразу рассчитать следующую точку просыпания. И, если у Вас в системе в процессе работы не меняются эти параметры, просыпаться будет уже только один раз на передачу. Ну или просыпаться через каждые N отправок для синхронизации меток (времени).
|
|
|
|
Сообщений в этой теме
turnon Сеть радиодатчиков, collision и SimpiciTI Nov 22 2015, 18:49 rx3apf Рандомизируйте момент отправки пакета. Привязав к ... Nov 22 2015, 19:17 x893 Это всё есть уже в SimpliciTi. задается #define ..... Nov 22 2015, 19:29    Ariel Похожая тема здесь Nov 23 2015, 17:23  Yogen Цитата(jcxz @ Nov 23 2015, 07:31) Раз мас... Jan 5 2016, 04:02   jcxz Цитата(Yogen @ Jan 5 2016, 10:02) Но в чё... Jan 5 2016, 08:12    Yogen Цитата(jcxz @ Jan 5 2016, 12:12) 1. Не зн... Jan 5 2016, 08:41     jcxz Цитата(Yogen @ Jan 5 2016, 14:41) 1. Дума... Jan 5 2016, 08:50      Yogen Цитата(jcxz @ Jan 5 2016, 11:50)
Как опр... Jan 5 2016, 09:00       jcxz Цитата(Yogen @ Jan 5 2016, 15:00) Но пред... Jan 5 2016, 09:08  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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|