Raspberry Pi Camera Models
By Robert Russell
- 3 minutes read - 511 wordsA Global Shutter Camera for the Raspberry Pi started shipping a few months ago. There have been other global shutter camera modules for the Raspberry Pi but this one comes from Raspberry Pi directly. So it should be well supported by the mainline software including the camera driver and libcamera.
Here’s a little summary of some official Raspberry Pi camera modules with the details I care about:
Name | aka | Sensor | Pixels | Shutter | Lens |
---|---|---|---|---|---|
Camera Module 2 | v2 | IMX219 | 8M | Rolling | Built-in |
Camera Module 3 | v3 | IMX708 | 12M | Rolling | Built-in 75° |
Camera Module 3 Wide | v3 | IMX708 | 12M | Rolling | Built-in 120° |
High Quality Camera | HQ | IMX477 | 12M | Rolling | C/CS |
High Quality Camera | HQ | IMX477 | 12M | Rolling | M12 |
Global Shutter Camera | HQ | IMX296 | 1.6M | Global | C/CS |
There are two basic form factors of the square PCB: small (about 25mm) and large (about 35mm). The small modules have a built-in lens so they sell a wide angle variant of each. It’s also possible to find third-party sellers with the IMX219 sensor paired to other lenses if you need a fisheye, for example. Since these third-party sellers are still using the IMX219 sensor the mainline v2 driver will work fine.
All the official camera modules since the v2 use Sony sensors. Don’t take the model numbers to mean much though - a higher model number isn’t always newer or better.
Eben Upton, the CEO of the Raspberry Pi Ltd, has mentioned that the company has done work as a CM for Sony on a few occasions, such as this recent press release. I expect that means more Sony sensors in future camera modules.
The best way to use the cameras with the Raspberry Pi OS releases is through the libcamera apps libcamera-still
or libcamera-vid
as described in the official camera software docs. While Raspberry Pi is the biggest current user of libcamera project, libcamera is actually a completely separate open source project. Their much larger goal is to “develop a camera stack that is open-source-friendly while still protecting vendor core IP”. When you want to do some deeper software integration you’ll have to figure out how to build with the provided libraries.
My current camera array, gammacam P6 is built with the original HQ camera and fisheye C/CS mount lenses. I’m in the early planning stages for the next iteration but my current idea has four nodes with one global shutter camera each. The global shutter camera has a backplate attached which interferes with my mechanical parts. So I’ll either have to redesign that or see if the backplate can be removed.
While looking at the backplate I notice that the test pads exposed on the global shutter camera are different from the ones on the HQ camera module. Here’s what the HQ camera module exposes - though on this particular module I’ve torn off the pads while experimenting with it.
The XVS signal is the interesting one for synchronization. I’ve had some success with sync on the HQ camera so I’m looking forward to seeing how that works with the global shutter camera soon.