Wybór technologii bezprzewodowej w celu uzyskania możliwie najniższego opóźnienia

10

Przygotowuję projekt quizu pubowego, w którym Sędzia daje sygnał, a wielu graczy naciska przyciski. Pierwszy, kto naciska, wygrywa prawo do udzielenia odpowiedzi.

Chcę, aby wszystkie przyciski (sędziowie + zawodnicy X) były bezprzewodowe. Ponieważ najlepsi gracze quizu mogą kliknąć przycisk w ciągu 10 ms od sygnału, bardzo ważne jest, aby istniała bardzo, bardzo niewielka różnica w pingowaniu między różnymi przyciskami. Nie mogę pozwolić graczom krzyczeć „mój przycisk jest opóźniony!” Z drugiej strony nie chcę używać droższej / złożonej technologii niż to konieczne.

Więc jaka byłaby optymalna technologia bezprzewodowa do użycia? Proszę podzielić się swoimi doświadczeniami z podobnych projektów (lub tylko wiedzą teoretyczną :) Oto, co do tej pory badałem (popraw mnie, jeśli się mylę):

  1. Bluetooth 4 LE (jak w RFduino) Plusy: opóźnienie 3-6 ms (reklamowane), niskie zużycie energii Wady: koszt, nie więcej niż 7 przycisków do urządzenia

  2. Zalety Wi-Fi: opóźnienie 2 ms (właśnie sprawdziłem ping routera Wi-Fi), w razie potrzeby dziesiątki przycisków Wady: koszt, pobór mocy

  3. Transceiver danych RF Plusy: nie, koszt wydaje się nieco mniejszy Minusy: wiele przycisków na tej samej częstotliwości prawdopodobnie będzie generować dużo hałasu

  4. Najprostsze zalety „zdalnego sterowania radiowego”: zero opóźnień, ponieważ wszystko jest elektromechaniczne, brak danych Wady: wiele przycisków na tej samej częstotliwości nie działa

Czy coś mi umknęło? Doceniam wszelkie wskazówki.

Siergiej Snegirev
źródło
Ile w sumie przycisków?
bigjosh,
1
Najmniejszy możliwy wymóg to 4, normalny przypadek to 8, nic więcej nie byłoby mile widziane - chciałbym, żeby był bardzo elastyczny dla rozrywki w tłumie.
Siergiej Snegirev
Czas reakcji człowieka wynosi ponad 200 ms. Zobacz humanbenchmark.com/tests/reactiontime/statistics ,
@ user31481 Co z tego? Ludzie mogą dostrzec opóźnienie poniżej 2ms. Zobacz linki w dodatku: danluu.com/input-lag
Navin

Odpowiedzi:

6

Użyłem NRF24L01+chipset 2,4 GHz modułów bezprzewodowych z Arduino przed, i uznaliśmy je za wielki i bardzo tanie (~ $ 10 za 10 z nich na ebay!). Mają 3 tryby transmisji: 250 kb / s, 1 Mb / s i 2 Mb / s. Zakres zmniejsza się odpowiednio wraz z wyższą przepływnością, ale również czas spędzony na wysyłaniu wiadomości. Istnieje wiele bibliotek Arduino (np. RF24, Mirf, RadioHead) i samouczki dotyczące korzystania z modułów (patrz http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01 ). Mają także wbudowane tryby sieci kratowej, które mogą, ale nie muszą być przydatne.

Wersje ze złączem antenowym RP-SMA i reklamowanym zasięgiem do 1000 m są również dostępne za około 5 USD za sztukę. Polecam użycie jednego z nich przynajmniej do przycisku sędziego, w zależności od potrzebnego zasięgu.

Według Charlesa Hallarda z hallard.me , niewzmocnione układy mogą uzyskać zasięg widzenia w odległości 30 m w trybie 250 kb / s , co zweryfikowałem we własnych testach.

