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


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 мс.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.