Gaurav Singh's Open Source USB 3.0 Camera Packs Interchangeable Lenses and Sensors

Designed so that two main boards, one FPGA and one USB, can drive a third interchangeable sensor board, this camera is extremely flexible.

Gareth Halfacree
2 years ago β€’ Photos & Video / FPGAs / 3D Printing

Embedded engineer Gaurav Singh has published details of an ambitious build: an open source industrial-grade camera with interchangeable sensor, lens, and USB 3.0 Type-C connectivity.

"[This is] yet another part in the DIY camera projects which have been doing since quite some time," Singh writes by way of introduction. "[This] next successful implementation of making [a] C-mount, high lens mount, USB C camera. This implementation will have absolute modular boards, having [a] dedicated sensor board which can be changed if needed."

The camera's electronics are, as Singh explains, split across three key boards β€” both for modularity and to reduce the overall footprint. The first board holds the USB interface, providing a USB Type-C socket mounted at a 90-degree angle to the board for data and power at full USB 3.0 speeds. The second board houses an FPGA, a Lattice Semiconductor Crosslink NX LIFCL-40, along with 32MB of RAM in two 16MB chips.

The third board houses the sensor, and it's this which is designed to be swapped-out as and when necessary. "[The] board has a high-density connector to be able to connect to [the] FPGA/Host board. [This] high-density connector also suppl[ies] power to the board, [which] has I2C, four-lane MIPI with clock, I2C, and also a few other control signals."

Once assembled, the camera boards are placed behind a C-mount lens and enclosed in a 3D-printed chassis, with only an aluminum thread at the front for lens mounting and a single hole at the rear for the USB Type-C cable which provides both power and data.

The first sensor board for the setup is based on the the Sony IMX219, which Singh describes as a "barebone" sensor. "There's not much image processing going on on the camera die itself," he explains. As a result, the FPGA handles conversion of raw Bayer data to YUV β€” along with I2C communications for gain adjustment and white-balance correction.

Singh's full write-up is available on his website Circuit Valley, while the design files and source code for the project have been published on GitHub under the permissive Creative Commons Attribution 4.0 International license.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles