Easyelectronics.ru

Электроника для всех
Текущее время: 07 июл 2020, 20:57

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Протокол связи по радио между датчиками для IOT ?
СообщениеДобавлено: 09 ноя 2018, 12:57 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 1504
Привет!

Посоветуйте пожалуйста в какую сторону смотреть.

Радио часть на CC1101.
В настоящий момент реализован самописный протокол обмена, в котором в качестве ключа сообщения используется UNIC_ID контроллеров STM32. В сетке есть мастер, но инициализацию обмена может сделать и любой из датчиков послав сообщение со своим номером.

Посылка состоит из:

1) Преамбула - 0.4 сек. 0x55 (для того чтобы приемники перешли из спячки в активный режим)
2) UNIC_ID контроллера кому адресуется сообщение - 12 байт (или 12 -AA для мастера)
3) UNIC_ID контроллера от кого сообщение (12 байт)
4) Команда 1 байт. (доступны 4 команды 0x01, 0x02, 0x04, 0x08)
5) Длинна данных 1 байт.
6) Данные.
7) Контрольная сумма CRC

Ответ:
1) Преамбула - 10 ( 0x55) для синхронизации.
2) UNIC_ID - кому сообщение.
3) UNIC_ID - от кого сообщение
4) Команда 1 байт + 0x40 для ответа, или 0x80 для ошибки
5) Длинна данных 1 байт.
6) Данные.
7) CRC

Организация ячеистой структуры:
Мастер:
1) Преамбула.... (всем подьем)
2) 0x00 (12 штук - широковещательный)
3) Команда 1 байт ( 0x10 по порядку расчитайся)
4) UNIC_ID (xxxxxxxxxxxxxxxxxx) ты у нас номер 1
5) UNIC_ID (yyyyyyyyyyyyyyyyyy) ты у нас номер 2
.....
10) (000000000000000000000) - расчет окончен.

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

В общем сейчас в тепличных условиях на 3х устройствах все худо бедно вроде бы работает, устройства общаются между собой и забавно когда одного из них вырубаешь, 2 других начинают слать пакеты через соседа :)

Хотелось бы услышать кто то делал уже подобное или может быть есть готовый протокол обмена?

У меня больше нет в наличии платок с CC1100, и я не знаю как тут все повернется когда в сетке будет 20 или 30 устройств, основная проблема пока которую вижу это необходимо в памяти каждого устройства держать топологию сети.

P\S с сеткой на CC1100 когда есть один мастер и кучка слейвов - все взлетело с пол пинка, был просто реализован MODBUS ASCII по радиоканалу, но очень хочется поднять MESH


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Протокол связи по радио между датчиками для IOT ?
СообщениеДобавлено: 09 ноя 2018, 13:20 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Если уж так сильно хочется сеть то лучше делать только отдельные узлы которые могут ретранслировать команды иначе будет бардак и перегруз в оперативке и коде.
И зачем такие длинные ID ? У меня 2 байта, как раз хорошо ложится в стандартный Sync word для пакета. И не нужно будет основной МК напрягать лишними просыпаниями. Здорово экономит батарейки


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Протокол связи по радио между датчиками для IOT ?
СообщениеДобавлено: 09 ноя 2018, 16:41 
Заглядывает иногда

Зарегистрирован: 07 сен 2011, 16:28
Сообщения: 60
делали, проходили...

коллизии - главная проблема. где коллизии - там потери пакетов, ре-трансляции, перестройка топологии изза потерь и тд.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Протокол связи по радио между датчиками для IOT ?
СообщениеДобавлено: 11 ноя 2018, 23:20 
Заглядывает иногда

Зарегистрирован: 20 апр 2017, 20:33
Сообщения: 162
sed_alex, а какую библиотеку для реализации MODBUS ASCII использовали?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Протокол связи по радио между датчиками для IOT ?
СообщениеДобавлено: 11 ноя 2018, 23:42 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 1504
Mihail_kr писал(а):
sed_alex, а какую библиотеку для реализации MODBUS ASCII использовали?


Самописный обработчик.
Для ASCII же все просто, увидели в обработчике прерывания в приемном буфере 0x3A (старт) сбросили счетчик на 0 и пишем в буфер байтики до тех пор пока последовательно не прилетели 0x0D, 0x0A (окончание посылки)

Show "Обработчик для STM8S003"

Ну а далее пару функций которые данные преобразуют из ASCII в Hex и обратно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Протокол связи по радио между датчиками для IOT ?
СообщениеДобавлено: 12 ноя 2018, 04:02 
Заглядывает иногда

Зарегистрирован: 20 апр 2017, 20:33
Сообщения: 162
я имел ввиду что MODBUS же имеет всякие стандартные коды команд, структуры данных и т.п. в инете есть разные варианты библиотек, я думал вы какую-то из них применили.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Протокол связи по радио между датчиками для IOT ?
СообщениеДобавлено: 12 ноя 2018, 10:26 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 1504
Mihail_kr писал(а):
я имел ввиду что MODBUS же имеет всякие стандартные коды команд, структуры данных и т.п. в инете есть разные варианты библиотек, я думал вы какую-то из них применили.


Извиняюсь, я сначала не правильно вас понял.
Писал все с описания стандарта (Free modbus), т.е. была сделана поддержка основных стандартных команд (0x03,0x06,0x10) плюс lдобавлены некоторые свои команды.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB