Знаток
Регистрация: 06.12.2009
Сообщений: 825
Репутация: 114
![]() ![]() |
Стоят несколько устройств в радиусе 20 м. Управляют реле, измеряют температуры. Главное устройство принимает от них данные и отправляет команды на вкл реле и т.д.
Имею радиомодули hc-12, которые являются uart удлинителями. Сейчас реализовал так: Главное устройство по очереди опрашивает каждую точку и ожидает от него ответ. Если ответа нет, то повторно отправляет запрос, выдает ошибку и опрашивает след устройство. На низкой частоте опроса это нормально работает. Внеслись изменения в проект. Теперь 50 точек, и одна главная для сбора инфы. И каждая из точек отправляет данные по своему событию с случайной периодичностью 0,5 ... 10 с. ВОПРОС: Как лучше мне собирать данные ? Данные желательно принимать с минимальной задержкой. Как вариант , мне пришло только если МК не успел отправить данные и пришли новые, буферизировать и отправлять дождавшись своей очереди. Может еще как-то можно ? |
||
Оценка
|
Гуру
Регистрация: 28.06.2012
Сообщений: 5,034
Репутация: 1226
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Я бы делал по-другому.
Все, как вы и описали. Как и прежде, все точки пассивны. На каждые 20 точек - по базе, как у вас. База вначале посылает свой номер. Если точка обслуживается этой базой, то она отвечает на запрос, иначе не отвечает. Алгоритм работы - тот, что вы описали - база активна, точки пассивны и без запроса от базы в эфир не выходят. Дальше - над базами (у вас их будет три) есть еще одна, самая главная база, она имеет свой номер, такой, что обычные точки на ее запросы не отвечают, и собирает информацию с подчиненных баз ... Я делал нечто подобное, но у меня были большие объемы данных (десятки - сотни килобайт) и всего 10 точек. А у вас данных, похоже, совсем немного. У меня тоже был UART, на скорости 115200. Но в качестве радиоудлинителей я использовал BlueTooth - модули. Там уже полностью решена проблема конфликтов в эфире, ибо борьба с ними заложена в протоколе BlueTooth (перескоки по частоте).
Последний раз редактировалось kovigor; 05.04.2020 в 19:34.
|
||
Оценка
|
Специалист
Регистрация: 22.09.2010
Адрес: г. Донецк
Сообщений: 873
Репутация: 381
![]() ![]() ![]() ![]() |
Цитата:
Цитата:
Если же HC-12 по скорости не вытягивает, то, вероятно, можно оптимизировать пакеты данных, например отключить Automatic Packet Handler, и грузить данные прямо в FIFO буфер. Во всяком случае, чип Si4463 это позволяет. Т.е. убрать из пакетов данных все "довески", урезать длину посылок по максимуму. В самой посылке явно в символьном виде передавать номер устройства, команду и данные, а саму контрольную сумму накатывать вручную своим микроконтроллером. Т.е. использовать что-то вроде режима прозрачной передачи или широковещательной посылки, если возможно. У некоторых трансиверов это позволяет существенно ускорить процедуры обмена. Но смотря что позволяет HC-12, ведь там еще есть какой-то STM08 микроконтроллер. А вообще, 50 точек - это много. Может посмотреть в сторону ZigBee? |
||
Оценка
|
Знаток
Регистрация: 06.12.2009
Сообщений: 825
Репутация: 114
![]() ![]() |
Цитата:
Спасибо за рекомендации, попробую отключить Automatic Packet Handler. Думаю, если не выйдет с HC-12, то буду пробовать что-то из ZigBee. Там конечно дороже. Я делал несколько проектов с применением HC-12, при малых данных они отлично зарекомендовали себя. |
||
Оценка
|
Гуру
Регистрация: 28.06.2012
Сообщений: 5,034
Репутация: 1226
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Мне вообще не нравится идея с радиомодулями на 433 МГц, ибо это диапазон замусорен донельзя. Например, его используют автосигналки. В этом смысле ZigBee или BlueTooth гораздо лучше, да и проблема коллизий там уже решена ...
|
||
Оценка
|
Гуру
Регистрация: 08.05.2006
Адрес: москва
Сообщений: 8,302
Репутация: 2224
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Стоят несколько устройств в радиусе 20 м. Управляют реле, измеряют температуры. Главное устройство принимает от них данные и отправляет команды на вкл реле и т.д.
стоит ли из-за 20 метров мудрить с радиоканалом? Скорости мизерные. Можно и двум проводочкам и снимать инф и управлять. В серии есть и термометры и адресные ключи..... Всё разработано именно под промышленные системы автомаизации .Данный протокол разработан корпорацией Dallas Semiconductor (сейчас Maxim Integrated)... http://avr.ru/beginer/understand/1wire 1-wire это интерфейс, позволяющий строить сети из устройств с топологией общая шина, один ведущий – много ведомых. Каждое устройство имеет свой собственный уникальный 64-битный адрес. Для двухсторонней передачи сигналов |
||
Оценка
|
Гуру
Регистрация: 08.05.2006
Адрес: москва
Сообщений: 8,302
Репутация: 2224
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
в догонку перечень устройств https://category.alldatasheet.com/in...1-WIRE&sPage=1
|
||
Оценка
|
Знаток
Регистрация: 06.12.2009
Сообщений: 825
Репутация: 114
![]() ![]() |
Цитата:
в догонку перечень устройств https://category.alldatasheet.com/in...1-WIRE&sPage=1
|
||
Оценка
|
Обратная связь РадиоЛоцман Вверх |