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.
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.