Hi all, I finally started diving into the world of microcontrollers/-computers like the RPi3 and the Arduino Uno. Now, while I do have a good technical background in machine-engineering I’m unfortunately fairly new to programming and setting up networks (both from the physical but also digital pov). Yet I’m determined to learn. As I tend to always start with (too) big projects, I’m planning to set up fully automatized aquaponic-glasshouse. I think the concept of the symbiosis of growing plants and rearing fish at the same time, while only using limited resources is really interesting, which is why I would like to take part in this. (And NO, it’s really not going to be used to grow any kind of illegal plants)
Based on several other similar hydroponic systems, my plan currently looks like this: On Raspberry Pi 3 will be used as the master, while the Arduino boards will be used as slaves having sensors and relays attached to them. For now there will be 3-4 Arduino boards, each having the same hardware/ sensor, but this number might be increased in the future. The network setting should therefore also allow adding more boards, without re-configuring everything. Communication will have to be two way, in the sense that the slaves shall constantly report sensor data (such as water-temperature etc.) to the raspberry pi while the pi will control devices (meaning, turning them on/off both on a regular schedule but also based on the incoming data) attached to the Arduinos.
The programming part will definitively be a challenge (at least for me as a beginner), but it is not my main concern at the moment as I am still struggling to find the ideal solution in terms of connecting the devises.
To define the general system requirements: Due to physical restrictions the connection has to be wired (so WIFI, Bluetooth, RF etc. are not an option) and the Arduino sensor nodes (at least some of them) will be as far away as approx. 100m from the pi. (Several tanks in different locations)
As the system should ideally be running 24/7 for at least a year, reliability is key. (Of course regular wear and tear can not be completely excluded and some maintenance can be needed from time to time, but it should be held at a minimum)
The budget is not my main concern. Of course the whole set up should not cost a fortune but $100 more or less will not be a problem, as long as the system fulfilling the requirements.
Data transmission rates will probably not be really high, as the sensor data should only be a few byte per reading. Yet data corruption via collision of data shall be ruled out as good as possible. For the “incoming” sensor data this would not be the main problem (if just one reading is incorrect this could be compensated while processing the data elsewhere), BUT for “outgoing” (RPI->Arduino) commands this will definitively a problem. If f.e. a valve is not closing as the command is not going trough I’ll have a big problem.
Finally, the Arduinos could be powered at their location as a power supply will be needed close to them anyway to provide energy for the appliances they are controlling. Therefore the connection-cable will solely be needed for communication purposes.
As far as I understood from my research up to this point, USB, SPI and I2C are not a viable option as their maximum cable length is “only” around a few m (More with range extenders, respectively is that usually defined as the max. length for max. bandwidth communication, but nowhere close to what’s needed) Is this correct so far?
When it comes to longer distances usually the terms Ethernet, RS232, RS485 are brought up. I do have a basic understanding of Ethernet connections (from what you’re using in a regular office network) and read a bid about the other two, but unfortunately they are usually not really discussed considering using them to connect RPI and Arduino boards. Especially not when it comes to connecting multiple Aruinos to one RPI.
My main question now is which of these options is the most suitable for the above described scenario and using these two boards types? Are there any other options that I missed so far?
Really looking forward to your input