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!
cant wait to test it out
Thanks for the nice review! Do you know if the camera comes with a longer ribbon cable? I am designing a project which requires that the Pi be placed above 10" away from where the camera is mounted.
Thanks for the tip on Motion. I've actually been using the compare function from ImageMagick to create a black/white comparison image and histogram.
For my particular situation, seems that 15% fuzz seems to eliminate most noise, but still shows distinct images for people, cars, etc.
Right now, I'm using the histogram to determine a percentage of white pixels to determine if there is motion or not. Next, I'm going to try to find a way to detect large areas of white (vs tons of errant pixels). I may do this either by finding a subimage within the image.
Good review. Have you looked into Motion? I currently use a Raspberry Pi wieb a webcam hooked up. I wonder if you could use the Pi Cam. This is the tutorial I followed:
I turned motion detection off and just take a photo every 15 minutes. Eventually I'm going to make a timelapse video of all the images I've captured.
The only downside I've found is the Raspberry Pi goes offline after a day or so. Haven't figured out why yet. I have to come home and unplug it and then plug it back in and restart the Motion service.
Thanks for the heads up on the power supply issues, I'm sure someone will have them, but be unable to do any searching.