Underwater RPi Camera Build

In my previous builds it took me nearly 2 hours to wire up the electronics for RPi + Mote. Most of the time was spent cutting wires, trimming the ends, and solder jumpers between the mote and Pi. Then double checking my work and fixing mistakes. That was a good way to build the first few cameras, but I’d like this to be easier and more reliable so that others could build their own cameras and not have it take so long.

This was the motivation for the “BristlePi”, a PCBA that could sit between the Mote and the RPi and take care of the power and RT/TX wiring for me. I’ve designed a few “expander” boards in the past and used my Othermill to CNC machine copper boards before, but the fine pitch of the mezzanine connector was a challenge so I enlisted the help of a new friend, @TLAW, to help design the board. Tom did all the layout in KiCAD. We reviewed the design files during BristleCon in January before submitting the final files to PCBway in early February.

And five weeks later…the boards have arrived!

For this first rev of the hardware we kept the design simple. It includes:

  • 5V regulator to power the Pi
  • traces connecting RX/TX lines from the Pi to the Mote
  • mounting holes in the corners to secure PCBA to camera shell
  • cutout for USB-C cable for debugging

And that’s it.

Assembly, 5 min or less

The Pi gets mounted to the BristlePi with 4x fasteners + spacers then soldered to the 2x20 header. Cheap and easy.

The mote is secured to the “bottom” of the BristlePi with two screws + 5mm tall spacers.

First test

I cloned a copy of the SD card from my blue 3D printed camera using balenaEtcher then inserted the new SD card into the Pi. This way all the code + libraries + hardware configurations get copied over to the new device. The whole process took less than 5 minutes. Much faster than starting with a brand new install of the RPi OS and manually installing all the requirements and repos.

The camera defaults to setting up an Ad-hoc network so users can connect to the Pi directly then SSH in without need for a local wifi network. I wrote a test scrip to verify that the camera was wired up and working correctly. And here is the first test image captured with the BristlePi. It works!

Next Steps

I made a few mistakes with the mechanical layout of the PCBA. I spec’ed the wrong height for the mezzanine connector and now the inductor is coming into contact with one of the threaded standoffs on the mote. I used two pieces of Kapton tape to electrically isolate the inductor for these first five boards - but the next rev will move the inductor out of the way to avoid any electrical issues in the future.

I have some other ideas like adding an RGB LED to help with debugging and perhaps adding a motor driver to power a DC motor for a wiper arm to keep the camera lens clean. @TLAW has plans to add an IMU as well.

Once we work out the bugs and make a few fixes we are planning to make the design files opensource. At that point I think the code for the project will be in a good place to cut a release along with the parsing scripts to decode the messages from the API and stitch the image back together.

Let me know what you think

What features would you want on a BristlePi and how might you use one for your project? Or how might you use an underwater camera?

1 Like

Hi,

Let me noodle on that a little bit. I’ve got some basic block drawings that describe some of our ideas. A lot of them rely on “and here some magic happens” right now, but there are some actual components that we’re tying together to make things happen, and maybe if I share those with you some ideas might come out of that. If not, no harm done. I think for some of the things we’re doing in our projects, we don’t really need Bristlemouth, but I thought it’d be a good exercise for our students to try and use it.

The rover I’m acquiring parts for right now, and 3D printing parts for, has 2 LED lights and a camera, along with an assortment of thrusters. The electronics live in an acrylic pipe that is sealed on one end and has a penetrator for the cables on the other. That pipe has the Pi and a device controller in it that connects to the thrusters. The seals are supposed to be good down to about 100 meters. After initial tests, I’m hoping to modify the body to hold a sonar system (a modified fishfinder if I can find a vendor to donate one to us). There’s a temperature and pressure sensor in the rover as well. So, there’s a bunch of signals that need to be coordinated as well as command functions.

If I don’t get to it over the next day or so, it probably won’t be until next week. We’re taking a trip for a memorial service for a friend who passed away, so I’ll be out of town from Friday until Monday.

Ron

@NickRaymomd If you have the time you might give this chipset some consideration. I came across it and your camera came to mind…

2 Likes

I had ordered a few more CNC’ed camera shells a few months ago to go along with the new PCBAs (see above). Typically these orders take 2-3 weeks to get delivered, but with all the tariffs and customs changes happening I suspect these parts have been lost forever…

While I was waiting for the parts to show up I decided to clean up the software and create a set of instructions so that folks with a dev kit could build their own camera from a few 3D printed parts + Pi Zero + camera module. I’d like others to be able to build their own cameras and start developing on the software - and the dev kit is a fast and easy way to wire up with hardware without needing to add potting or expensive CNC’ed plastic shells.

I’m getting close to finishing the instructions and will add them to the git repo once complete. For now, here is a sneak peak for a BM Dev Kit camera.

Code + 3D models + instructions coming soon!

My goal is to include a complete Pi image so that you’ll be able to flash a complete install of the OS + BM Camera Software and get started - no python skills needed.