www.open-tager.ru

открытый лазертаг форум
Текущее время: 25 апр 2024, 19:24

Часовой пояс: UTC + 3 часа [ Летнее время ]


Реклама

Правила форума


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



Начать новую тему Ответить на тему  [ Сообщений: 169 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11, 12 ... 17  След.
Автор Сообщение
 Заголовок сообщения: Re: Умный датчик. Smart sensor.
СообщениеДобавлено: 05 янв 2017, 14:59 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
Pingvin писал(а):
Повязка "молвит" (через динамик или пикалку) - какой датчик будет "зоной поражения 1"?
Нажимаем кнопочку на этом датчике, он шлет повязке свой UID.

Это неплохой вариант, с одной стороны. Для начала я рассчитываю на стандартные корпуса от LW. Наружу кнопку вывести не выйдет, это муторно и ухудшается герметичность. ИК пульт или Андроид смотрятся лучше, ИМХО.

Pingvin писал(а):
Зачем нам двухбайтовое адресное пространство?
Хватит и однобайтового.

Я вроде всё подробно расписал в предыдущем посте, это элементарный тервер. Одного байта становится мало не когда датчиков 256, а когда датчиков всего 10! Вероятность того, что среди 10 датчиков со случайными 8-битными адресами окажутся два с одинаковым адресом составляет 1 к 6, а это неприемлемо.
То есть для каждого шестого собираемого комплекта будет коллизия. Придется перебирать все датчики по одному и искать совпадающие. А при 16-бит пространстве случайности достаточно, чтобы почти всегда адреса оказывались разными. Просто достал из коробки с датчиками 10 штук, и они почти гарантированно совместимы.

Вот объяснение "про то же самое", если хотите: https://ru.wikipedia.org/wiki/%D0%9F%D0 ... 0%B8%D1%8F


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Умный датчик. Smart sensor.
СообщениеДобавлено: 05 янв 2017, 15:08 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Alexies писал(а):
Я вроде всё подробно расписал в предыдущем посте, это элементарный тервер. Одного байта становится мало не когда датчиков 256, а когда датчиков всего 10! Вероятность того, что среди 10 датчиков со случайными 8-битными адресами окажутся два с одинаковым адресом составляет 1 к 6, а это неприемлемо.
То есть для каждого шестого собираемого комплекта будет коллизия. Придется перебирать все датчики по одному и искать совпадающие. А при 16-бит пространстве случайности достаточно, чтобы почти всегда адреса оказывались разными. Просто достал из коробки с датчиками 10 штук, и они почти гарантированно совместимы.

Вот объяснение "про то же самое", если хотите: https://ru.wikipedia.org/wiki/%D0%9F%D0 ... 0%B8%D1%8F


Да не окажется!
Берём UID камня - и все, он уникален.
Да, он 96-битный, но нам он нужет только при процедуре инициализации, которую с "новой" повязкой достаточно произвести только раз за все время, в игре будем обращаться по номеру зоны (хватит одного байта).


Цитата:
Это неплохой вариант, с одной стороны. Для начала я рассчитываю на стандартные корпуса от LW. Наружу кнопку вывести не выйдет, это муторно и ухудшается герметичность. ИК пульт или Андроид смотрятся лучше, ИМХО.

геркончики.
Да и колпаки то съёмные - не вижу проблем закрыть их после инициализации (коротнуть отверткой перемычку).
А если "насаживать" датчики на разъёмы прямо в корпусе - вообще красота, идеально для второго варианта.

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Умный датчик. Smart sensor.
СообщениеДобавлено: 05 янв 2017, 15:23 
Не в сети
Аксакал форума

Зарегистрирован: 29 авг 2011, 11:08
Сообщений: 1849
Alexies писал(а):
Вероятность того, что среди 10 датчиков со случайными 8-битными адресами окажутся два с одинаковым адресом составляет 1 к 6, а это неприемлемо.
И эти люди говорили про оверинженеринг :mrgreen:
А вы уверенны что ваш генератор случайных чисел будет действительно случайный, давайте на плату ещё аппаратный генератор шума припаяем :lol: Зачем все эти манипуляции когда при прошивке можно просто задать номер датчика поменяв пару байтиков в хекс файле и налепив бумажку с номером ? В крайнем случае ножки свободные ещё есть (от контактов кнопок например), адрес выбрать перемычками-припоем.

_________________
"За 2 месяца максимум можно чертёж сделать, еще за 3 фундамент." (c) Номернабис


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Умный датчик. Smart sensor.
СообщениеДобавлено: 05 янв 2017, 15:29 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
"Гибридный" вариант....
Производим опрос всех UID методом, предложенным Алексеем.
Получим список UID-ов всех подключенных датчиков.

Далее повязка говорит - "Выберите датчик для зоны 1" и неспеша начинает перебирать (зажигать) RGB диоды по очереди, беря UIDы из списка.
Как только загорится нужный нам - мы производим какое то действие - или пультом отправляем команду, или жмем кнопку на повязке.
Перебор останавливается, горит только выбранный нами диод, повязка запрашивает подтверждение или отмену.
И так далее для всех датчиков.

А чтобы меньше было коллизий при опросе UIDов, можно сделать такие команды:
- отзовитесь все датчики, UID которых оканчивается на 0;
- отзовитесь все датчики, UID которых оканчивается на 1;
- отзовитесь все датчики, UID которых оканчивается на 2;
и т.д.

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Умный датчик. Smart sensor.
СообщениеДобавлено: 05 янв 2017, 15:57 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 27 ноя 2011, 00:22
Сообщений: 1569
Откуда: Україна
Alexies писал(а):
...это выглядит так: повязка попросит все датчики представиться. Датчики через случайные промежутки времени будут посылать сообщения со своими адресами. Рано или поздно получится принять пакет от какого-то датчика без коллизий. Такому датчику тут же посылается команда молчать....

Сделайте задержку ответа на команду WhoIs зависимой от адреса датчика. Если буфер позволяет принимать несколько пакетов - то вообще обойдётесь 1-2 итерациями.

_________________
Нет предела совершенству, но ресурсы заканчиваются быстро.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Умный датчик. Smart sensor.
СообщениеДобавлено: 05 янв 2017, 17:26 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
LTagKirov писал(а):
И эти люди говорили про оверинженеринг :mrgreen:

Я всего лишь описываю простое стандартное решение, которое применяется всегда в случаях, когда физическая среда одна на много устройств. Не вижу оверинжениринга (в отличие от датчика-таггера-аптечки на одной плате, переделывать которую никак нельзя).

Сегодня вечером или завтра напишу подробное описание стадии получения адресов, как только код заработает. Мой алгоритм похож на всё, что предложили выше, занимает около 40 строк кода в сумме для повязки и датчика, и находит несколько десятков датчиков за долю секунды (по расчетам). Если будут возражения, сделаю по-другому. Надеюсь, что мой подход устроит всех, потому что никаких принципиальных ограничений в нем нет.

В качестве адреса наиболее разумно брать двухбайтовый хэш от id контроллера (который составляет 12 байт).

По поводу случайных чисел - никакого колхоза, я использую LFSR с адекватным полиномом, с честным периодом повторения 65536. И да, в качестве сида берется адрес, это разумно.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Умный датчик. Smart sensor.
СообщениеДобавлено: 05 янв 2017, 17:44 
Не в сети
Аксакал форума

Зарегистрирован: 29 авг 2011, 11:08
Сообщений: 1849
Alexies писал(а):
По поводу случайных чисел - никакого колхоза
Да всё нормально, так сказать полёт мысли весьма поучителен и красив :D ... только пока ещё дело дойдёт хотя-бы до 10 датчиков в тряпочном жилете на одном игровом тельце, а до того времени(думаю года два) хардкорно прописанные адреса в одну строчку кода будут прекрасно работать без всяких заумностей.

ЗЫ. Я не отговариваю от придумок, сделали/работает - замечательно, только может есть смысл к тёплому игровому сезону уже начать приторговывать готовыми платками (да я хочу себе готовую платку ;) ), а инновации оставить на потом, если будет реальный спрос 8-) И кстати включение оборудования надо переделывать на кнопку, тумблер уже однозначно не модно.