Według użytkownika sporadycznie na diychristmas.org , wysłanie 32-bajtowego bloku danych w trybie 250 kb / s zajmuje 1432 µs od początku trybu Tx na nadajniku do otrzymania pełnej wiadomości w odbiorniku. Zmniejsza się to do 444 µs w trybie 1 Mb / s i 283 µs w trybie 2 Mb / s .

Biorąc pod uwagę te statystyki, mieszczą się one w opóźnieniu wynoszącym 2 ms podczas wyzwalania, odpowiednie dla Twojej aplikacji i zużywają bardzo mało energii. Od Ciebie zależy wypracowanie najlepszej równowagi między opóźnieniem, zasięgiem i wydatkami.

korki
źródło
Dziękuję Ci! Co się stanie, jeśli w tym samym czasie naciśnie się wiele przycisków? Czy zderzają się i np. Blokują?
Sergey Snegirev
Nie, połączenie tych układów w sieć jest bardzo wyrafinowane pod względem ceny, mogą z radością negocjować sieci kratowe i wiele potoków Rx i automatycznie wysyłać je ponownie, jeśli odbiorca nie potwierdzi odbioru wiadomości.
korty
1
To pytanie EE.SE opisuje szczegółowo, w jaki sposób można przesyłać wiele węzłów na ten sam adres odbiorczy, jak w twojej sytuacji. Następnie wystarczy po prostu wziąć adres nadawcy, aby zdecydować, kto „wygrał”.
korty
1
Bardziej pomocne przykłady: arduino-info.wikispaces.com/nRF24L01-RF24-Examples
cortices
1
Tylko trochę do góry, te układy NRF24L01 + z antenami nie są oryginalne, może to powodować problemy podczas próby komunikacji między klonem i oryginałem oraz próby użycia dynamicznych ładunków lub wstrząsu. Ponadto ten artykuł w Wikipedii jest nieaktualny. Zamiast tego należy użyć biblioteki TMRh20.
Avamander
3

Czy zastanawiałeś się nad użyciem zegarów czasu rzeczywistego? Możesz zsynchronizować je wszystkie z wyprzedzeniem, a następnie użyć dowolnego protokołu bezprzewodowego. Po naciśnięciu przycisku poszukasz jednostki, która zgłosi najwcześniejszy znacznik czasu, a następnie po upływie kilku sekund poinformuje cię, że wygrała. Rozważę użycie WIFI (802.11) z ESP8266, RTC i zabiorę ze sobą bezprzewodowy punkt dostępowy.

To nie jest odpowiedź na bezprzewodowe opóźnienie o niskim opóźnieniu, ale eliminuje to potrzebę.

Przysiady
źródło
2
Dobry pomysł, ale nie potrzebujesz RTC. Możesz zsynchronizować Arduinos na początku, więc millis() - offsetdaje ten sam wynik (+/- pewien dryft) dla wszystkich zaangażowanych Arduinos. Jest offsetto wartość lokalna, millis()gdy Arduino odbiera sygnał synchronizacji od głównego Arduino. Wystarczy gra trwająca jedną lub dwie godziny.
Użycie do tego millis () może spowodować utratę synchronizacji urządzeń, ponieważ millis () nie zwiększa się, gdy przerwania są wyłączone.
bobsburner
1

Moim skromnym zdaniem może być nawet tańsze, jeśli użyjesz podczerwieni lub innego rodzaju światła, zakładając, że możesz zapewnić linię wzroku. Możesz użyć różnych długości fali, aby zapewnić separację sygnałów.

Igor Stoppa
źródło
1
Obawiam się, że „linia wzroku” i „quiz pubowy” nie pasują do siebie. Ale dzięki za sugestię, przyjrzę się technologii IR dla innych projektów.
Sergey Snegirev
0

Rozwiązanie niskiej technologii.

  1. Nadajnik wysyła sygnał zegara na polecenie.

  2. Odbiornik musi tylko wykryć obecność tego sygnału.

Całość może być oparta na rf lub oparta na świetle - na przykład jedno ze świateł LED może być skonfigurowane jako nadajnik.

Wszystko powinno być dobrze w ciągu 1ms.

dannyf
źródło