Connect OpenROV to Sensor Payload via External UART


Hi all!

At work, we are using an OpenROV to carry a sensor payload underwater. Our sensors are managed by an on-board Arduino that can display sensor readings on it’s serial monitor. We would like to send data from the Arduino to the OpenROV Beaglebone so we can see it on our computer above ground. I believe the OpenROV has external cables for I2C communication, but are there any for UART Serial communication? I have the system working flawlessly through Serial comms, so it’d be great not to have to change up my code for a new communication protocol.

I imagine there would have to be hardware modifications? I had issues finding documentation covering this, so any insight is very helpful.

Thank you!!


Alright, so I see there are AUX cables that come out as well, is it possible to connect these aux to a UART port on the beaglebone? Or how does this work since the Beaglebone pinouts are taken by the OpenROV controller board? Thanks!


Hi @jlewallen18:

You can definitely hook up a payload with a UART interface to your OpenROV, but its going to take a little bit of work on your part.The first thing you should do is grab a schematic for the controller board of your OpenROV. You can find them on our Github site here.

There are six auxiliary wires that come out of the OpenROV housing that can be used for whatever you want. Note that on the OpenROV 2.8, five of those wires are pre-wired for lights and an external servo, so to use them for a UART you will have to break the existing connection to free up those wires. Assuming you have a model 2.8, I would re-purpose the external servo wires (TP23-TP25) into a UART connection. If you look at Sheet 2 of the schematic, I would remove R70 and R71, freeing up auxiliary wires TP23 and TP24 for the transmit and receive lines. TP25 can be left as a ground signal.

Then on your controller board you’re going to have to run wires from the test pads TP23 and TP24 over to a free UART port on the microcontroller. The microcontroller on the controller board is a ATMega 2560, the same as is used on the Arduino Mega. If you study the free microcontroller I/O that is brought to the header sockets (Sheet 2 again), and cross them against the I/O of an Arduino Mega, you will see that there are a number of UARTs free for the end-user. Note that the AtMega serial ports run at a 5V level. If your device is 3.3V or true RS-232 (12V I think…) then you will have level-shift the signals appropriately.

This leaves writing the software to get your telemetry topside. If you’re using software 30.0.3, Charles Cross wrote this post on how to develop software for your unit.

Hope this helps. Let us know how things progress.



Hey @Walt_Holm thanks for the guidance, we finally got to modify the rover for UART. I guess I’m a little unfamiliar with the Cloud9 structure, but would it be possible to access a serial monitor (similarly found in the Arduino IDE?) Now that we have the UART connection, it would be real convenient to just pull up the serial monitor to input commands above water, if that makes sense. Our sensor module sends live textual updates and commands back and forth between sensor and serial monitor Let me know if you need more information about the project!

EDIT: I see that some code has Serial.print() commands, where is this being printed to in the Cloud9 structure?


@Walt_Holm just by looking at the HTML structure, I do see a serial monitor that can be displayed (currently at display: none). Which is controlled by “U” on the keyboard. Doesn’t seem like i see serial input though


@Walt_Holm Its been about 2 weeks, just wanted to follow up on this!


Hi @jlewallen18:

I’m not a software person, so I can’t help you with that part of the problem. Hopefully somebody else on the forum can help, or you might try contact OpenROV support.