The cheap Kodak Brownie was the primary digicam to convey images to the lots. The simplicity of its design meant anybody might determine the best way to use it with little issue. Because it has basically no controls to be taught—there’s only a shutter button, viewfinder, and movie winder—it is even simple to make use of compared to in the present day’s cameras.
Millions of Kodak Brownies have been remodeled the course of its 60-year lifespan starting in 1900, and its construct high quality means a lot of them survive in good working order. A Kodak Brownie can be a very good choice for modifications—it is simply accessible on eBay or at tag gross sales, it is easy to hack, and it is low-cost sufficient that it would not matter if issues go improper.
My unique plan was to construct a variant on the pinhole digital camera I might beforehand made with a Raspberry Pi and a webcam. I had an additional Raspberry Pi Zero that wanted a goal and a Kodak Brownie Hawkeye, the variant from the 1950s with a case made out of Bakelite as a substitute of wooden or cardboard, which I might purchased for lower than £5 at a neighborhood tag sale. The solely key lacking piece was a webcam.
[Enter our Raspberry Pi week giveaway for an opportunity at this arcade gaming package.]
Because I might paid lower than £5 for the Raspberry Pi Zero and Kodak Brownie, I set that as my higher value restrict for a webcam. Trawling eBay listings, I discovered plenty of sellers providing quite a lot of 50-megapixel cameras at this value level. These technical specs have been unfaithful—there would by no means be a 50MP sensor promoting for that value—however it was price a punt to find simply what the digicam supplied. The one I purchased solely supplied 640×480, a mere zero.3MP with uncooked video solely, no MJPEG, thus limiting the framerate, too. In different phrases, fairly terrible, however solely marginally extra terrible than anticipated. The plus was that it was simple to take away its case, which uncovered a really compact circuit board that might be a really perfect dimension for embedding.
Upon testing the webcam with an improvised pinhole plate, it was clear that the sensor had unacceptably poor low-light efficiency. While it might function a pinhole digicam, it might solely be usable outdoors in vibrant situations. I needed to construct a digicam that was extra versatile, so I modified my plan with a purpose to construct a “normal” digital digicam as a substitute of a pinhole digital digicam.
With the important thing elements in hand, I started design and meeting. My preliminary concept was to maintain the Brownie’s unique lens in place and place the naked webcam sensor behind it. To obtain sharp focus, the sensor must be seated in the identical place, relative to the lens, that movie can be. However, Brownie movie negatives have been 60x60mm every, whereas the webcam sensor is lower than 5x5mm. Testing confirmed that the webcam would have an extremely slim subject of view, making it practically unimaginable to compose photographs with the crude viewfinder mirror.
The various was to disassemble the Brownie and take away its plastic lens. Then the webcam circuit board might be positioned so its lens is correct behind the shutter. The circuit board is just some millimeters too giant to suit into the best place, so I used a Dremel software to carve a slot contained in the case so the circuit board might slip into place.
This gave the webcam a subject of view much like the unique Brownie’s. In truth, the sector of view was broad sufficient that it coated the whole shutter aperture, so the ensuing pictures had a round vignette.
The second process was deciding the best way to place to Raspberry Pi Zero within the case. As luck would have it, the width of the Pi Zero is strictly the identical because the size of the 620 movie spool utilized by the Kodak Brownie, so the digicam’s movie holders might grip the Pi Zero circuit board.
Like my earlier pinhole webcam, this venture makes use of two LEDs as standing indicators: one illuminates when the ability is on, and the opposite illuminates when the webcam is capturing a picture. I drilled two small holes within the prime of the Brownie case subsequent to the shutter button; the LEDs poke via these holes, and a spot of immediate glue holds them within the appropriate place.
One of my key design targets was for the Kodak Brownie’s shutter button to set off picture seize on the webcam. Ideally, a single press of the shutter button would seize a single picture. To obtain this, I wanted to create an interface between the mechanical shutter button and the Raspberry Pi’s GPIO pins. After fascinated by this tough downside for some time, I conceived of an answer involving a pair of naked wires and a few conductive paint. One wire connects to a programmable GPIO pin configured as an enter in pull-up mode. The second wire connects to a GPIO floor pin. To implement the answer, I drilled a gap via the case, instantly beneath the shutter button, via which the wires move. I stripped the insulation off the wires and glued them in place beneath the shutter button. Finally, I utilized a blob of conductive paint to the underside of the shutter button. When the shutter button is pressed, the conductive paint shorts out the 2 wires and pulls the GPIO pin to floor. This change is detected by the Pi Zero and triggers the shutter.
The Brownie shutter mechanism is designed for movie with a hard and fast shutter pace. It was not sensible to synchronize picture seize with the exact fraction of a second that the shutter was open. Fortunately, the Brownie has a long-exposure mode, the place the shutter stays open for so long as the shutter button is pressed. Normally this long-exposure mode is activated by elevating a second button on the Brownie, however that is considerably tedious. With a bit of bit tape utilized to the shutter mechanism, I hooked it completely into the long-exposure mode.
Testing the shutter mechanism revealed a small downside: The webcam takes a second or two to robotically measure and regulate publicity to go well with the lighting situations. As a outcome, if a picture have been captured instantly after urgent the shutter button, it might typically be underexposed. This prompted one other slight design change. Rather than capturing a single picture instantly because the shutter is pressed, I programmed the software program to attend a second after a shutter press, then seize pictures repeatedly, one per second, till the shutter is launched. In different phrases, it acts as a time-lapse seize machine.
The solely remaining process was energy. The Pi Zero and webcam mixture has very low energy necessities, at most 200 milliamps, and a USB Lithium-ion powerpack gives a wonderful, long-lasting energy supply. The downside is that bodily dimension is just not a massively vital issue for many powerpacks on sale in the present day, and I have not discovered one sufficiently small to suit contained in the Brownie case—it might must be lower than 6cm to face an opportunity of becoming as soon as the USB cable is plugged in, and 5cm can be even higher. Also, if the battery have been contained in the case, there would must be a bodily energy swap between the Pi Zero and the battery, in any other case you would need to open the digicam to show it on/off each time. My easy resolution was to drill a gap within the case for the USB cable and depart the battery on the skin.
With building full, I turned my consideration to the software program to regulate it. Rather than ranging from scratch, I prolonged the code I wrote for the pinhole webcam Arcturus. Since my low-cost webcam would not present MJPEG seize, I pulled in libjpeg, a C library for JPEG picture learn/write, to encode the raw frames into JPEG nonetheless picture recordsdata. Capturing pictures in uncooked format means the USB machine should switch giant portions of information. While this wasn’t an issue on the laptop computer I used for growth, the Raspberry Pi regularly obtained dropped or incomplete frames from the webcam.
After numerous hours debugging, I found the issue was with the driving force for the USB controller in Linux mainline utilized by Pignus (the Fedora fork for the Raspberry Pi ARM6 boards). The Raspbian kernel, by comparability, has an out-of-tree driver for the USB controller, which turned out to work effective. The different software program change I made was the one I discussed above to repeatedly seize nonetheless pictures.
Here is the primary video I took with my custom-built Kodak Brownie digital time-lapse digicam, of a steam engine working at Kew Bridge in London.
This was initially revealed on Red Hat software program engineer Daniel Berrangé’s weblog f/138 and is reprinted with permission.