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’.
- Supply 0.2 to 35 VDC
- Output -1 to 6 VDC
- Operating -40 to 110 C
Wiring recommendation: from http://www.ti.com/lit/ds/symlink/lm35.pdf
- 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 http://www.freescale.com/files/sensors/doc/data_sheet/MPX4250A.pdf
- Supply 6VDC
- Operating Temp -25 to 70 C
Wiring recommendations: from https://www.sparkfun.com/datasheets/Sensors/Imaging/TSL235R-LF.pdf
Note: This has yet to be integrated…I’m working on it!
In process. Belladona, at: http://www.octiva.net/projects/ppm/ , Has a very nice tutorial on the electronics and testing of the conductivity sensor. Once completed, I’ll post evaluation notes and integration.
Micro-controller Unit MCU:
Here is a snapshot of the setup we used:
The Pi case was laser cut here at Robot Garden and can be found at: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=40&t=10828
Although, the finally 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)
- 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:
This 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: http://www.phidgets.com/products.php?product_id=1018
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 https://developers.google.com/chart/interactive/docs/gallery
- Node.js: http://nodejs.org/
- 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 is done. 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
Summary: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 controlling web browser. With this in mind, a sensor packaged designed in this paradigm, lends itself to easy integration into existing system, allowing for real-time data visualization to the operators and those 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.
- 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.