Best way to receive data from multiple transmitters at the same time

Hi there,

I'd like to build a "voting system" for company meetings. That means, one host (person) should have a receiver (arduino via USB on a Notebook), the participants of the meeting (5 to 10 in the same room, < 15m away) need to vote (1 .. 10) on a question.

Usually they'll press their vote buttons almost at the same time, so the possibility of 2 or more sending at the same time is quite high.

I've looked into the standard IR 38kHz arduino remote controls with 17/18 buttons. They seem to work fine with 1 transmitter : 1 receiver and I even found solutions for 1 transmitter : multiple receivers with different "jobs". But multiple transmitters would get mixed up with the IR light.

So... does anyone have ideas on how to receive 10 numbers at the same time, possibly with a pre-built, affordable device for the participants? Any transmitter that sends a distinguishable "device id" and the information?

Should be something like the problem of having multiple wireless keyboards/mice in one room, but I'm out of ideas there.

Thanks in advance.

Peter

Couldn't you just get them to raise their hands, or nod?

I don't know an easy way for multiple nodes to send a message via IR strictly simultaneously. Instead, I'd work out a scheme where the inevitable collisions don't matter.

For example each "vote node" could be assigned two unique character codes which the master maps to a yes or no vote from that specific node. To mitigate collisions, each vote node would transmit its vote multiple times with a randomized delay in between each transmission. The master would have to recognize multiple messages from each node and use only one (e.g. the first) in the vote tally. The messaging scheme would also have to recognize message corruption due to collision if that is not sufficiently handled by the normal IR libraries.

AWOL:
Couldn't you just get them to raise their hands, or nod?

They could :slight_smile:

Currently they are lifting cards with numbers between 1 and 10. :slight_smile:

The problem is: This is not anonymous. If the CEO picks a 9 and the apprentice lifts a 2, he might get in trouble with his boss...

The other problem: We want to record the 10 votes in a nice graphical UI element. The "analogue" way requires the host to place 10 dots manually while moderating the show...

What commercial systems have you investigated? And what are they, so you can emulate one of them?

Paul

MrMark:
I don't know an easy way for multiple nodes to send a message via IR strictly simultaneously. Instead, I'd work out a scheme where the inevitable collisions don't matter.

For example each "vote node" could be assigned two unique character codes which the master maps to a yes or no vote from that specific node. To mitigate collisions, each vote node would transmit its vote multiple times with a randomized delay in between each transmission. The master would have to recognize multiple messages from each node and use only one (e.g. the first) in the vote tally. The messaging scheme would also have to recognize message corruption due to collision if that is not sufficiently handled by the normal IR libraries.

Thanks for the quick reply.

It doesn't need to be IR, I just couldn't find a solution with a keypad (1 to 10) that was BT or 2,4GHz and worked with an Arduino receiver "out of the box".

The trouble is, if the transmitters were arduinos, I could program a "master - multiple slaves" protocol. But then I'd have to build and test 10 or more (50?) devices that are small, look good, have 10 keys and a transmitter. I was hoping to find a cheap and "ready" solution like http://r.ebay.com/Pmm2Py these guys...

I have no problem building/programming one receiver, but 50...? Ouch :slight_smile:

since each transmitter has an ID, the receiver could receive whatever it can,
then poll whatever it missed.

  • or -

the receiver could poll each in turn.

and re-poll if there is no vote.

say it calls unit #4, no response, then #5, gets response, then #6 and so on,
then goes back to #4, after a few 'no response' it would just log no response.

build and code one, then copy

PeterPanic:
I have no problem building/programming one receiver, but 50...? Ouch :slight_smile:

build 1, then make 49 copies.

what is the max you might use ?
you said up to 10...
but now say 50 ?

that would change the options for technology pretty quickly.

dave-in-nj:
since each transmitter has an ID, the receiver could receive whatever it can,
then poll whatever it missed.

  • or -

the receiver could poll each in turn.

and re-poll if there is no vote.

