Is this feasible?

Sorry, I'm totally ignorant and just want to find out if the project I'm contemplating is feasible before I invest the time and money to learn how to use the Arduino.

I want to use an Arduino to receive data from around 50 different nearby sensors (ideally wirelessly) and send those data to a database/spreadsheet for storage and later analysis. The sensors will be sending data from rain gauges (discrete pulses from tipping buckets equipped with reed switches) and soil moisture sensors (which I think send signals of varying strength depending on the degree of soil saturation) which can be read on a schedule of say every 10 minutes. So I will have 25 spots each equipped with a rain gauge and a moisture sensor. There is wifi and AC power within easy range. It would be nice to have some way for the system to reconnect in the event the wifi connection is lost.

Is this do-able with a single Arduino equipped with the correct shield(s) and multiplexer (or whatever you call something that will multiply the number of possible data streams that the Arduino can receive?

Please excuse me in advance if what I am asking is stupid.


Although WiFi may not be the best communication method. You could do this with an XBEE or Nordic Networks modules. Look for "Moteino". That guy has lots of sensors working with the Nordic radios. Also look up "mesh network" which can extend the range by allowing messages to hop between nodes.

WiFi is great for communication between your Arduino and a computer host.

Other peer-to-peer wireless connections are better for communicating with sensors.

However the sensors as you describe appear to need an Arduino (or other microprocessor) to read them out: measure the soil resistance, count bucket clicks. I don't think you plan on adding 50 Arduinos in the mix. So that's likely going to be wired to your main Arduino (or, with the number of sensors, maybe a few that in turn communicate over WiFi).

As you want WiFi, check out the ESP8266 based systems like NodeMCU and WeMOS D1. Considerably less ports than Arduino, though, especially ADC is lacking and you probably want that for your soil moisture sensors (unless you have sensors that communicate over I2C or so).

I want to use an Arduino to receive data from around 50 different nearby sensors (ideally wirelessly) and send those data to a database/spreadsheet for storage and later analysis.

Let's start at the beginning. How widely spaced are the 50 different sensors? What is area covered? How far apart are the sensors that are closest to each other. A diagram of the sensor layout would be a huge help.

Is it practical to connect several sensors to one Arduino using wires and then have that Arduino send the data onwards by wireless?

As others have said, sensors are usually dumb creatures that must have their data collected and interpreted by a microprocessor. For example you shouldn't think about sending rain gauge pulses by wireless because the wireless may fail to send some pulses due to interference. You should calculate the amount of rain and send that data, and repeat the message if the first one does not get through.

This Simple nRF24L01+ Tutorial may help.


I agree with Robin2, some things about this design do not make sense. WiFi can generally cover an area of at most a radius of perhaps 100m. Why would you need so many rain sensors in such a small area? Why might they give different readings to each other?

If you definitely want to stick with WiFi, then keep things simple by using a WiFi capable "Arduino" such as NodeMCU or Wemos Mini (or mini pro which has a socket for an external WiFi antenna). These devices have lots of flash memory to store data if the WiFi router is down. The problems that these boards bring is that they are not low power, so running on batteries can bring difficulties, and they have few pins, so more external chips will be needed to interface with the sensors. I would consider i2c I/O expanders and i2c ADC chips or boards.