Connetcing devices to 100m/yards

Hi everyone!
I´m working in a new project that requires comunication in a single room up to distances of 100 meters/yards using the best cost efficient comunication system.
The proyect is based on an Arduino, that runs a clock/timer and has multiple displays (big 7 segment displays). I need to keep all displays updated, showing all the same information (6 digits). The information to send is just some shiftout registers.
So I came to know RS-485, that uses a 2-wire cable and some cheap chips (Max485, for instance) and sounds right for the project.
The thing is that, as a hobbyst, this is getting complicated for me.
I´ve understood that I have to connect a 485 transmiter to the TR/RX ports, using something like thishttp://www.arduino.cc/playground/DMX/DMXShield, but I don´t know if I need another arduino on the receiver side, or can I connect the 485 receiver to say a 74HC595 shiftout decoder to manage the displays throug something easier.
Since this is a timer with HH:MM:SS, transfer rate is not a big a issue.
Maybe I´m totally out of course, and RS-485 is not the solution. Using any "propietary/customized" solution is accepted, as long as it is cheaper.
Help will be appreciated! Regards

I think 485 is just right for this.

You don't need an Arduino at the other end, just another transceiver.

That shield is good but only has a single transceiver, you need 3 at each end.

Also the 595 is not rated to drive LEDs. What type of displays are you using?


Rob

I'm thinking you're gonna want something like this at each location, not all connections shown, but you can see the idea.
MAX485s to receive the 3 control lines, power, ground, shift registers to drive the displays, current limit resisitors and the displays.

Depending on your displays, maybe you distribute 12V instead and use displays with Multiple LEDs per segment, and shift registers that that can handle higher voltages and current, such as TPIC6B595.

I have remoted lights that I drive with just straight TTL level RS232 (0 & 5V), it goes down 24/4 stranded wire with 12V & Gnd, I create 5V on the receiving end and have an arduino that receives it to decode the serial data. You're going a lot farther distance than me, 100 meter vs <30 meter for mine.

Thanks guys for the quick answers!
As you have stated, I'm not wiring the leds directly to the 595, I'm using some ULN2003 in the middle to power some piranha led bars/sticks.

Now on the arduino side: I have the shiftout output. Do I have to connect every one of the digital 3 outputs to one of the transceivers in what pin? Thats it or do I need some work to do in the software?
Regards

Three Arduino pins go to three transmitters.

If all the displays are showing the same data then all three signals go to receivers on all displays, IE the displays are wired in parallel.


Rob

Thanks again.
About the cable, I'm thinking of using UTP, 3 of the pairs wil be used for the 3 different 485 channels. Should I ground the 4th pair? In case I should. shuld it be on the transmiter side, on the receiver side or both? Both sides have independenty power sources. I don't know if this is relevant.

You need to have a common ground between all devices regardless of the power supplies, that 4th pair can be it. So ground it at both ends.


Rob

Since you're only sending data in one direction from one device, you can use RS-422 (which is very similar to RS-485, but a little cheaper because it doesn't require the ability to tri-state the transmitter).

You probably won't be able to use ShiftOut(), though, because the data rate is almost certainly too fast for RS-422/485. Almost certainly: I'm pretty sure about this, but not positive.

Grounding the unused pair might help a little with noise immunity, but you probably don't need to (unless you're planning to use this around arc welders or other extreme noise sources). If you do, only ground it at one end. This may seem counter-intuitive at first, but grounding both ends is often a cause of bad side-effects when the two ends are running off different power supplies and don't have a good common chassis ground.

One of the benefits of using RS-422/485 is that you don't need a good common ground.

You asked for the most cost-efficient system.

Wi-Fi will go 100 yards. Buy each arduino an ethernet shield and a wifi bridge -- google PepWave Surf 200 for an example, should be about $20. Put a linksys bridge in the middle of the room with an omnidirectional antenna. You'll have the whole thing working in no time.

It's the most cost-efficient because time is money and you'll save hours over running serial cable all over the room and then programming a serial protocol and debugging it.

Or go even simpler.
You need to build the card with shift register & current driver for the LEDs, yes?
Add a minimal arduino with RX receiver to drive the shift receivers: atmega, crystal, 2 22pf caps, 3 100nf decoupling caps, 1 pullup resistor.
Supply with 5v power.
Then build 1 minimal card with transmitter (or a promini with transmitter, RTC clock, and LiPO battery) to send out the time via virtualwire.

Sparkfun had a good Tx/Rx combination

doesn't look like they carry the Rx part anymore. Pity, the pair worked nice with virtualwire

Bet this pair would do the trick nice:
http://www.laipac.com/easy_434a_eng.htm

price comparable to what sparkfun had too
http://www.laipac.com/form2010/Standard_Order_Form_april2010.pdf

Grounding the unused pair might help a little with noise immunity, but you probably don't need to (unless you're planning to use this around arc welders or other extreme noise sources). If you do, only ground it at one end. This may seem counter-intuitive at first, but grounding both ends is often a cause of bad side-effects when the two ends are running off different power supplies and don't have a good common chassis ground.

Are you sure you're not talking about shielding here Ran. I know 485 will work without an earth return but AFIAK it's not reliable or recommended.

arduino an ethernet shield and a wifi bridge

promini with transmitter, RTC clock, and LiPO battery

I've got a Bachelor of Over Engineering as well, but we only want to light a few LEDs here. If wires aren't a problem you can't get any easier or cheaper than a few drivers and a CAT5 cable.


Rob

Wow, I didn't expect so much support.
Since I live in Argentina, ordering stuff takes a loooooooong time, and even the most basic IC have to be ordered overseas. And customs will distort the costs of many things (like WiFi routers or modules).
I'll stick to the cable option, because in this case manpower for laying the cable is free (this is a sports timer to be installed in a club, so all work is voluntary).
I'm worried about this:

You probably won't be able to use ShiftOut(), though, because the data rate is almost certainly too fast for RS-422/485. Almost certainly: I'm pretty sure about this, but not positive.

Has anyone tested sending shiftout info through RS-422/485 from the Arduino? I don't want to waith 4 weeks for the IC just to notice tha the solution doesn't work.
Regards

Has anyone tested sending shiftout info through RS-422/485 from the Arduino?

RS485 is good for 1Mbps at 400 feet so as Ran said it's on the edge.

But it doesn't really matter because you can write your own shiftOut function in 5 minutes that will work at any speed you like.


Rob

Thanks Graynomad.
What hardware can't, software can :grin:
I'll have enought time to write a backup function while waiting for the IC to arrive.
Regards

Graynomad:
Are you sure you're not talking about shielding here Ran. I know 485 will work without an earth return but AFIAK it's not reliable or recommended.

Actually, I was thinking of using the extra pair as a half-vast shield.

And you're right about it being needed for signal ground: I picked up the mistaken notion somewhere that the signal ground wasn't needed because the data is differential.

The spec says that it should tolerate a ground difference of +12 to -7 volts, but it's definitely not wise to bet that you'll never exceed that range on a long cable.

Thanks for catching that: I'd hate to have pgmartin's project screwed up by my mistake.