_________________
"За 2 месяца максимум можно чертёж сделать, еще за 3 фундамент." (c) Номернабис


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Умный датчик. Smart sensor.
СообщениеДобавлено: 05 янв 2017, 18:49 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Цитата:
В качестве адреса наиболее разумно брать двухбайтовый хэш от id контроллера (который составляет 12 байт).


С языка сняли, все верно!

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Умный датчик. Smart sensor.
СообщениеДобавлено: 08 янв 2017, 17:30 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
Новости проека
Пару дней был занят, наконец нашлось время доделать.

Определение адресов
Функционал определения адресов заработал корректно. Вот краткое описание алгорима:

У сенсоров есть генератор случайных чисел с адресом в качестве сида. После небольшого исследования решил использовать стандартный rand() из math.h.
1. Повязка посылает широковещательную команду: "присылать адреса разрешается всем". Это просто установка флага у сенсоров, после этой команды никто ничего не шлет!
2. Повязка посылает широковещательную команду: "присылайте свои адреса с вероятностью P". Каждый, кто принял эту команду, "бросает кубик". Если проверка веротяности пройдена, сенсор посылает повязке свой адрес. Посылает только один раз, поэтому через таймаут канал гарантированно свободен.
3. Если повязка приняла валидный пакет с чьим-то адресом, то этому адресу он посылает команду: "посылка адреса запрещается". Таким образом, уже зарегистрированный сенсор больше не будет отвечать на запросы адреса ни при каких условиях.
Если повязка не приняла валидного пакета, вероятность P немного увеличивается, и возвращаемся на шаг 2.

