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


10

Я готую проект вікторини, де арбітр подає сигнал, і кілька гравців натискають свої кнопки. Перший, хто натиснув, виграє право дати відповідь.

Я хочу, щоб усі кнопки (гравці арбітра + X) були бездротовими. Оскільки найкращі гравці вікторини можуть натиснути кнопку протягом 10 мс від сигналу, дуже важливо, щоб пінг між різними кнопками був дуже-дуже маленьким. Я не можу, щоб гравці кричали "моя кнопка млява!" З іншого боку, я не хочу використовувати більш дорогі / складні технології, ніж потрібно.

Так, що було б оптимальним бездротовим технологією для використання? Будь ласка, поділіться своїм досвідом подібних проектів (або просто теоретичними знаннями :) Ось що я досліджував до цього часу (виправте мене, якщо я помиляюся):

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

  2. Плюси Wi-Fi: затримка 2 мс (я зареєстрував пінг-роутер), десятки кнопок, якщо потрібно, будуть мінусами: вартість, потужність

  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.
Avamander

3

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

Це не відповідає низькій відстані бездротового зв'язку, але виключає потребу в цьому.


2
Гарна ідея, але вам не потрібен RTC. Ви можете синхронізувати Arduinos на старті, тому millis() - offsetдає однаковий результат (+/- деякий дрейф) для всіх Arduinos, що беруть участь. Це offsetзначення локального, millis()коли Arduino отримує сигнал синхронізації від майстра Arduino. Для гри, яка триватиме одну-дві години, буде достатньо.

Використання millis () для цього може призвести до втрати пристрою синхронізації, оскільки millis () не збільшується, коли переривання вимкнено.
Бобсбернер

1

На мою скромну думку, це може бути навіть дешевше, якщо ви використовуєте ІЧ або якийсь інший тип світла, якщо припустити, що ви можете забезпечити видимість. Ви можете використовувати різні довжини хвилі для забезпечення розділення сигналів.


1
Я боюся, що "напрямок зору" і "паб-вікторина" не йдуть разом. Але дякую, що ви запропонували це, я розглядаю ІР-технології для інших проектів.
Сергій Снігірьов

0

Низькотехнологічне рішення.

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

  2. Одержувач просто повинен виявити виявлення присутності цього сигналу.

Вся справа може бути на Rf, або на основі світла - наприклад, один із світлодіодних ламп може бути налаштований як передавач.

Все має бути добре протягом 1мс.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.