0
\$\begingroup\$

Having searched the forum I haven't found something similar to my use case, so thought I would post it, and my initial thinking for feedback, suggestions.

Scenario I want to build an RF game show like system, multiple players each have a button, players get to answer in the order they pressed their buttons.

This means:

  1. Signals timing is important.
  2. Fair chance signals will clash.
  3. No need to transmit any data, simply signal is present or not is enough

Other requirements:

  1. Ten buttons.
  2. Near instant setup, the system can be in different locations, do not want to have to reconfigure something like local WiFi connections on 10 for each re-location.
  3. Short range 20 m max. 
  4. Low power, ideally using none unless the button is pressed.

I started off looking at various WiFi (ESP8266) and cheap 433 MHz options but that seems overkill and risks signal clashes and flat batteries. I have yet top encounter a reliable Bluetooth system.

So I am thinking,  10 low power simple transmitter circuits each on their own channel, only receiving power when the button is pressed, and matching simple receivers each triggering an Arduino pin, which will do the rest of the work. maybe adapting something like https://www.aliexpress.com/item/1005005391664330.html?spm=a2g0o.productlist.main.85.3bf3609a5fRfZQ&algo_pvid=07313693-266a-4153-ae83-337102e87731&algo_exp_id=07313693-266a-4153-ae83-337102e87731-42&pdp_npi=3%40dis%21AUD%213.18%211.91%21%21%21%21%21%4021224cdb16871844418316964d074e%2112000032866806263%21sea%21AU%21132396536&curPageLogUid=tAXFdLkWzFVb

\$\endgroup\$
2
  • \$\begingroup\$ This is a Q and A site so, you need to raise a question that meets the site rules i.e. no requests for product recommendations or, requests for opinions. These are the main rules you might inadvertently break so, be advised of that. These things are never as easy as you might think btw. \$\endgroup\$
    – Andy aka
    Jun 19 at 15:29
  • \$\begingroup\$ Remember that in the context of electronics, humans are ridiculously slow. If your buttons respond in 3ms, that's more than accurate enough for a game. Yet as far as your radios are concerned, 3ms is a long time. You may be able to use regular algorithms with no special care given to response time and still have it be plenty fast and accurate. \$\endgroup\$
    – Drew
    Jun 19 at 16:09

2 Answers 2

1
\$\begingroup\$

What you probably didn't think about are: -

  • A single transmission may get corrupted by interference or,
  • Due to the simplistic way you envisage the system working, RF interference may create a false response.

This is why we send a packet of data and not just "simply signal is present". So, I would go back and think about this a bit more and make it more resilient to interference.

For instance, I'd use a receiver alongside each transmitter to enable the each button circuit to calculate a time period from "arming" until the button is pressed. No need for anything clever; a simple digital timer of maybe 16 bits resolution. If all button presses are expected within (say) ten seconds then, using a 16 bit timer means 153 μs temporal resolution. You log that 16 bit number when the button is pressed. The "master" polls "the buttons" via their receivers and collects the answers.

This way, if interference is encountered, you get the right numerical responses after polling the buttons. And, keep on polling until all responses are logged or the ten second time limit is reached.

This type of system can be achieved using the "el cheapo" 433 MHz technology with all buttons operating on a single RF channel. Each "button" would need a unique ID that would also be transmitted when polled. Add a two byte checksum, a few milliseconds of the transmit preamble and, you should be good to go.

10 low power simple transmitter circuits each on their own channel, only receiving power when the button is pressed, and matching simple receivers

Good-luck finding such stuff and, good-luck making it resilient against interference.

\$\endgroup\$
2
  • \$\begingroup\$ +1 for pointing out the "arming" problem for this game - a button pressed while master transmits start must invalidate that button. OP should also consider infrared in your single-channel system rather than RF. \$\endgroup\$
    – glen_geek
    Jun 19 at 16:57
  • \$\begingroup\$ Such systems already exist. Scoring in the sport of Fencing has/is transitioned from wired to wireless, and I believe that the wireless systems are used at the Olympics. \$\endgroup\$
    – Peter M
    Jun 19 at 17:06
0
\$\begingroup\$

Here's a relatively simple approach:

  • All transmitters on the same channel.
  • All buttons assigned a unique code.
  • When a button is held down, it transmits its code repeatedly, using a random or psudorandom delay between transmissions.
  • Receiver simply listens, and when a valid code is received, mark that button as down.
  • Buttons are marked as inactive by reciver if no valid code is received for some time.
  • Transmit intervals are such that channel is silent most of the time. Therefore collisions will be rare.
  • Even when a collision does occur, it will be VERY unlikely to occur again next cycle for the same 2 channels, therefor registration of those button presses will only be delayed by 1 transmission interval.
  • Do all of this on small timescales, like milliseconds. So although it doesn't strictly maintain the order of button presses, on human times scales registration can be considered "instantaneous".
\$\endgroup\$
4
  • 2
    \$\begingroup\$ Your solution would allow for the second person to press a button to be declared the winner. A presses button, and while A is transmitting, B presses button and garbles A's transmission. Then the random delay of B is less than that of A, B transmits again, causing B to "win" even though A responded first. \$\endgroup\$
    – Peter M
    Jun 19 at 16:59
  • \$\begingroup\$ @PeterM Yes, but this can all happen on an electronics timescale, so we're talking single digit milliseconds. \$\endgroup\$
    – Drew
    Jun 19 at 17:30
  • \$\begingroup\$ Should have added that detail from my comment to the question. Done. \$\endgroup\$
    – Drew
    Jun 19 at 17:34
  • \$\begingroup\$ Many events are won by single digit milliseconds /s \$\endgroup\$
    – Peter M
    Jun 19 at 17:50

Your Answer

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

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