Which protocol to select??

Hello,

New comer to the forum, new maker as well. I am an engineer with fairly good understanding but still knows only a little in electronics.

My first project : An automated watering system with data logging.

I have a rooftop container garden, I am planning a watering system that will monitor the soil moisture and water accordingly. Well, that is the easy part, I already have it working and ready to monitor 6 containers out of a single Uno.

I also want to get all my 30+ containers monitored, easy, I'll multiply my module.

Now comes the issue. I want some sort of data logging so that I can have nice visualization of the soil moisture and couple it with weather, photos taken by a Raspberry Pi station,... I then want to get the measurement sent back to a centralized point. I already gave some thoughts but seriously need help as I am now stuck.

  • WiFi : Will it be reliable enough is my concern. On top of it, I would need a full WiFi deployment, not so sure I want that on the rooftop that is now out of range of the home network.
  • Bluetooth : same concern about the reliability of the connection, plus, the distance might be an issue as the shed that will host the central part is far from some corners of the garden.
  • Ethernet : I really would not like to have to wire my whole garden, on top of it, that will be a massive amount of cabling.
  • I2C : I have here no idea how the identification works though from what I understood, it might be the way to go

From the above, I ended up thinking of a kind of powerline communication. as per below

  • A general bus connecting all the modules delivering the DC 12V power supply (I need 12V for the solenoid valve) communication signal will follow the same line.
  • A central command that firstly identify how many modules in the system then, for each module
  • Send an activation message
  • Wait until the module performs its job
  • Receive message such as : "here is module , on my line 1:, moisture=500, watered 1 min, on my line 2:, moisture=400, watered 1 min 10, On my line 3, nothing connected." (containerNb and module name would be hard coded in the module at installation time)
  • Log the message to whatever I finally choose (most likely my home server, but maybe the cloud)
  • Redo the same an hour later

Questions are then :

  • Is I2C usable in such way? (i.e. network and not ad-hoc)
  • Can I overlap simply the signal on the powerline?

WiFi : Will it be reliable enough is my concern.

Probably not. Unless you don't mind resetting the whole system anywhere from once a week to once every 15 minutes.

Bluetooth : same concern about the reliability of the connection

Much more reliable, but, distance is (very) limited. And, both ends need to stay awake.

I2C : I have here no idea how the identification works though from what I understood, it might be the way to go

Well, I don't. I2C is designed to enable two chips on the same board to communicate. That means that distances are VERY short.

Can I overlap simply the signal on the powerline?

X10 does that. Simple it is not.

Forgot to mention that XBees and/or the NRF radios are probably much better choices.

Even if a cable is no problem, wireless might still be easier.
XBee is good. Or one of the transceivers supported by RadioHead.

Sparkfun has two nice lists:
https://www.sparkfun.com/pages/wireless_guide
https://www.sparkfun.com/pages/xbee_guide

When you want to use cables, then it will probably become RS-485 over twisted pair cable.

If the distances are short, perhaps some kind of slow serial daisy-chained data lines is possible. But that would be less reliable than wireless (because of the long chain).

When you want it to be very cheap, Ebay is full of 433MHz modules (or 315MHz). With 433MHz modules, every container could send its data every 10 minutes. A Central Unit would receive everything and try to make sense of it. Some messages might get lost (for example if two transmit at the same time).

Thanks all for the answers

Koepel:
When you want to use cables, then it will probably become RS-485 over twisted pair cable.

That's what I needed!
RS485 seems to be affordable and reliable, thanks for the pointer.

I have tested the modem LoRa (10 km range) and are really performing

you just have to pay attention to the law on local frequencies and transmission power

look at my example with a combined GPS and my site's web interface and log

If you need help, please ask.

Your project interests me

http://iot.dataino.it/beta/view/site/lora-arduino-gps.html

I use RS485 over cat5e. DC Power is also supplied by the same cable using one of the available pairs.