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ę):
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
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
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
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.
Odpowiedzi:
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.
źródło
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ę.
źródło
millis() - offset
daje ten sam wynik (+/- pewien dryft) dla wszystkich zaangażowanych Arduinos. Jestoffset
to wartość lokalna,millis()
gdy Arduino odbiera sygnał synchronizacji od głównego Arduino. Wystarczy gra trwająca jedną lub dwie godziny.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.
źródło
Rozwiązanie niskiej technologii.
Nadajnik wysyła sygnał zegara na polecenie.
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.
źródło