Выбор беспроводной технологии для минимальной задержки

10

Я готовлю проект викторины для пабов, где рефери подает сигнал, а несколько игроков нажимают на кнопки. Первый толчок выигрывает право дать ответ.

Я хочу, чтобы все кнопки (рефери + X игроков) были беспроводными. Поскольку лучшие игроки викторины могут нажать кнопку в пределах 10 мс от сигнала, очень важно, чтобы между пингом была очень и очень небольшая разница в пинге. Я не могу позволить игрокам кричать "моя кнопка запаздывает!" С другой стороны, я не хочу использовать более дорогие / сложные технологии, чем необходимо.

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

  1. Bluetooth 4 LE (как в RFduino) Плюсы: задержка 3-6 мс (рекламируется), низкое энергопотребление Минусы: стоимость, не более 7 кнопок на устройство

  2. Wi-Fi Плюсы: задержка 2 мс (я только что проверял мой маршрутизатор Wi-Fi), десятки кнопок, если нужно Минусы: стоимость, энергозатраты

  3. РЧ трансивер Плюсы: не знаю, стоимость кажется немного меньше. Минусы: несколько кнопок на одной частоте, вероятно, создадут много шума

  4. Простейшие «радио-пульты» Плюсы: нулевая задержка, поскольку все это электромеханический, без данных Минусы: несколько кнопок на одной частоте не будут работать

Итак, я что-то пропустил? Я ценю любое руководство.

Сергей Снегирев
источник
Сколько всего кнопок?
bigjosh
1
Наименьшее возможное требование - 4, нормальный случай - 8, приветствуется что-нибудь еще - я бы хотел, чтобы оно было очень гибким для некоторых массовых развлечений.
Сергей Снегирев
Время реакции человека более 200 мс. См. Humanbenchmark.com/tests/reactiontime/statistics ,
@ user31481 И что? Люди могут воспринимать задержку менее 2 мс. Смотрите ссылки в приложении: danluu.com/input-lag
Навин

Ответы:

6

Раньше я использовал NRF24L01+беспроводные модули на чипсете 2,4 ГГц с Arduino и нашел их отличными и очень дешевыми (~ 10 долларов за 10 из них на ebay!). У них есть 3 режима передачи: 250 Кбит / с, 1 Мбит / с и 2 Мбит / с. Диапазон уменьшается соответственно с более высокой скоростью передачи битов, но время, потраченное на отправку сообщения, тоже уменьшается. Существует несколько библиотек Arduino (например, RF24, Mirf, RadioHead) и руководства по использованию модулей (см. Http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01 ). Они также имеют встроенные сетевые режимы, которые могут или не могут быть полезны.

Версии с антенным разъемом RP-SMA и заявленным диапазоном до 1000 м также доступны по цене около 5 долларов США каждая. Я бы рекомендовал использовать один из них для кнопки судьи по крайней мере, в зависимости от диапазона, который вам нужен.

По словам Чарльза Холларда из hallard.me , неусилительные чипы могут работать на расстоянии до 30 м в режиме 250 кбит / с , и я проверил это в собственных тестах.

По словам пользователя sporadic на diychristmas.org , отправка 32-байтовой полезной нагрузки в режиме 250 кбит / с занимает от 1432 мкс с начала режима Tx на передатчике до получения полного сообщения на приемнике. Это уменьшается до 444 мкс в режиме 1 Мбит / с и до 283 мкс в режиме 2 Мбит / с .

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

коры головного мозга
источник
Спасибо! Что делать, если несколько кнопок нажаты одновременно? Будут ли они сталкиваться и, например, блокировать друг друга?
Сергей Снегирев
Нет, сеть этих микросхем очень сложна по своей цене, они могут успешно согласовывать ячеистые сети и несколько каналов Rx одновременно и автоматически повторно отправлять, если получатель не подтверждает получение сообщения.
коры
1
В этом вопросе EE.SE подробно описано, как несколько узлов могут передавать на один и тот же адрес приема, как в вашей ситуации. Тогда нужно просто взять адрес отправителя, чтобы решить, кто «выиграл».
коры
1
Более полезные примеры: arduino-info.wikispaces.com/nRF24L01-RF24-Examples
кортикальных
1
Еще немного, эти чипы NRF24L01 + с антеннами не являются оригинальными, это может вызвать проблемы при попытке установить связь между клоном и оригиналом и при использовании динамических полезных нагрузок или ударных волн. Кроме того, эта статья на вики-пространстве устарела. Вместо этого следует использовать библиотеку TMRh20.
Авамандер
3

Рассматривали ли вы использование часов реального времени? Вы можете синхронизировать их все заранее и затем использовать любой беспроводной протокол. После того, как кнопка нажата, вы будете искать устройство, которое сообщает о самой ранней отметке времени, а затем, если прошло несколько секунд, дайте ему знать, что оно выиграло. Я хотел бы рассмотреть возможность использования WIFI (802.11) с ESP8266, RTC и взять беспроводную точку доступа.

Это не ответ на беспроводную связь с низкой задержкой, но устраняет необходимость в ней.

Приседания
источник
2
Хорошая идея, но вам не нужен RTC. Вы можете синхронизировать Arduinos при запуске, поэтому millis() - offsetдает одинаковый результат (+/- некоторый сдвиг) для всех задействованных Arduinos. offsetЯвляется значением локального , millis()когда Ардуин получить сигнал синхронизации от мастер Arduino. Для игры, которая продлится один или два часа, будет достаточно.
Использование для этого функции millis () может привести к потере синхронизации устройств, поскольку функция millis () не увеличивается при отключении прерываний.
Бобсбернер
1

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

Игорь Стоппа
источник
1
Боюсь, что «прямой видимости» и «викторина в пабе» не подходят друг другу. Но спасибо, что предложили это, я буду смотреть на технологию IR для других проектов.
Сергей Снегирев
0

Низкое низкое техническое решение.

  1. Передатчик посылает свой тактовый сигнал по команде.

  2. Приемник просто должен обнаружить обнаружение присутствия этого сигнала.

Все это может быть RF или на основе света - например, один из светодиодов может быть настроен в качестве передатчика.

Все должно быть хорошо в течение 1 мс.

dannyf
источник