say it calls unit #4, no response, then #5, gets response, then #6 and so on,
then goes back to #4, after a few 'no response' it would just log no response.

Yes, but as far as I could see, the IR remote controls didn't have any unique IDs. Am I wrong? And I thought, I couldn't "poll" them, they only send their signal when the user pushes the button.

PeterPanic:
It doesn't need to be IR, I just couldn't find a solution with a keypad (1 to 10) that was BT or 2,4GHz and worked with an Arduino receiver "out of the box".

The trouble is, if the transmitters were arduinos, I could program a "master - multiple slaves" protocol. But then I'd have to build and test 10 or more (50?) devices that are small, look good, have 10 keys and a transmitter. I was hoping to find a cheap and "ready" solution like http://r.ebay.com/Pmm2Py these guys...

I have no problem building/programming one receiver, but 50...? Ouch :slight_smile:

Yes, the scheme described previously would require unique IDs from each transmitter and that probably isn't available off the shelf with IR remotes.

If everyone had a smartphone, then a wifi + webserver approach might be the easiest way to go. That could probably be done in a NodeMCU/ESP8266 device with Arduino development tools. Certainly it can be done with a RaspberryPi or a full blown PC.

dave-in-nj:
build and code one, then copy

build 1, then make 49 copies.

what is the max you might use ?
you said up to 10...
but now say 50 ?

that would change the options for technology pretty quickly.

I think the maximum users in one meeting would be 10. But if it works and looks cool, my boss would probably want to have 10 in every meeting room :slight_smile:

And let's not forget... they should be small and look good. I have no Idea how to get a cool looking, slim case with 10 buttons on it where I could put an Arduino inside... Maybe I could "hijack" old cell phones or TV remotes...

In another current Thread the OP wants to have one master and several slaves each with a different ID but without needing to build the ID in at programming time. He is proposing to use nRF24L01+ transceivers. I suggested that he program all of the slaves with a standard ID. Whenever a slave sends a message it must include its ID as part of the message. If the master receives a message with the standard ID it will know that the message has come from a new slave and will send the next appropriate ID to it. The slave will then record the ID in the Arduino's EEPROM memory and will always use that ID in every future message.

The nRF24s are cheap and very effective.

Making a stylish device will probably be the biggest challenge. Expect the case to represent 50% (or more) of the cost of each device. Don't even think about using second-hand devices if you want a professional appearance.

...R
Simple nRF24L01+ Tutorial

We used these in college.

The tech is RF. Results were displayed during powerpoints.

You can probably use cheap RF controllers like that. It'd be cheap and easy with identical remotes, and assuming your company isn't full of immature brats, you can instruct them to vote only once because multiple clicks from the same remote will count as separate. I.e., all remotes send the same signals per button. Program counts how many of each button was pressed total. No identification per remote, anonymous voting is sort of the benefit, but as mentioned you'd need to trust no one to spam.

The ones we used in college had IDs per remote so you could change your answer and the software would undo and redo votes correctly. I think the system is about $900.

Thanks to all of you for the fast and helpful information!

My first thoughts were to get a garage door keypad, they are sleek and could work.

there are a lot of small plastic enclosures that would take a couple batteries and have the keypad.

but since there are alternatives, both a professional one as well as using a cell-phone, maybe there are easier ways.

Use MIT App Inventor to create a Bluetooth-Compatible app, and have your colleagues download it onto their phones. Have an HC-05 Bluetooth Tranciever connected to a singular Arduino, and use that as your receiver.

As long as they all have smart phones, (which I assume they do) all of your colleagues would have a transmitter with them!

The only problem is that MIT App Inventor creates apps for Androids, not iPhones. But an iPhone user could just borrow someone else's Android.

Just a thought!
SQ

No reason to make an app and make people download.
I think it's unprofessional to make people use their own devices and furthermore make them download stuff.
But if that's an option, a webpage is infinitely more simple. There are a ton of survey/voting/quizzing websites out there. Kahoot, surveymonkey, make your own, easy. They go to a webpage, click a button, simple cookies only let their device vote once.