Additional sensors to the ROV


We would like to attach multiple other sensors to the Open Rov. I planned on putting a box underneath with the sensors, hooked up to their own power source. They where also going to relay information to an arduino board to put all their info to one spot. But i wanted to know if there is anyway we can use the ROV's tether as a source of relaying info to the surface. You had stated in the instructions that the two extra white wires could be used to connect an extra sensor. Is there a way we can connect an arduino board? For more information on the sensors, we are using an Atlas Temp Sensor, Atlas PH Sensor, and last but not least a Geiger Counter. Any response would be great. By the way we are a High School research team, that is why we would like to hook up all the sensor.


Hey Scott,

Cool! I can think of a couple of approaches for extending to the additional sensors. The most straightforward that I can think of is to use the I2C bus and let the telemetry from the sensors flow up through our existing connection with the tether. If you are building a 2.6 with the controller board, then the instructions should have you extending 4 wires through the end cap that are normally used to connect to the IMU. This is a bus protocol so you can daisy chain the same wires from the IMU to your sensor package. This assumes that you are then using an Arduino as the core to your sensor package. The Arduino can then be an I2C slave to the Arduino that we are using inside the electronics housing. The software to pass the telemetry on through the system is pretty straight forward.

Other's may have suggestions as well. If you have questions about this approach let me know!



Okay... this is very VERY cool! Payloads like these are exactly what we had in mind when we designed the ROV. Good news too- I think you can do it! It's going to require the help of some fairly capable programmers though...

As you pointed out, there are several (6) auxiliary wires that come out of the main tube and can be used to communicate with external devices. Four of these wires are used if you've attached our Depth/IMU sensor board, but the great thing is they can ALSO be used for additional devices at the same time. The system communicates using I2C which can be attached to multiple devices in parallel as long as they use the same voltage and don't have conflicting addresses.

Even despite that, it may end up being easier to use a separate communication bus. My recommendation for a general architecture would be to wire the temperature sensor and PH sensor to an external microcontroller (like an Arduino) that is contained in a liquid-compensated container (to make it pressure-proof without a fancy enclosure) and have that package the data it collects into a protocol that can be sent back to the main computer via the AUX wires (using the existing I2C bus or otherwise). Power can come from the ROV's power source (by way of extra AUX wires if you have them, or by spliceing off the battery tube wiring)

Since the Geiger Counter contains a Geiger-Muller tube (which I don't suspect would be able to handle much pressure), I'd suggest that it gets mounted inside the main tube behind the camera and communicates with our onboard Arduino.

To get all this stuff to communicate to the surface through OpenROV Cockpit, you'll have to write some sort of plug in. Luckily, Brian Adams has started making some pretty helpful tutorials about how to do this. As I mentioned before, you'll need someone who's pretty programming savvy with Arduino and JavaScript.

I've drawn a diagram to illustrate:

As you develop this, please keep in touch with you progress. We'd love to help however we can!




First of all, welcome!

I m doing a similar thing on my ROV. I want to connect to the rov the entire enviromental kit of atlas. My idea was to connect all to an arduino with it self source of energy and connect the arduino to the ROV by USB, I2C or zigbee. I m working on it just now, I ll tell you when I have results!



Another thing I should solve, is that if I use the I2C to connect the slave arduino I would have to find a way to connect the IMU to the slave arduino with the other sensors.



Hey Javier,

Is that because you want the other sensors to have access to the IMU data stream? It is okay for both the Arduino in your payload and the IMU to both be slaves to the Arduino on the controller board. Just daisy chain the wiring.



Conscerning the Geiger counter-

---Alpha emission can only penetrate a a fraction of mm in water, and the acrylic housing would completely block it.

----ßeta emsssion can only penetrate a cm in water, and the acrylic shielding would block it very quickly also. I beleive 1/2 inch of acrylic is the standard for completely blocking the radiation.

---Gamma or Xray emissions will penetrate through water only up to about 50 cm, but Geiger-Muller tubes are generally tuned to be sensitive to ßeta rather than X-rays.

Therefore, you will have a very tough time with this, and honestly Im very doubtful if you will be able to get any usefull information out of an underwater geiger counter unless you plan on taking it in/around Fukushima.

This phenomenon is exactly why they store nuclear rods in water.

As for the PH sensor, we put some down in a Navy program a few years ago, they were the thin glass bulb type. Make sure you do not have any air bubbles in them as the paper thin conductive glass will shatter due to the pressure differences. You can look into the technology based upon ion detectors on a chip, look for hydrogen ion sensitive ones, the technology was too infantile for us to use them at the time, but im sure its came a long way.

Temperature sensors.




Were you a nuke? I was an ELT. That's where I learned water chemistry.


No i was Radiation Safety manager for our building @ grad school in Pasadena.

As for the Navy programs, we are subcontrated to make a lot of different detectors for the government at my current job. Some go ~10 miles down, some go a few dozen feet, but most stay above the water.

We wanted to throw a geiger counter on a device a couple years ago that was designed to warn divers of chemical & biological hazards, but the issues with penetration made the device unrealistic.


There are new pH sensors that are gel filled. Those are affordable and might work for OROV projects at 100m depths. I haven't played with them much, but I bet they'd get the job done. I don't know about their equilibration time or anything like that, though. Here's a link. Might be worth checking out.


HI, I had never seen that, how does it work?

Thank you for the idea! ;)


Thank you for the idea, I'll do it as you say. Is that the utility of the splitter that put Ken?


As far as I know, it works like a USB hub. Simply plug in the devices and configure as needed. Check with the 3DR guys to be sure.


Yes. It just makes the whole daisy chain thing much cleaner.


Hi Eric!

Do you have any idea of codes should I touch to do this? I mean I suppose I should set the arduino of the controller board as master, make a function to request the Data of the slave arduino and then send it by the tether to the computer, and in the cockpit I should touch it a little bit so that it shows this data. But I'm not quite sure what codes should I modify.

Thank you!


I2C is a bus- you can connect your slave Arduino to it directly, as long as the voltage levels are correct.

The controller board breaks out the I2C bus from its internal Arduino Mega and brings it to the header pins. There are two sets of connections, one running at 5V and one running at 3.3V. The 3.3V connection is also brought outside the ROV, via the DB-25 connector, to attach the IMU/Depth sensor.



Atlas-Scientific has a sample code of arduino for their sensors, I don't know if you have saw it. Is more o less the same I've upload here. This is the code to connect them by a serial port, but if you prefer to use an UART they have the code also.

With the ideas we've received here I suppose the steps we must follow are, adapting this code to receive and send the data by I2C instead of serial.

Adapting the code of the arduino board to send and received the orders to this arduino (I don't know were are we supposed to change this for now).

And adapting the cockpit code to show this data in the computer. There are some tutorials of this.

Am I right?

Could some good programmer told me something more about the second step?


379-CodigoSensoresOrdenador.ino (5.84 KB)


Do you know if there is any tutorial of how to add an I2C device to the ROV?


Hi Javier:

There's no tutorial that I'm aware of. I would recommend that you buy an Arduino, and then try to get your sensor running with the Arduino. After it's running there, porting the code over to the OpenROV software is straightforward.

If your sensor runs on a 3.3V I2C bus, you'll need an I2C level-shifter, similar to what's on the controller board. I know Adafruit sells these, I suspect other people do as well.