Master and Slave Arduino over 1500' of buried telephone cable

I've been trying to find a way to get two or more Arduino's to communicate with each other over long distances.

My situation is a farm house 1200' from a barn and another 300' to a "shop" I'd like to be able to have an Arduino in each building talking with each other. We buried telephone cable between all three buildings, the cable was meant to be buried and is standard telephone cable. I believe the cable contains three twisted pairs with no shield (we are only using one pair).

I'm avoiding wireless and even WIFI networks at the moment, hoping there might be a more basic way.

Any thoughts?

Would RS485 be a possibility?

Thanks

RS485 is definitely the way to go.

You could use "Current Loop" with optoisolators.

LarryD:
You could use "Current Loop" with optoisolators.

AKA telegraph line (which is more properly, RS-232).

Which is what RS485 was developed to replace. :smiley:

soxisix:
Would RS485 be a possibility?

Yes, this sort of thing is what is was designed for.

What are you bandwidth requirements? You'll probably have to limit the baud rate to something quite slow.

Being buried is probably an advantage - the earth will shield the cable from radio waves.

Thanks for all the replies.

Unfortunately It is buried in the same trench as the power and water. I am not sure how close together the wires are but I'm willing give it a try.

Do you think I can cheat and use the RS485 shield offered by sparkfun? RS485 Shield - DEV-11959 - SparkFun Electronics

I really do not need any bandwidth. I'd like to be able to monitor and set temperatures in the both buildings, control a couple of relays in each building and have the ability hook up other senors down the road, smoke and heat sensors etc..

I've done some reading on RS485, I'll do some more on "current loop" as I've never heard that term before.

I'd be happy to follow the NMEA sentence format used in the marine industry if you think it would work over that distance? Maybe I should keep it simpler however.

Again, Thank for you time!

That shield would be a fine starting point.
Connect one to each end of the wire with an arduino; send a simple test message from to another receive it, and return a response, confirm the wiring is all good. Then play with faster data rates, start creating more complex messages for whatever your need is.

If you also have a power line then you could give ethernet-over-mains a try. It might be overkill for what you need but doesn't cost a lot and is available off the shelf, and also gives you almost infinite room for growth for the other features you might want to add including non-Arduino ones such as web cams.

"Current loop" simply means that you have a transistor controlled by the sending device with a resistor to limit the current (probably supplied by 12V or more) and at the other end, an opto-isolator whose LED is fed from the line and output transistor with pull-up, feeds into the receiving device. It is minimally different from simply connecting an output and ground to the line and at the other end, the line into an input via another transistor.

The limitation is distortion of the voltage and currents due to capacitance on the line. The opto-isolator prevents problems from "ground" voltage differentials. RS-485 uses differential transmission to counter both of these problems.

RS485 also allows master & slave to communicate over the same pair of wires.
I suppose current loop could be made to do the same, with an opto on both ends and each end agreeing to only transmit when appropriate.