long distance wired data transfer via Ethernet (cat6) cable

I come to the best, as I am still new to data transfer with arduinos. I'll start with a bit of background for the project. I am currently working on an ROV submarine. I am using a wii nunchuk to send X and Y analog values to an arduino mega. The mega needs to send the values to an Uno through a 120ft cat6 cable. I have used the Wire.h library to send data through short cables, but longer cables do not work. The signal does not need to be super fast, but I gotta get data flowing before I worry about speed. The other issue with the project is cost. I don't have much money to put into it, as its a hobby. If anyone can help me figure out how to send data long distances with the ethernet cable, or point me in a better direction please let me know. Thanks in advance, Andrew.

The cheapest option is probably to use RS-485 drivers (p.e. MAX485) to send the data. As you already have cat6 cables you may also use Ethernet Shields on both sides that just costs a bit more. As an advantage you get easier library handling (on the RS-485 side you have a lot of possible protocols, all with pros and contras).

thank you

Regular CAT6 cable is air spaced and therefore will collapse under water pressure. What is the sealing arrangement at the ROV end?

Use the forum Google search function in the upper right of this page to search for the key words of your project like “ROV”. You will probably find many similar previous project discussions and code to get you started. You might think out of the box and maybe just use a piece of coax cable to communicate between two RF or wifi boards on each end of the cable. RS232 can be used over long distances at lower baud rates. If you already have the cable, then testing between the two boards should be simple. The ROV needs to be pretty good size to pull cat6 cable thru the water. There are sites that are dedicated to DIY ROV builds.

I would suggest using differential drivers properly terminated. RS 484 driver chips and boards are cheep and would do the job. A cheep and dirty trick is to use a RS485 driver and receiver. Simply connect one to receive your data with the proper interface physical and wired for receive only. The second one connected to a digital pin on the Arduino. Wire that one so the transmitter is on all the time. Then simply turning the Arduino pin on and off will cause the receiving pin to cycle. Viola a cheap way to run long wires from a Arduino.

Hi not sure if this will help but you can try to look at the 3-wire-protocol it is slow but it's fairly accurate in terms of data transfer

https://github.com/krakenjriot/KJR_3-Wire_Protocol