Я готовлю проект викторины для пабов, где рефери подает сигнал, а несколько игроков нажимают на кнопки. Первый толчок выигрывает право дать ответ.
Я хочу, чтобы все кнопки (рефери + X игроков) были беспроводными. Поскольку лучшие игроки викторины могут нажать кнопку в пределах 10 мс от сигнала, очень важно, чтобы между пингом была очень и очень небольшая разница в пинге. Я не могу позволить игрокам кричать "моя кнопка запаздывает!" С другой стороны, я не хочу использовать более дорогие / сложные технологии, чем необходимо.
Итак, что было бы оптимальным для использования беспроводной технологии? Пожалуйста, поделитесь своим опытом в подобных проектах (или просто теоретическими знаниями :) Вот что я исследовал до сих пор (поправьте меня, если я ошибаюсь):
Bluetooth 4 LE (как в RFduino) Плюсы: задержка 3-6 мс (рекламируется), низкое энергопотребление Минусы: стоимость, не более 7 кнопок на устройство
Wi-Fi Плюсы: задержка 2 мс (я только что проверял мой маршрутизатор Wi-Fi), десятки кнопок, если нужно Минусы: стоимость, энергозатраты
РЧ трансивер Плюсы: не знаю, стоимость кажется немного меньше. Минусы: несколько кнопок на одной частоте, вероятно, создадут много шума
Простейшие «радио-пульты» Плюсы: нулевая задержка, поскольку все это электромеханический, без данных Минусы: несколько кнопок на одной частоте не будут работать
Итак, я что-то пропустил? Я ценю любое руководство.
Ответы:
Раньше я использовал
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 мс задержки для запуска, что подходит для вашего приложения, и они потребляют очень мало энергии. Вам решать, как наилучшим образом сбалансировать время ожидания, диапазон и затраты.
источник
Рассматривали ли вы использование часов реального времени? Вы можете синхронизировать их все заранее и затем использовать любой беспроводной протокол. После того, как кнопка нажата, вы будете искать устройство, которое сообщает о самой ранней отметке времени, а затем, если прошло несколько секунд, дайте ему знать, что оно выиграло. Я хотел бы рассмотреть возможность использования WIFI (802.11) с ESP8266, RTC и взять беспроводную точку доступа.
Это не ответ на беспроводную связь с низкой задержкой, но устраняет необходимость в ней.
источник
millis() - offset
дает одинаковый результат (+/- некоторый сдвиг) для всех задействованных Arduinos.offset
Является значением локального ,millis()
когда Ардуин получить сигнал синхронизации от мастер Arduino. Для игры, которая продлится один или два часа, будет достаточно.По моему скромному мнению, это может быть даже дешевле, если вы используете ИК-излучение или какой-либо другой тип освещения, при условии, что вы можете обеспечить прямую видимость. Вы можете использовать разные длины волн, чтобы обеспечить разделение сигналов.
источник
Низкое низкое техническое решение.
Передатчик посылает свой тактовый сигнал по команде.
Приемник просто должен обнаружить обнаружение присутствия этого сигнала.
Все это может быть RF или на основе света - например, один из светодиодов может быть настроен в качестве передатчика.
Все должно быть хорошо в течение 1 мс.
источник