Computer to computer serial through Arduino Uno TTL

My goal is to get an audio stream from one computer to another. The caveat is that the computers are over 100ft away. I'm using one arduino uno which will output serial commands to an RS-485 chip which is then received by another uno on the other end. Both computers are Raspberry pi's.

Using software serial it was pretty easy to push data from one to another but speed started to become an issue. Anything over 19200 baud was getting errors. I would like to do 115200. I took the first arduino and jumpered the reset to ground making it bypass all the coding and send it's signal right away. This made the 115200 much more reliable but nowhere close to perfect.

My problem is I can't get the second arduino to receive data as a ttl to serial converter. I can get the rx, tx pins to light up. I've tried every different combination of wires. For the sake of testing I'm not using the RS-485 chips. I'm directly connecting the rx, tx pins on the arduino.

Is it even possible to receive serial data from one arduino to another when both are connected to a computer? This is the real question. I just want to know if it's possible to do this without having to do software serial because it's too slow for my needs. Is there a better way to achieve rasp pi to rasp pi audio streaming?

Why put Arduinos in between? There are USB-to-RS485 or USB-to-RS422 adapters that you can buy of the shelf. No idea how well they work on a Pi, but should be possible if the Pi can recognise them.

Alternative is to use the Unos as USB-to-TTL adaptor; permanently hook a wire from reset to GND so the 328P chip is inactive. Do this on both Arduinos.

If my thinking is correct, the below should then work. Hook your RS485 chip to the RX pin of the Arduino that is connected to the Pi that sends. Hook your other RS485 chip to the TX pin of the Arduino that is connected to the Pi that receives.

So it is possible. Awesome. I've tried doing your second option using two arduinos as usb-ttl. I can't get the second arduino to send its commands to the computer. I get nothing from the serial port. I've tried every combination of wiring I can think of.

Would you be willing to look at some python code and see if it's a coding problem?

I'm not a python person. But you can post.

I suggest that you first try using serial terminal programs (e.g. serial monitor) at both sides and send text. That will eliminate the link as a cause of the problem.

Just to make sure 1) You're using a max485 at each side? 2) The max485 at the sender side is enabled? I think (can't check at the moment and no practical experience) that one of the pins needs to be pulled low to enable the output. 3) Similar, the max485 output at the receiver side needs to be disabled.

Note The approach will only work for one-way communication.

I've actually removed the rs485 modules and linked the rx, tx pins directly too each other. I'm not finding anyone else who has had this problem. My guess is something has gone bad with one of my boards.

For testing purposes I will go ahead and remove python from the equation and instead use the arduino ide serial monitor to send things back and forth. Thanks for your help. I will update this thread if I find a solution or have another question. :)

BobStraitFTW: I'm directly connecting the rx, tx pins on the arduino.

1st just checking, you also connected the grounds?

You could get a board with a 328PB chip that has 2 UARTs, or a 1284P board with the same (and 40 pins, 16K RAM) or a Mega2560 with 4 UARTS, 50-some pins, 8K RAM.

You could make 1284P boards-or-less of your own, the chip ran $5.50 ea 2 years ago. Mighty 1284 example is the 2nd one on this tutorial blog (not my site): http://www.gammon.com.au/breadboard

Can't the RPi pins interface with the RS485 chips directly?

I ended up having to scrap the idea because I couldn't get it to work and it was taking to much time. My theory is the software serial library is just too slow to keep up with the data it was receiving. For the receiving end to get a "chunk" of audio data which should have been one second... It took a few seconds and just played crackling noises.

The overall objective was to get a system that would transfer audio data through RS485 and play that audio on the other end. We ended up going with outputting the audio on a Raspberry Pi through its audio jack and pushing that through an unbalanced to balanced converter. (Aux to XLR)

This gave us long range audio with no interference which is why we wanted RS485 in the first place.

I only post this now for anyone who was interested in how this problem was resolved. Or not resolved. That's for you to decide. :)