Hello.
I'll start by saying I am new to Arduino, and have minimal electronics experience.
I have been building an ROV on and off for the last couple of years. The main hurdles I am running into are the control boards and the tether. As I said, I don't have much electronics experience, so I never liked the idea or had the energy to build my own control boards especially since I didn't really know what I was doing. Well, the Arduino changes all of that, it eliminates the need to design/build my own controller and to me it seems like an excellent platform for this kind of a project and for learning. I have many questions regarding the Arduino's actual capabilities but it mostly breaks down to the number of inputs and outputs I need and then how to get sensor information back to the surface.
To best explain the issues I am thinking about, I will first list the intended specs of the ROV:
Control Boards:
-TX Arduino Uno (surface, interfaces with PC or PS2 controller)
-RX Arduino Mega (ROV)
Tether
-150' to 300' of Cat5/Cat5e
Power Supply:
-2 onboard (ROV) 12v lead acid batteries, typically found in alarm systems
Sensors:
-Barometric Pressure Sensor (needs 2x analog in)
-Compass module (needs 2x analog in)
-RCA Camera Module (needs it's own twisted pair over the cat5)
Actuators:
-4 Thrusters, 2 for up/down/roll, 2 for fwd/rev/left/right (for now I want to stay away from proportional/speed control of the thrusters as there seem to be only dual motor shields or breakout boards out there)
-4 Lights
-The Arduino Mega will drive a relay board that will control the motors and lights (on/off), one relay for the lights, one relay pair for each thruster
So the biggest issue I think is the communication between the two Arduinos. The configuration that sounds the best to me is to use two Arduinos, one at the surface(UNO) one on board the ROV(MEGA). That way I can interface a joystick or PS2 controller to the Uno on the surface, or even connect it to a PC with an ethernet shield or something. And also with the Mega onboard the ROV I have tons of extra pins for expansion. Anyways, from what I understand, the signal strength from the Tx and Rx pins built on the Arduino would not be adequate over a distance of 300' of cat5 on a twisted pair. I have googled as much as I can on this issue and it seems the best way to do it is over RS485 for its long distance capability.
I found this tutorial : http://www.gammon.com.au/forum/?id=11428 to breakout the Arduinos to RS485. Now this setup (correct me if I am wrong) is a half-duplex? Meaning it cannot send/receive simultaneously. I'm wondering how much this would affect the sensor data updates, making their way back to the surface, since I would probably almost always be moving the unit forward/backwards or something, therefore almost always transmitting. Again correct me if I am wrong, but this could be overcome by using a full-duplex RS485 setup? And if I understand correctly, this means I would need to use two twisted pairs on the cat5?(which is fine).
I have seen some different configurations for this on google anyway such as using one Arduino with an ethernet shield straight to a PC on the surface. Now this is not Ideal since I need a camera onboard and I have read (correct me if I'm wrong) that the Arduino does not have the ability to decode video, let alone stream it. So if I use an ethernet shield directly that takes away my twisted pair for the video signal. The solution to this that I have read is having an network switch onboard the ROV with an IP camera. That idea seems mickey-mouse because it means extra weight and power consumption.
The other thing I was wondering, based on the sensors I listed above, does this seem like too much information to be passing along at a time? (ie the Barometric Pressure sensor has a built-in thermometer, and can calculate altitude etc). I suppose it would depend on how often the program would poll to update the sensor values? That's also why I want to use the Arduino Mega on board, because it has more processing power.
Am I overthinking any of this?
Anyways, any help/guidance at all would be greatly appreciate.
Thanks!