New Boron-based oceanography sensor package: the OpenCTD for Boron


Hi, all—wanted to share this project that @Joe helped me out big time with through the Makerspace Empowerment Program:

Arduino-flavored OpenCTD has been around for a while and I’m co-teaching a class at UC San Diego this quarter where we’re building a few. I started merging OpenCTD code for Arduino with the Particle libraries in Workbench and am very happy with progress so far. My documentation is, as always, severely lacking but I’ll work on it. But I wanted to share this endeavor with the community in case it could be helpful to others (and to hear your thoughts and suggestions!).

Here’s the gist: the most commonly used ocean sensor package is a CTD: a conductivity (for salinity), temperature, and depth sensor. There are a bunch of companies that make CTDs for a range of costs, usually in the ballpark of $5K or sometimes much higher for the better ones. OpenCTD uses off-the-shelf temperature, conductivity, and pressure sensors to replicate the basic functionality of a standard CTD. It also has an SD card datalogger. Each sensor used in OpenCTD uses simple and standard communication protocols which helps students learn I2C, SPI, and UART concepts as well as the scientific underpinnings of the measurements.

This version of OpenCTD with Boron trades out the qDuino controller for a Particle Boron (again, thanks, @Joe!!!). It currently only samples and records data, so the Boron’s strengths aren’t yet shining but my next steps will be to use the cell module to get the real time before a deployment and then to transmit the data back to shore post deployment. It’s safe to assume that most OpenCTDs will be deployed in coastal/nearshore environments, not in open ocean (i.e., far from cell tower) scenarios.

I’m excited to hear what the community thinks about this undertaking. If you’re interested in giving more than just your thoughts, I’d absolutely love to have help with robustifying the code and thinking about how to deal with charging the sensor without opening the housing and some other issues I imagine we’ll encounter. Thanks for reading!



Seems like a very cool project!

I am wondering though, how you intend to use cellular with such a device.

Also unless you are in an area that will be effected by excessive surface mixing, ice water runoffs, or merging bodies water I think temperature and depth would suffice, but then again, I don’t know the full scope of implementation.



I am totally not familiar with how and why one would use a CTD, would you have a link to any relevant material, perhaps?


Thanks, @kolbi and @gusgonnet!

@kolbi, good point; you’d really only want to measure conductivity/salinity in a region where you expected it to change more than the sensor’s inherent noise/instability. This is a major shortcoming in oceanography where changes in salinity are very small and sensors capable of observing those changes are few. OpenCTD may not have the long-term stability needed to observe open-ocean changes in salinity but is plenty accurate to detect freshwater inputs.

@gusgonnet, NOAA has a nice resource here: CTDs have been used on ships for decades. But, in my opinion, one of the most exciting applications is in the international Argo program: There are ~ 4,000 freely drifting Argo floats out there and they bob from the surface to 2 km below the surface collecting CTD (and more recently, pH, oxygen, nitrate, and chlorophyll data with other parameters coming) and then send it back to the cloud over satellite connections. CTDs on Argo have been used to map ocean currents with much greater precision than ever before possible as well as determine how much of the excess heat on Earth due to global warming is being stored in the oceans (as opposed to in the atmosphere/on land where it might more directly impact humans in the short term).


thank you for the links!
I like the video very much:

@kolbi, I was about to ask the same question, when I re-read @supscientist first post :slight_smile: here goes:



Yup, until I read up on the Argo program I couldn’t fully understand how the cellular communication aspect would come into play and be used.

For some reason, maybe because I was thinking of more of an in-situ based use, I was thinking of something like an SSXBT that would be thrown into the water, descend to a set depth (or time-based), to then have a gas cartridge to inflate a bladder so it could once again surface and then transmit data. Maybe use an SD card or EEPROM to store the data in the case where cell reception becomes an issue?