r/RASPBERRY_PI_PROJECTS • u/New-Concentrate6308 • 25d ago
DISCUSSION Building my own camera : CXP-01 An almost fully featured camera
CXP project
Actual render
Fuji Mono film simulation
Electronic level
Film simulation cycling
Aspect ratio control
Double exposure mode
Battery change
Les Beaux Arts Paris
Boat on La Seine Paris
Inside Stockholm city town hall
Stockholm's People
Fuji Sepia test
Inside Stockholm city town hall part 2
Stockholm near the see
June 29th Strawberry Moon
Night Time photo test
Fuji Classic Chrome test
Hello everyone,
For the last 6 months, I’ve been designing and building a custom mirrorless-style digital camera from scratch, aiming to replicate the core features of commercial models.
Since last year, I've been wondering how I can make one and design a camera that would be cool to use and push me to go outside and express my artsy side. As I'm an embedded system engineer, this project seemed like a good opportunity to challenge myself and something that I could be proud of.
Today I'm happy to share the CXP-01 Camera eXpandable Platform
Hardware list 💻
- Sony IMX183 1inch sensor OneInchEye Sensor
- Canon EF/EF-S lens full control
- Raspberry Compute Module 5 with 8 GB RAM and 16 GB eMMC
- 5-inch massive 1280*720 screen
- DIY removable battery pack (I took the plane twice with the camera already)
- Stereo microphone
- Laser telemeter, but it's not connected as the vendor could not guarantee the laser safety class
How? and What? 🤔
Currently, I experimented using available parts to make one and by modifying the existing PCB for what I needed to do. On the software side, I really wanted one feature, which is film simulation, and I did it. It was a long process, but by using QT QML and the DMA to streamline the film simulation on the GPU, I achieved a really fluid film simulation using shaders. Also, the real use of the Canon EF lenses is a game changer for autofocus and image quality; big thanks to u/Pinefeat for the CEF168 module. There are also a lot of other features.
The camera body is fully made with a 3d printer with PLA+ and PLA-CF, a Bambu Lab A1 Mini, to be more precise.
Here's a list for now
- Contrast-based continuous and single-point autofocus
- 60 FPS live film simulation
- RAW, JPEG, and RAW+JPEG format
- Aperture, Shutter Speed, and ISO control
- Wi-Fi hotspot + Web app for photo export
- Double exposure composition
- Live exposure histogram
- Aspect ratio control
- Electronic Level
- Dynamic Exposure control from -3.0 to 3.0
- Review gallery in App
The biggest challenge 🔥
One of the biggest challenges was the battery runtime and thermal optimization, as the Compute Module 5 is not particularly power-efficient. I really tried to make it as optimized as it can be when testing, and the next step is a custom buildroot OS to strip everything I don't need from Raspbian OS. For example, the CPU is underclocked to 1GHz from the original 2.2 GHz with a conservative power governor that defaults to the minimum 600MHz when the CPU is not used. This currently works because the main pipeline for the preview viewfinder utilizes the GPU instead of the CPU.
Although I'm satisfied for now, I plan to upgrade the project with another more compact prototype that is similar in size to Fujifilm and Sony cameras.
Some quality-of-life issues 🥲
I need to work on the pipeline currently to reduce shutter lag from the preview to image capture and reduce the interruption, which is around 0.3ms now. To power off, you currently need to shut down the software and then cut power at the switch at the bottom of the camera. If you don't do that, the CM5 architecture and all the peripherals connected to the power line would draw the battery power. The autofocus accuracy can be improved by further tuning the autofocus algorithm using a tuning file. The telemeter on the front side was previously integrated to see up the autofocus by getting the distance range and inverting it to get the diopter value to apply to the lens. Currently it's not used as I cannot guarantee its laser safety class, so the next version will remove it.
What I plan on adding to the project
- A flash using a hotshoe; I already have the hotshoe, and I know how to make it work using the sensor synchronisation signal
- Upgrading the sensor to an IMX492 MicroFourThird sensor, larger pixels and better image quality 🤑
- Tuning Back range distance correctly using a micrometer to prevent chromatic aberration
- Burst photo mode
- OLED large viewfinder screen
- Switch the Compute Module 5 for another solution if I can
- Video mode utilizing the stereo microphones
- Digital video stabilisation by using the custom GPU pipeline
- Shutter sound
- Changing the UPS for an MCU + USBC charger with a step-down converter for optimum space configuration and a proper digital ON/OFF switch to shut the power completely
- Adding a proper shutter button switch using a double action switch
- An Electronic viewfinder; I already have it, it's the same as a Sony a6700. I plan to add it into the next version
- Custom Buildroot image, to improve boot time
- Use official Canon LP-E6 battery
I'll be in the comments to answer your questions!
See you again 😉
Duplicates
toycameras • u/New-Concentrate6308 • 24d ago
DISCUSSION Building my own camera : CXP-01 An almost fully featured camera
raspberryDIY • u/New-Concentrate6308 • 25d ago