BeagleBone Capes

After choosing the sensors and getting the software complete, we needed to create the sensor Capes for both BeagleBone Blacks (one on the float and one in the sub). For the BeagleBone Black on the float we attached the connectors for the stepper motors, the GPS module, a compass, a temperature probe, and a battery measurement circuit. The actual making of this cape took an unexpectedly long time, although it turned out very nicely:

The BeagleBone on the float has to be supplied with 5v. To do this we decided to use voltage dividers. This task took longer than expected as dropping the 25.6v from the battery had a few different issues. Originally we were going to use the LM317. This variable voltage regulator should have given us a constant voltage supply by choosing the right resistors (based on the formula). Sadly as the voltage supply to the LM317 dropped, so did the voltage output.

We then moved on and chose to use the simple UA7805 5v regulator. This chip can talk up to 24v and regulate it to 5v. As the rating on the 7805 was only 24v we decided to first step own the voltage using the LM317s we already had and then using the 7805 to get the exact 5v we required. Our float also needed a second 5v 1A power supply so we decided to create two of these circuits in parallel (as the chips can only handle a certain amperage). An image of the final regulator is below:

The second BeagleBone Cape we made is for the sub. This Cape is also fairly simple. It contains the MOSFET controllers for varying our LED brightness, the IMU, the depth sensors, the temperature sensor, and a few extra pin-outs for any future sensors. An image of the Cape for the submersible is below:


Choosing a Camera

For the last few week we have been trying to make a final decision about what will be in the dome of the submersible, especially which cameras we will use. Originally we just had two pi cameras on a rod so they could be tilted up and down.

We then moved on to have the LEDs inside the submersible, putting them in between the two cameras. This worked well while we were planning on a 6" diameter submersible as the pi cameras were small enough, but once we changed to a 4" it didn't fit well.

Vertical LEDs between cameras

Thirdly we decided to have either two pi camera's or two webcams and no LEDs. The pi cameras fit more easily but didn't stream as nicely, so we thought about using webcams. Because most webcams are fairly long in one dimension they were going to have to stand up and would take most of the room. We then decided to buy a nice webcam and see how it fit. When it arrived we found that it was much bigger than the other (being about 3.25" long).

LED modules with two Pi-Cameras

With the new cameras and the decision to try and move the LEDs back inside the dome with the cameras we changed our plan entirely. We decided to have one nice webcam for streaming video, and having two pi cameras on board to do stereoscopic vision.

3 Cameras with LED strip

Another factor in choosing our cameras has been the video quality. After testing various different streaming methods (all can be found here) we settled on using a combination of cameras. For the live video feed we settled on using MJPG-Streamer on the BeagleBone with Logitech's C920. For the stereoscopic vision we decided to use two Raspi-Cameras. Both can be seen in the CAD images above (RPi are the small square ones, the C920 is the long one). While driving, the user will only be using the C920. The RPi cameras will only be used to take images and record video (and are specifically placed where they are for stereoscopic vision. An image of the C920 out of it's case is below:

MJPG-Streamer was chosen out of the various different streaming methods (GStreamer, Motion, FFMPEG, MPlayer w/ Netcat) because of its speed and compatibility. Not only can it handle 30 fps, but the stream can be picked up by OpenCV running on the OCU.

The last step with the cameras was potting them. We 3-D printed boxes for the cameras to fit inside of, as well as a place for a rod to go through the system so it could be tilted. The picture below is of the cameras epoxied into their boxes, and below that is a CAD model of the entire system in place.


Finishing the LEDs

After spending many hours designing a various different heat-sinks for the LEDs, we settled on putting the LEDs on the outside of the acrylic dome to minimize the reflection and interference with our cameras. Space has also been another huge issue for our LED setup. To minimize the space used by these LEDs, we have decided to put them into a 12mm pipe (10mm ID) attached to a 10mm rod.

The LEDs will be glued onto a copper strip and then onto a 10mm aluminum rod. This unit will then slide into the larger 12mm rod. The lens will be glued into the end of the pipe and the wires will come our via slots in the aluminum piping.

After routing out the aluminum pieces (shown below) we glued the LEDs to the copper strips, soldered on the power and ground wires, and covered the wire leads in order to ensure that electrical jumping did not occur. We then attached the copper to a 10mm rod and were done building the heat-sinks!

In order to have the lights on outside of the water and at variable brightnesses in the water we are using pulse width modulation (PWM) to control them. By wiring the LEDs to our 12v power supply on the sub and then using a MOSFET (metal-oxide-semiconductor field-effect transistor) we were able to translate the variable pulses to variable brightness on the LED.  The MOSFET can be attached by sending DATA to the gate pin, attaching the GROUND of your LED to the drain pin, and finally attaching the GROUND of your power source to the source pin.

After wiring up the MOSFET you can easily control is using the RPi.GPIO library on your Raspberry Pi. Read this post to get a handle on the basic concepts of PWM control. By simply sending varied duty cycles to the gate pin, you will get a variable brightness LED. Below is a small clip of the LED pulsing using the MOSFET and RPi.GPIO:


Finishing the Spool

After another round of testing, we were able to finalize the design for the spool on the float.

After receiving 230 feet of 10 gauge wire from Matt Anderson in December, we twisted and coiled the two wires together. We did this thinking that in the future we could easily add some flotation and be done with the tether.

A few months later, we decided to finally finish the tether. We measured the density of the wire, and then purchased 250 feet of 1/4" foam cord for flotation. To cover the wires and foam cord we purchased an expandable polyester sleeving. After uncoiling and then untwisting the wire, we tapped on the foam cord and then spend a few hours pushing on the expandable sleeving. Below is an image of the wire, foam, and polyester sleeving combination.

We also took a time-lapse video of the processes:

After finishing with the tether, we also finalized the power transfer on the float. We had tried a few different ways of transferring the power from the battery to the spool. At first, we tried to transfer electricity through the ball bearings we are using on the spool. Unfortunately those provided too much resistance as the contact points between the balls and the metal rings were extremely small.  We looked into a few other options and final decided to use a brushed system to transfer power from the batteries to the tether on the spool. 

The final design of the spool consists of the brushed system you see below. The brush is made using a threaded copper rod and copper tubing. The threaded rod is inserted into our support braces and attached to the power coming from the battery. The rub is soldered onto the rod leaving just enough room for the brush. After reaching the rod, the power is transferred into the tube and then through the brush onto the metal plate shown below. This plate is wired into the tether and thus provides the submersible with power. An image of the final brushed system is below: