The Brick Experiment channel has these few minutes of video, that sparked my interest in building this project:

If I'm reading this right, the video lets us think this is real time, whereas in reality they have visual contact on their submarine the whole time, and a camera was attached to it, so they could only access the footage after the trip was over.

In our case, ideally I'd like to have a live video stream of an embedded camera, back to a local screen from the control deck. From the design desk, the main limiting factor is bandwidth: the video has to feed through water 😬

Bandwidth Requirements

Using this calculator, here are a few sample bandwidths requirements for a 30fps frame rate:

Bandwidth requirements in Mb/s (divide by 8 for storage reqs - MB/s)
Resolution / Encoding h.264 base
low quality
h.264 main
medium quality
h.264 high
high quality
MPEG4
medium quality
0.3MP - 640 x 480 0.3 0.4 0.7 0.9
HD 720p - 1280 x 720 0.9 1.3 2 2.8
Full HD - 1920 x 1080 2.1 3 4.5 6.4
UHD 4K - 3840 x 2160 8.4 11.8 18.1 25.4

On the plus side, there is quite a window of bandwidth available. On the other side, I have no idea what I'll get out of the hardware I'll use.

So let's say we need at least 200kbps (640x480@24fps) and ideally 3000kbps (1920x1080@30fps).

Hardware

In the interest of getting an MVP out as fast as possible, I'll pick whatever camera is the typical one for the board I'll use. At the time of writing, I'm aiming for raspberry pi zeros, so the camera 3 wide is the way to go:

20230524_camera_3_module.png

Relevant specs:

  • Focus range: 5cm–∞
  • Horizontal field of view: 102 degrees
  • Resolution: 11.9 megapixels
  • Common video modes: 1080p50, 720p100, 480p120
  • Autofocus system: Phase Detection Autofocus

Published

Category

The Shrimp

Tags