RoadTest: Pi Camera
Evaluation Type: Independent Products
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: USB Webcam
What were the biggest problems encountered?: Power supply, image quality.
I received my Raspberry Pi Camera test kit a few weeks ago, but wasn't able to spend a ton of time with the device until recently.
The test kit came equipped with a 512 MB Raspberry Pi, a 4GB SD card and the Camera module. They also provided a printout with instructions on how to set up and use the camera module. This was promptly lost, but good luck! There are good instructions on the Raspberry Pi website (http://www.raspberrypi.org/camera), also linked from Element14.
The camera has a ribbon cable that slips into the connector situated between the Ethernet and HDMI ports. The connector easily connects and cleanly closes on the ribbon cable with no issues. I just looked at the connection to make sure the contacts on the ribbon cable touched the copper contacts in the connector, as it would be possible to put it in backwards.
The camera quality is decent. It is what I've come to expect from a normal cellphone camera. It has decent megapixel rating, but at the end of the day, it's still a tiny lens. When testing picture quality, there wasn't much difference in image quality between the standard resolution and an image at half the resolution and 80% quality. The standard resolution is 2592.1944. I also tested video, but I didn't take too many. It was on par with what you'd expect from a normal cellphone. There was occassionally some distortion in the lower left corner. This seemed to occur much more often in low light conditions inside.
The camera also has a red LED. Apparently, this could be turned off with an edit to /boot/config.txt, but this no longer works after an update. I'll probably just end up going with electrical tape. When the camera was mounted in front of the window, I was able to see the led reflecing in the window when the camera was tilted up or level. When I tilted the camera down, I was no longer able to see the reflection. The camera pcb also has 4 tiny holes drilled in it. I was able to hang the camera using just a paperclip and scotch tape.
The command line functions are simple, and have help info. I didn't play around too much with the image effects options, as I'm not that familiar enough with them to be of much use. There are options to se the image quality, roation, dimensions, etc. This would be extremely helpful when a project enclosure forces the camera to be mounted in an odd orientation. The executables are stored in /opt/vc/bin, but have symlinks in /usr/bin after installation. Most commands execute quietly, but there are options to display the camera output to stdout. The command line options also suggest the ability to preview an image when using a desktop or x11 forwarding, but I'm simply just ssh'd in.
So, now that I have it working, I need a project! My office overlooks the driveway, and what better use, than a security camera. Except, I really don't want to sort through hours of footage just to see what happens. Instead, I wrote a short program in python that runs on the Pi to snap pictures and scp them to a more powerful computer running in the basement. Thought is, once there, I'll use Imagemagick to compare images, and check for movement. In testing, I found that the raspberry pi camera will take a picture about once every 6 seconds when called using the raspistill command line option. I honestly wasn't too impressed with time lapse option, so I used python to take individual pictures with the timestamp for the filename using the subprocess module:
filename = time.strftime("%Y-%m-%d-%H%M%S")+".jpg"
pic_command = "raspistill -w 1296 -h 972 -q 80 -o " + str(filename)
pic_command = pic_command.split()
p = subprocess.Popen(pic_command).wait()
I've pasted my full testing code here: http://pastebin.com/ASz0N6MR Code is definitely in a testing state, and I've tried to notate this in the comments.
Running this program, I saw intermittant cpu spikes up to about 45%. Memory utilization was less than 50% using a 256 MB GPU memory split. I may experiment running the ImageMagick image comparison on the Pi later, but I've got a mostly idle Fedora server running in the basement anyway.
I'm using the multiprocessing process module to keep the processes separate and a multiprocessing queue to pass the filenames. As a bonus, I've been able to write a basic shell for the camera process. I'm planning on running the process from within supervisor (http://supervisord.org/ ).
I did run into one pitfall when testing the camera. I began taking pictures and video, only to find that the Raspberry Pi would become completely unresponsive after 4 to 5 pictures or 3 seconds of video. The only solution seemed to be power cycling the device. Thankfully, I searched for the problem before throwing away the camera and writing an angry review. I'd been using an old phone power supply that was not putting out enough current. The bad power supply was only putting out 650 mW. I switched to a 2W power supply, and had zero issues.
I've attached a number of photos. I've made editing obvious (rather than simply blurring things). Sorry, I don't care to showcase my neighbor's house or advertise a company logo on the waterbottle.
I've also attached a pdf showing exif data from the camera.
This is a shot of the driveway in the late afternoon. I did have to save as 80% quality, as full size was too large for the road test. The window does have a screen in it.
This is shortly after dusk. The lights below are reflections from the Raspberry Pi's status lights. You can faintly see a red spot in the window from the camera's red led light.
This is a bit of noise that kept appearing when using the bad, underpowered power supply. Hopefully my review can help at least one person identify this issue!