Spring 2023-present
The inspiration for this project was a forum post I saw in which someone expressed interest in a full spectrum conversion of the newer raspberry pi HQ camera (https://www.ultravioletphotography.com/content/index.php?/topic/3883-raspberry-pi-hq-camera-12mp).
I quickly became interested in the vibrant photos you could get from a full spectrum camera, and I was also looking for a project at the time. I decided to attempt to build my own version of a camera that could achieve results similar to what I was seeing online.
This project is a bit more of a passion project, and is thus structured somewhat differently than some of my other portfolio pieces.
Some of the first images I took with the working camera in various infrared and near infrared frequencies.
Infrared or near infrared photography creates interesting images because chlorophyll is transparent at these frequencies, so the water in the leaves is more dominant in the image. The result is that leaves and plants become white/orange from scattered light, which creates interesting contrast when photographing outside. I became interested in achieving the infrared images I had seen online, and I wanted to create a camera that would deliver quality images, ease of use, an interesting physical design, and a high degree of adjustability.
The alternative to a DIY solution is buying an off the shelf camera and paying for a full spectrum conversion. Digital camera sensors usually are sensitive to IR light as well as visible light, so an IR filter is used to preserve color balance. This filter can be difficult to remove however, depending on the camera. There are also other advantages of creating my own camera body such as the ability to use any number of vintage lenses. Some older film camera lenses posses better infrared and UV characteristics since they sometimes have fewer lens elements and coatings applied in the manufacturing process.
Measurements by Raspberry Pi engineers of the sensitivity of the IMX477 sensor (HQ camera sensor) (https://forums.raspberrypi.com/viewtopic.php?t=352056). These show that there is some spectral sensitivity below 400 nm, which indicates that the camera should be able to take UV images. Above 700 nm there is also sensitivity, and above about 800 nm the sensor will create only monochromatic images since the Bayer layer will no longer filter the light.
Some of the filters that I have used with the camera so far. One of them filters IR and UV to make the camera function normally, one can be adjusted for pure IR vs near IR, one filters all light except infrared, and another filters some visible frequencies and allows others through. These can be screwed on to the front of the camera to adjust the spectrum that gets through for the image, and they allow some interesting effects. The part about this sort of photography that I find interesting is the fact that these effects are not fake or generated after the fact, but are instead simply not visible with the naked eye. The pure IR filter on the left is totally black in the image, but the camera sensor can still see through it.
Above is a short video of the internals of the camera.
(click through for all images)
The camera body was designed with the idea that it would be used with vintage lenses, so I tried to keep with a retro theme throughout the body. I took inspiration from the Fujica STX-1, since I appreciated its design and thought it would be a good starting point.
Physically, the camera body is 3 parts with an additional internal mount. The top and bottom screw into the internal mount and the center section is sandwiched between the two without additional fastening. There is a locating feature on the bottom piece that allows the front/top piece to clip down so that there is no bending where the lens attaches. The hardest part of this project was probably fitting everything into the body without over packing it and also leaving room for some wiring.
I added leather sections which I hand cut using paper templates in order to give the camera a better feel in hand and tie the 3d printed sections into the retro design. The top and bottom section were prototyped with plastic, but when I arrived at a final shape, I ordered sections that were 3d printed in aluminum.
To create the finish that I was satisfied with I had to extensively sand the 3D printed aluminum with progressively higher grit sandpaper. This was a very manual process, but I was impressed with how solid the interior of the parts were. Despite being printed from a powder, the parts showed few signs of pitting or bubbles beneath the surface.
Custom button PCB for the navigation buttons
The core of this project is the electronics, which are based around a Raspberry Pi 4 and raspberry pi HQ camera. The camera module was modified by removing the IR blocking filter in front of the sensor, but it is otherwise ideal for this project because it comes in a C-mount version. Any C-mount lenses can be mounted to this sensor as well as others using adapters, all of which are easy to find.
Additional features of the camera include a custom button PCB, charging port, on-off switch, mini fan, and a Witty Pi 4 that regulates the power and defines the shutdown sequence for the Raspberry Pi. Prior to this project I had never designed a PCB, but I found the process less intimidating than I feared. Using easyEDA I created a simple board that could be populated with button and the wired to the GPIO pins on the Raspberry pi. The board also breaks out power for the fan. I had this board made printed and then soldered the buttons on myself. The switches I chose are tactile with a soft membrane to avoid loud clicking noises.
The camera is power with 2 18650 lithium ion cells which allow the user around 4-5 hours of continuous use, and the camera can be easily turned on and off with the power button as the camera program will run automatically when the raspberry pi starts up. The camera can be charged with a 8.4v charger which plugs into a barrel jack next to the power button, or alternatively power can be supplied through a USB port directly to the board.
The camera program works by displaying an image from the sensor in pygame, a python game library, which can then be overlaid with more information or menus. Currently the camera settings can be adjusted by pressing a menu button on top and selecting one of the profiles that has been created for the filter being used. The exposure value for the image can be adjusted in any of these profiles with other buttons on top. A picture can be taken by pressing the main button and these images are stored on a mini flash drive plugged into the side. To display previous images the user can select a button on top to pull up data from the flash drive and scroll through the images with the arrow keys.
I have changed the design of the camera body a few times. The image above on the left shows damage to my first sensor from stress on the PCB due to the way the lens was mounted. In response I designed a new lens mount that does not mount to the PCB itself and is much sturdier. The image on the right shows another previous version of the design of the camera body.
I have recently redesigned the body and internal layout again to make better use of space. I also added a much larger and higher resolution screen so the image the users sees is now full HD, which makes focusing much easier. The new screen also mounts more robustly to a new version of the internal mount.
The two images above show some interesting results from testing the camera with different filters. The left image shows that whatever orange paint FedEx uses on their vans is almost indistinguishable from white around 800 nm, which was surprising since other orange colors do not all seem to exhibit this characteristic. The left image is an test of the camera's ultraviolet sensitivity. First I took a picture of a piece of paper in direct sunlight with my phone and with the camera, then folded it and sprayed one side with sunscreen, then took the same picture. The result is that in the visible spectrum the sunscreen is essentially invisible, while it is completely opaque under UV light.