Алгорим начинается с вероятности, близкой к нулю, и шаг вероятности маленький. По мере работы алгоритма "отозвавшиеся" датчики исключаются из общего пула "неизвестных". Таким образом обеспечивается устойчивость к коллизиям. Когда два датчика отзываются одновременно, ничего страшного не происходит: "в следующий раз", скорее всего, этого не повторится. Я могу математически строго это объяснить, но довольно долго расписывать, учитывая, что движок форума не позволяет адекватно писать формулы. Расчеты элементарны.

Чисто для иллюстрации, вот пример без формул, только результаты:
Пусть у нас есть 10 датчиков. Начинаем их опрашивать по моему алгоритму.
1. Заказываем ответ с вероятностью 0.01. С вероятностью 90% все промолчат. С вероятностью 9,1% ответит ровно 1. С вероятностью 0,9% ответит два или больше (коллизия).
2. Заказываем ответ с вероятностью 0.02. С вероятностью 81% все промолчат. С вероятностью 16% ответит ровно 1. С вероятностью 3% коллизия.
3. Заказываем ответ с вероятностью 0.03. С вероятностью 73% все промолчат. С вероятностью 23% ответит ровно 1. С вероятностью 4% коллизия.
4. Заказываем ответ с вероятностью 0.04. С вероятностью 66% все промолчат. С вероятностью 27% ответит ровно 1. С вероятностью 7% коллизия.

Только за эти 4 раунда: вероятность того, что мы успешно нашли 1 датчик, составит: (1 - (1-0.091)*(1-0.16)*(1-0.23)*(1-0.27)) = 57%. Еще 3 раунда обеспечат вероятность нахождения около 90%. Когда датчик будет найден, он исключается из опроса, их становится 9, и вероятности "улучшаются".

Сотня раундов опроса занимает не больше секунды, и это всё большим с запасом по надежности и количеству датчиков, и на МК будет работать быстрее, чем на компе. Инкремент вероятности можно менять для достижения наилучших показателей.

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

Программа на компьютере успешно получает адрес датчика, опрашивает его на предмет наличия ИК-пакета и посылает задачи на мигание светодиодами. Всё это работает стабильно и ровно так, как предполагается. Минимальный функционал, таким образом, готов.

Что осталось по части firmware: добавить ИК-излучатель, это легко элементарно, и провести небольшой рефакторинг. Ну а дальше сделать платы.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Умный датчик. Smart sensor.
СообщениеДобавлено: 08 янв 2017, 17:57 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Отлично!
Вариант с вероятностью интересный.

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 169 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11, 12 ... 17  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

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


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

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB