ROV/AUV Interest Group -- A Hack-A-Thon CTD+ 24h Build Results --



Greetings enthusiasts!

What a day! In a 24-hour hack-a-thon, out here in Livermore, myself and two colleagues endeavored to design and test hardware and software; supporting a CTD+ sensor suite, targeted for our ROV projects. It was intense, it was fun, and we mostly succeeded in developing a prototype environment for the sensor suite and software framework needed by citizen science aficionados.

A CTD is a Conductivity, Temperature, Depth sensor system used in marine science to track, you guessed it, salinity, temperature, and depth during scientific expeditions and environmental monitoring. The + on the end of the CTD symbolizes the extension of the standard sensor suite which is typically found on buoys, ROVs, and other marine platforms. Though our hack-a-thon results cover only the LTD component (L= ambient light), the framework allows for any number of additional sensor and actuators (pH, water sampling, hydrophones, etc) to be easily added to the package.

Why didn't we get the C in CTD finished? Well, we ran out of time, but do not worry, I'm adding the conductivity sensor and a hydrophone this week!

Ok, enough about stuff that no one really cares about and get to the good bits. Let's start off by looking at the hardware we used in the 'thon'.

Temperature Sensor:

tempThe LM35CAh Temperature sensor is a 3-lead 5VDC sensor with the following ranges:

  • Supply 0.2 to 35 VDC
  • Output -1 to 6 VDC
  • Operating -40 to 110 C

Wiring recommendation: from

Pressure Sensor:

pressureThe MPX4250AP pressure senor is a 6 lead 5VDC device with the following ranges:

  • Max Pressure 1000kPa
  • Operating Range 20 to 230 kPa
  • Operating Temp. -40 to 125 C
  • Supply Voltage 4.85 to 5.35 VDC
  • Supply Current 7.0 to 10 mADC
  • Sensitivity deltaV/deltaP 20mV/kPa

Wiring Recommendations: from

Light Sensor:

lightThe TSL35R is a 3-lead 5VDC sensor with the following rages:

  • Supply 6VDC
  • Operating Temp -25 to 70 C

Wiring recommendations: from

Salinity/Conductivity Sensor:

Note: This has yet to be integrated...I'm working on it!

In process. Belladona, at: , gives a vary nice tutorial on the electronics and testing of the conductivity sensor. Once completed, I'll post evaluation notes and integration.

Micro-controller Unit MCU:

rasp2You can find all the Raspberry Pi information here:

Here is a snapshot of the setup we used (minus the Pi):


The Pi case was laser cut here at Robot Garden and can be found at:

Although, the final ROV mounted project will use the Arduino UNO-BeagleBone integration, we wanted to look at a big-brain implementation using the Pi as the high-level MCU first.(we are still waiting on the beagle bone order)

Salient Points:

  • Running Raspbian OS
  • USB to Phidgets Interface
  • C++ sensor code
  • Node.js for client-server model
  • Phidgets web service to handle publishing data to the web browser.

Sensor Interface Kit:

phidgThis is an 8/8 Digital I/O with 8 Analog inputs. Vary handy kit for both Phidget and non-Phidget sensor integration projects. Though the solution for the ROVs uses an Arduino, we wanted to look at a big-brain implementation, ideally having the Pi and Phidgets as an interface for prototyping.

You can get more data on the 8/8/8 kit here:

Prototype: With Phidgets and Pi


The sensor package, integrated onto a standard breadboard, connects to the Phidgets 8/8/8 via the three conductor leads, connected to the analog input. One lead is 5vDC, the second lead is GND, and the third is SIGNAL. One VDC and GND connection is made to the power rails of the breadboard, and the signal leads from the sensors are then plugged into the signal pins. The Pi was then connected via USB and the C++ sensor suite code was started. This code was running independently of the browser for testing purposes. Once the sensors were confirmed, the Phidget web service was started and calls to the interface kit were made and via a Phidget node.js script that collected the data, manipulated the raw values for interpretation (F degrees, PSI, etc) and handled the browser get commands. The data was then sent through select packages of the Google Data Visualization tools, Google Chart.

Example: from


  • Raspian
  • Node.js:
  • C++
  • Phidgets Web Service
  • Midori Browser (it comes with Raspbian)
  • Google Chart Tools


Ongoing.The 24hrs were taken up mostly by downloading and compiling support libraries on the Raspberry Pi. Building large libraries on the Pi is cumbersome due to processor speed, amongst other things. However, the ground work now exists. The sensor setup and fusion was completed satisfactorily. I will be forging forward with the Node.js solution and web browser data visualization in the coming weeks in an attempt to integrate onto the ROV platform. The Arduino-BeagleBone integration is planned in the next few weeks as well.


The Pi-Phidgets solution was educational in that we learned the subtleties of Node.js and polling/publishing the real time data using a web service. This is ideal in that an autonomous sensor package should be accessible via the web from anywhere in the world. More importantly, hobby ROV kits are using Node.js to send data back to a web browser. With this in mind, a sensor package, designed in this paradigm, lends itself to easy integration into existing system, allowing for real-time data visualization to the operators and others connected remotely. We feel that this will allow researchers and operators to better interact in a real-time collaborative environment, leading to more affective data collection and analysis.

Remaining tasks:

  • Sensor Analysis (error analysis, repeatability, etc)
  • Fix Node.js and Browser behavior.
  • Complete Google Chart integration in data node.
  • Arduino-BeagleBone Integration
  • Build pressure housing and cabling
  • Design and print circuit board.
  • Test, analyze, modify, test, analyze...

Make, and make often. Make the world you want, not the one you were given.

-- Jim N.

CTD+ (Conductivity, Temperature, Depth, Light) - From the Breadboard to the ROV