Digital cameras have become so high resolution these days that you might wonder why somebody would want to build one of their own from scratch with a resolution that’s not even a fraction of what digital cameras could do a decade ago. But some things just need to be done because they’re fun.
YouTuber Sean Hodgins has been working on this idea for a long time, and now he’s finally made and released a 1-kilopixel DIY camera. He’s also released the files as Open Source so you can download and make your own, too.
The project is called the digiObscura and was originally designed to be a pinhole camera. After assembling everything together, though, he found that the pinhole didn’t quite let enough light through to the sensors to get a decent reading. So, it was modified to incorporate a dismantled Canon lens.
To form the 1-kilopixel sensor, the camera contains a 32×32 grid of light-sensitive phototransistors. Each of these can spit out an 8-bit value based on the brightness of the light hitting it. A custom PCB contains these 1,024 sensors, which Sean had to solder to the board himself. Although he had the help of a reflow oven to actually solder everything, he still had to place each component by hand, which is a painstaking process.
It’s powered by an Arduino, which doesn’t have anywhere near 1,024 inputs, so in order to support such a high number of sensors, Sean implemented a process called multiplexing. This allows him to read the value of any pixel using only a handful of pins on the Arduino. This is a really slow way of working, but the result is actually quite similar to the way the sensors work in our own cameras, and why we experience things like rolling shutter.
Although the camera produces really tiny images – images that aren’t even big enough to be classed as operating system icons these days – it is a very cool proof of concept device. It’s also a great starting point for anybody who might want to take things a little further.
For example, the camera only captures greyscale images and it does it quite slowly. So, swapping out the Arduino for an ESP32 should allow for a faster acquisition time (thus, lessen the rolling shutter effect). Switching to something like an ESP32 would also allow you to turn it into a WiFi-capable camera that could potentially transmit images as it shoots them. Or you could create your own smartphone app to fire the camera over Bluetooth to eliminate any camera shake from having to manually hit the shutter button on the camera itself – a risk if your camera’s not fixed to something solid.
There are lots of directions you could take something like this. And, sure, it’s not going to keep up with a GFX100, but that’s hardly the point, is it?
All of the PCB designs, the Arduino sketch, 3D printed components and other bits are available to download on the digiObscura GitHub page.