Sending wireless commands

Hello everyone,

I am working on a project that involves sending commands wirelessly to possibly 50ish Arduinos all around a building. I have looked into wireless communication a bit, but can't seem to figure out what is the best way to do it. I would want to be able to send commands to as many as all of the Arduinos at once to just a single Arduino.

I've seen the wifi shields which will let Arduinos connect to the network and send/receive signals that way. It seems that I could send data through UDP or TCP, and I'm not sure the differences between the two or which way is really better. I have found some resources about how to setup and work both of these methods in a very general format.

I've also looked into communication through the RF24 library and RF antennae on each Arduino. I've researched this way the most, but it also seems the most confusing. I am very interested in the RF24 mesh network in the way that it can bounce the signal between different Arduinos to reach its destination and that it will automatically reconnect to the network if its connection is lost.

If anyone could give me a recommendation on a good form of wireless communication to use, or your thoughts on these ones above that would be greatly appreciated. I am planning on using Arduino MEGAS if that information is necessary to help you with your decision. Thank you.

You mentioned the possibilities already.
What is the distance and what is the data rate and do you want confirmation that the data is received ?

A mesh network for Arduino is possible with RadioHead RadioHead: RadioHead Packet Radio library for embedded microprocessors and LoraWAN and RF24 and XBee and Zigbee, and perhaps a few more.
I think the mesh networks require a large amount of memory.

A UDP does not have an acknowledge, it is send onto the network and that's it.

Are you sure about Arduino Mega 2560 boards ? Why not a Cortex-M0+ processor ?

Koepel:
You mentioned the possibilities already.
What is the distance and what is the data rate and do you want confirmation that the data is received ?

The distance could be as far as one end of the building to another, or through floors, so maybe as much as 200-300 feet (this is just an estimate). I have been using a transfer speed of 9600 baud when just sending data from my computer to the Arduino.

Koepel:
Are you sure about Arduino Mega 2560 boards ? Why not a Cortex-M0+ processor ?

I am sure about the Arduino only because a good chunk of time has been put into the Arduino, and the code that will run on the Arduinos, besides the wireless communication, has all been written.

I appreciate your feedback, and I looked at the RadioHead library and there was some pretty good information in there.

I think WiFi would probably be the easiest way to ensure communication throughout a building. You could have a number of WiFi repeaters - perhaps connected via Ethernet.

However you can't "SEND" data with the internet (thank goodness). Each Arduino would have to request data from the server. You can use the technique known as long-polling to give the impression that the server is sending data. In effect the client sends a request but the server only responds when it has data to send.

For a system like this it would IMHO be much more sensible to host the server on a PC or a RaspberryPi. I have built a simple long-polling system using the Python Bottle web framework but with the CherryPy server because the Bottle server does not allow overlapping requests.

I am familiar with the nRF24s but not using the network facility - just one to many.

...R

I mean : how much data in how much time ?

For example the temperature as an integer every 5 minutes. That is 2 bytes per 5 minutes.
Then LoRa might be a good option.

200-300 feet is 61 - 91 meters. Many simple RF modules can go up to 50 meters.

Some wifi boards have a pcb antenna, I would not trust those for 91 meters. But you can add normal consumer products, repeaters or access points or many other things, as Robin2 wrote.
Therefor, for larger amounts of data, the wifi might still be a good option.

Koepel:
I mean : how much data in how much time ?

I would only be sending a few commands per day to the Arduinos, and each command doesn't have that many bytes of data.

Robin2:
I think WiFi would probably be the easiest way to ensure communication throughout a building. You could have a number of WiFi repeaters - perhaps connected via Ethernet.

I was thinking that wifi would be the easiest way, especially since there is already an existing network. This issue is though that there are a bunch of firewalls and security measures in place on the network that might interfere with the Arduino communication. Also IT might not like this idea for whatever reason, but wifi would probably be a good option if I can make it work.

That low amount of data ? And you want it to be secure so that is 100% sure that a message is received ?
If someone doesn't like an extra wifi, then I think the best options are now : Xbee / Zigbee, or LoRa.

The Xbee / Zigbee is a well know solution that will work.
LoRa is new and is very good with little data and long distances.

The 433MHz in Europe can be busy in a new modern urban area, the 866MHz is no problem.
I don't know how busy the 315 MHz in the us is, but the 915MHz should be no problem.

The LoRa definitely has the range for what I need. I'll take a look at each of these and see what looks good.

michaelsm:
there are a bunch of firewalls and security measures in place on the network that might interfere with the Arduino communication

Maybe you could set up a separate network for your project? Or a separate server that is outside the firewall?

If there is a need for secure communication through the firewall maybe that could be done by the server only?

...R