I am drafting a pub quiz project, where the Referee gives a signal and multiple players push their buttons. The first to push wins the right to give an answer.

I want all buttons (referee's + X players) to be wireless. Since the best quiz players can click a button within 10ms of the signal, it is very important that there is a very, very little variance in ping between different buttons. I cannot have players shouting "my button is laggy!" On the other hand, I don't want to use more expensive/complex tech than needed.

SO, what would be the optimal wireless tech to use? Please share your experience from similar projects (or just theoretical knowledge :) Here's what I researched so far (correct me if I'm wrong):

  1. Bluetooth 4 LE (as in RFduino) Pros: 3-6ms latency (advertised), low energy Cons: cost, not more than 7 buttons to the device

  2. Wi-fi Pros: 2ms latency (I justed pinged my wi-fi router), dozens of buttons if need be Cons: cost, power-hungry

  3. RF data tranceiver Pros: dunno, cost seems to be a bit smaller Cons: multiple buttons at the same frequency will probably create a lot of noise

  4. Simplest "Radio remote" Pros: zero lag since it's all electromechanical, no data Cons: multiple buttons at the same frequency won't work

So, did I miss anything? I appreciate any guidance.

  • How many buttons in total?
    – bigjosh
    Commented Jul 8, 2015 at 3:45
  • 1
    The smallest possible requirement is 4, the normal case is 8, anything more would be welcome - I'd like it to be very flexible for some crowd entertainment. Commented Jul 8, 2015 at 7:22
  • Human reaction time is over 200ms. See humanbenchmark.com/tests/reactiontime/statistics,
    – user31481
    Commented Aug 8, 2017 at 9:57
  • 1
    @user31481 So what? Humans can perceive latency under 2ms. See links in the appendix: danluu.com/input-lag
    – Navin
    Commented Jan 29, 2020 at 10:28

4 Answers 4


I've used NRF24L01+ chipset 2.4GHz wireless modules with Arduino before, and found them to be great, and super cheap (~$10 for 10 of them on ebay!). They have 3 modes of transmission: 250kbps, 1Mbps, and 2Mbps. The range decreases accordingly with higher bitrate, but the time spent sending a message does too. There are multiple Arduino libraries (e.g. RF24, Mirf, RadioHead) and tutorials for using the modules (see http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01). They also have built-in mesh networking modes which may or may not be of use.

Versions with an RP-SMA antenna connector and an advertised range of up to 1000m are also available for about $5 each. I would recommend using one of these for the referee's button at least, depending on the range you need.

According to Charles Hallard of hallard.me, The non-amplified chips can get 30m line-of-sight range in 250kbps mode, and I have verified this in my own testing.

According to user sporadic on diychristmas.org, sending a 32 byte payload in 250kbps mode takes 1432µs from the start of Tx mode on the transmitter to receiving the full message on receiver. This decreases to 444µs on 1Mbps mode and 283µs on 2Mbps mode.

Given these statistics, they fall well within 2ms latency for triggering, suitable for your application, and they use very little power. It's up to you to work out the best balance of latency, range and expense.

  • Thank you! What if multiple buttons are pressed at the same time? Will they collide and eg block each other out? Commented Jul 11, 2015 at 11:18
  • No, the networking of these chips is very sophisticated for their price, they can negotiate mesh networks and multiple Rx pipes at once happily, and automatically resend if the receiver doesn't acknowledge receipt of a message.
    – cortices
    Commented Jul 12, 2015 at 2:17
  • 1
    This EE.SE question details how you can have multiple nodes transmit to the same receive address, as in your situation. Then it's simply a matter of taking the sender's address to decide who 'won'.
    – cortices
    Commented Jul 12, 2015 at 2:18
  • 1
    More helpful examples: arduino-info.wikispaces.com/nRF24L01-RF24-Examples
    – cortices
    Commented Jul 12, 2015 at 2:22
  • 1
    Just a little heads up, those NRF24L01+ chips with antennas are not original, it might cause issues when you try to communicate between clone and original and if you try to use dynamic payloads or shockburst. Also, that wikispace article is outdated. One should use TMRh20 library instead.
    – Avamander
    Commented Sep 5, 2015 at 15:03

Have you considered using real time clocks? You could synchornise them all ahead of time and then use any wireless protocol. Once a button is pressed, you'll look for the unit that reports the earliest time stamp and then once a window of a few seconds has passed let it know that it won. I'd consider using WIFI (802.11) with ESP8266s, RTCs and take a wireless access point along.

This isn't an answer to low lag wireless but eliminates the need for it.

  • 2
    Good idea, but you don't need a RTC. You can sync Arduinos at start, so millis() - offset gives the same result (+/- some drift) for all Arduinos involved. The offset is the value of local millis() when an Arduino receive the sync signal from master Arduino. For a game that last one or two hours will be enough.
    – user31481
    Commented Aug 9, 2017 at 7:14
  • Using millis() for this may cause the devices to lose sync, as millis() does not increment when interrupts are disabled.
    – bobsburner
    Commented Apr 2, 2020 at 8:46

In my humble opinion it might be even cheaper if you use IR or some other type of light, assuming you can ensure line of sight. You can use different wavelengths to ensure separation of the signals.

  • 1
    I'm afraid that "line of sight" and "pub quiz" don't go well together. But thanks for suggesting it, I will look into IR tech for other projects. Commented Jul 8, 2015 at 7:23

Low low tech solution.

  1. The transmitter sends out its clock signal on command.

  2. The receiver just needs to detect detect the prrsence of that signal.

The whole thing can be rf, or light based - for example one of the led lights can be configured as the transmitter.

Everything should be well within 1ms.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.