I've got some issues with interference and I'm not sure what to do to reduce them. Both cases involve a long wire which is likely where the problem lies.
First, I've got an Arduino duemilanove in my attic that is collects temperature measurements from around the house. It is located in the center of the house and connected to a laptop by a USB cable that's about 16 feet long. I realize this is a little long for USB so I put a powered USB hub at the computer end which seems to boost the signal enough to allow programming about 80% of the time and serial communications 100% of the time at a low baud rate. Once in a while when I programing (via avrdude on the console) it gets about 70-80% of the way done and fails, saying the programmer is not responding - sometimes I can just reprogram it again and other times it will soft-brick it and I need to unplug it from the USB and plug it back in before programming works. I'm pretty much chalking this down as "my USB cable is just too long".
In the second case, I have the same device connected to a 4x20 char LCD via a 14 foot Cat 5e cable - this is used to display the zone temperatures on my wall. The Arduino is connected to the LCD with three wires: Vcc (+5vdc), GND and Serial TX. I have the baud rate set to 9600. When the connecting wire was short everything worked flawlessly, but with the longer wire, occasionally I get some strange characters on the screen which are quickly written over when the screen is updated. I'm sure the problem is the wire but I'm trying to figure out what I can do to resolve it. Besides shortening the wire, what are my options? Since the wire is UTP, should I put the serial TX wire on a wire that is twisted with the GND? Maybe isolate it completely? Are there some filter circuits that I can use, or ferrite cores or something?
I'm not 100% sure how a serial signal works, but from what I understand it transmits data by leaving the line up or down for a precise amount of time, which is then measured and compared to the baud rate, so if it's up for say, 100 usec and down for 20 usec, it might mean 5x "1" bits and 1x "0" bit. If this is the case, then lowering my baud rate should stretch out the I/O and make the bits easier to differentiate - what do you think? Also, I suppose I could take something like a 5v-3.3v dual level shifter and put it half way down the cable, then shift the TX down to 3.3v and back up to 5v, effectively cleaning the signal.