Using RX/TX pins with 9-pin serial port

Hello,

I need to talk to an Arduino Duemilanove board from a computer over a fairly long distance (100+ ft). USB can't achieve this sort of distance, so I think using the built-in USB port and FTDI converter is out. However, a normal RS-232 serial connection should be able to deal with this distance just fine.

I've seen some references to using pins 0 and 1 (RX and TX) directly for serial connections, bypassing the FTDI chip, but I haven't seen any details on how to implement this. My naive attempt to simply connect tx/rx/gnd to pins 2,3,5 on a serial connector did not work.

If I understand correctly, the microcontroller works with TTL 0/5V signals on these lines, while a computer serial port works with +/- 3 to 15 V. What methods can be used to make standard RS-232 work with the Arduino? I've seen some references to MAX232 chips - is there a particular one that is recommended? I've also seen other PIC microcontroller circuits that use transistors to switch +/-12V for outgoing TX, and a voltage divider for incoming RX. I'd be interested in hearing the pros and cons of the different ways this is commonly done.

Thanks, Kevin

You might take a look at the schematic for the original serial interface Arduino:

http://webzone.k3.mah.se/k3dacu/arduino/releases/serial_v1/arduino_serial_v1.png

Just extend pins 2,3, & 5 as far as needed on the cable; this sort of "component level conversion" should work ok; otherwise go with the MAX232 chip.

Buy one of these: http://www.nkcelectronics.com/rs232-to-ttl-3v--55v-convert232356.html

However, a normal RS-232 serial connection should be able to deal with this distance just fine.

Since "normal" these days is usually something like a MAX232, which doesn't do the maximum RS-232 voltage swing, communication over a 100-foot cable is a little iffy. Especially if the environment is electrically noisy.

It'd be safer to use RS-422, which is spec'ed for longer cable runs, with a chip like the 75179. That would put you well inside the nominal limits, instead of pushing them.