Rpi Camera Module

Introduction
The Raspberry Pi camera board contains a 5 MPixel sensor, and connects via a ribbon cable to the CSI connector on the Raspberry Pi. A User's Guide describes setup and use. The video and still image quality is better than a USB webcam of similar price.

The camera was released for sale on the 14th of May 2013 and the initial production of 10k camera boards sold out after several days. By mid-July 2013 stock was available again.

Technical Parameters

 * Sensor type: OmniVision OV5647 Color CMOS QSXGA (5-megapixel)
 * Sensor size: 3.67 x 2.74 mm
 * Pixel Count: 2592 x 1944
 * Pixel Size: 1.4 x 1.4 um
 * Lens: f=3.6 mm, f/2.9
 * Angle of View: 54 x 41 degrees
 * Field of View: 2.0 x 1.33 m at 2 m
 * Full-frame SLR lens equivalent: 35 mm
 * Fixed Focus: 1 m to infinity
 * Video: 1080p at 30 fps with codec H.264 (AVC)
 * Board size: 25 x 24 mm (not including flex cable)

Because the focal length of the lens is roughly the same as the width of the sensor, it is easy to remember the field of view: at x meters away, you can see about x meters horizontally, assuming 4x3 stills mode. Horizontal field of view in 1080p video mode is 75% of that (75% H x 55% V sensor crop for 1:1 pixels at 1920x1080).

References: Focal length and f-stop measurements, depth of field & angle of view calculators sensor info   f-stop measurement

Sample Programs
Sample programs using the camera for taking stills and video have been developed for the Foundation. There is a User's Guide and the source for these programs is available on github.

Forum user M1M1 published instructions on compiling the sample programs here

The command line parameters for the programs are as follows:

RaspiVid
RaspiVid Camera App

=
====== Display camera output to display, and optionally saves an H264 capture at requested bitrate usage: RaspiVid [options] Image parameter commands ‐?, ‐‐ help      :  This  help  information ‐w, ‐‐ width     :  Set image  width. Default 1920 ‐h, ‐‐ height    :  Set image  height. Default 1080 ‐b, ‐‐ bitrate   :  Set bitrate. Use bits per second (e.g.   10MBits/ s would be ‐ b 10000000) ‐o, ‐‐ output    :  Output  filename   (to write to  stdout,  use '‐o  ‐ ') ‐v, ‐‐ verbose   :  Output   verbose information  during  run ‐t, ‐‐ timeout   :  Time (in ms) before  takes picture  and  shuts down. If not specified,  set to  5s ‐d, ‐‐ demo      :  Run  a  demo mode (cycle  through range of  camera options, no capture) ‐fps, ‐‐ framerate        :  Specify  the  frames  per second  to  record ‐e, ‐‐ penc      :  Display  preview image  *after*  encoding  (shows  compression artifacts) Preview parameter commands ‐p, ‐‐ preview   :  Preview window settings <'x,y,w,h'> ‐f, ‐‐ fullscreen:  Fullscreen preview mode ‐n, ‐‐ nopreview :  Do not  display  a  preview window Image parameter commands ‐sh, ‐‐ sharpness : Set image  sharpness ( ‐100  to  100) ‐co, ‐‐ contrast :  Set image  contrast ( ‐100  to  100) ‐br, ‐‐ brightness: Set image  brightness (0  to   100) ‐sa, ‐‐ saturation: Set image  saturation ( ‐100  to  100) ‐ISO, ‐‐ ISO     :  Set capture ISO ‐vs, ‐‐ vstab    :  Turn  on  video stablisation ‐ev, ‐‐ ev       :  Set EV compensation (-10 to 10) - range corresponds to  -3 stops to +3 stops ‐ex, ‐‐ exposure :  Set exposure  mode (see  Notes) ‐awb, ‐‐ awb     :  Set AWB mode (see  Notes) ‐ifx, ‐‐ imxfx   :  Set image  effect (see  Notes) ‐cfx, ‐‐ colfx   :  Set colour  effect (U:V) ‐mm, ‐‐ metering :  Set metering  mode (see  Notes) ‐rot, ‐‐ rotation:  Set image  rotation (0 ‐359) ‐hf, ‐‐ hflip    :  Set horizontal flip ‐vf, ‐‐ vflip    :  Set vertical  flip Notes Exposure mode options  : off,auto,night,nightpreview,backlight,spotlight,sports,snow,beach,verylong,fixedfps,antishake,fireworks AWB mode options : off,auto,sun,cloud,shade,tungsten,fluorescent,incandescent,flash,horizon Image Effect mode options : none,negative,solarise,sketch,denoise,emboss,oilpaint,h atch,gpen,pastel,watercolour,film,blur,saturation,colourswap,washedout,posterise,colourpoint,colourbalance,cartoon Metering Mode options : average,spot,backlit,matrix

RaspiStill
RaspiStill Camera App

=
======== Runs camera for specific time, and take JPG capture at end if requested usage:  RaspiStill  [options] Image  parameter commands ‐?,  ‐‐ help      :  This  help  information ‐w,  ‐‐ width     :  Set image  width ‐h,  ‐‐ height    :  Set image  height ‐q,  ‐‐ quality   :  Set jpeg  quality  <0 to  100> ‐r,  ‐‐ raw       :  Add  raw  bayer data  to  jpeg  metadata ‐o,  ‐‐ output    :  Output filename    (to write to  stdout,  use '‐o  ‐ '). If  not specified,  no file is  saved ‐v,  ‐‐ verbose   :  Output verbose information during run ‐t,  ‐‐ timeout   :  Time (in ms) before taking picture and shutting down (if not specified, set to 5 seconds) ‐th, ‐‐ thumb     :  Set thumbnail parameters  (x:y:quality) ‐d,  ‐‐ demo      :  Run a demo mode (cycle  through range of  camera options, no capture) ‐e,  ‐‐ encoding  :  Encoding to use for output  file (jpg,  bmp, gif, png) ‐x,  ‐‐ exif      :  EXIF tag to apply to  captures  (forma t as  'key=value') ‐tl,  ‐‐ timelapse:   Timelapse mode. Takes a  picture  every ms Preview parameter commands ‐p,  ‐‐ preview   :  Preview window settings <'x,y,w,h'> ‐f,  ‐‐ fullscreen:  Fullscreen preview mode ‐n,  ‐‐ nopreview :  Do not display a preview window Image  parameter commands ‐sh, ‐‐ sharpness :  Set image sharpness ( ‐100  to  100) ‐co, ‐‐ contrast  :  Set image contrast ( ‐100  to  100) ‐br, ‐‐ brightness:  Set image brightness (0  to   100) ‐sa, ‐‐ saturation:  Set image saturation ( ‐100  to  100) ‐ISO,  ‐‐ ISO     :  Set capture ISO ‐vs, ‐‐ vstab     :  Turn on video stablisation ‐ev, ‐‐ ev        :  Set EV compensation (-10 to 10) - range corresponds to -3 stops to +3 stops ‐ex, ‐‐ exposure  :  Set exposure  mode (see  Notes) ‐awb,  ‐‐ awb     :  Set AWB mode (see  Notes) ‐ifx, ‐‐ imxfx    :  Set image effect (see  Notes) ‐cfx, ‐‐ colfx    :  Set colour effect (U:V) ‐mm,  ‐‐ metering :  Set metering mode (see  Notes) ‐rot,  ‐‐ rotation:  Set image rotation (0 ‐359) ‐hf, ‐‐ hflip     :  Set horizontal flip ‐vf, ‐‐ vflip     :  Set vertical flip Notes Exposure  mode options  : off,auto,night,nightpreview,backlight,spotlight,sports,snow,beach,verylong,fixedfps,antishake,fireworks AWB mode options : off,auto,sun,cloud,shade,tungsten,fluorescent,incandescent,flash,horizon Image  Effect mode options : none,negative,solarise,sketch,denoise,emboss,oilpaint,h atch,gpen,pastel,watercolour,film,blur,saturation,colourswap,washedout,posterise,colourpoint,colourbalance,cartoon Metering Mode options  : average,spot,backlit,matrix

The raspivid utility saves .h264 format files. Some programs need this in a .mp4 wrapper to use, which you can do in several ways. One is to use "MP4Box" which is in the 'gpac' package. sudo apt-get update sudo apt-get install gpac

MP4Box -add filename.h264 filename.mp4

Motion
There is a version of the security cam / motion-detection program 'motion' adapted for the R-Pi camera (motion-MMAL), written by user 'dozencrows'. Motion detection with still and video capture at a resolution of 1024x576 at 1 fps is possible, and several fps at lower resolutions. There is a blog post explaining how to set it up.

Video4Linux2
There is an unofficial Userspace Video4Linux2 (V4L2) driver. This allows use of the R-Pi camera with many standard Linux applications developed for USB webcams. Due to the Pi's ARMv6 cpu, lower resolutions and framerates are typical when compared with a modern desktop system.

RAW images
The raspistill --raw option will append RAW data to the JPEG. The RAW data contains the image direct from the sensor, before debayer and color processing. A simple tool called raspi_dng is being developed to convert the JPEG+RAW file into a standard Adobe DNG file.

Configuration
The cameras red LED lights up when recording video or taking a still picture, this can be turned off by adding the following line to config.txt (RPiconfig)

disable_camera_led=1

It's possible to turn it back on at runtime by using GPIO5

Known Issues

 * Still captures did not use the full sensor, until the firmware update on 24 May 2013.
 * Images were 'flipped' (mirror image) by default, until the firmware update on 24 May 2013. (-hf and -vf options provide horizontal and vertical flips)
 * The -? (--help) did not work, until update on 24 May 2013.
 * The -n (--nopreview) command-line options originally did not work until a recent firmware update.
 * Correct EXIF data (including user supplied tags) are not being written to the output files.

This forum post summarizes the issues as at 24th May 2013

Camera not working at all
Example error message: "mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM)"

Make sure the flex cable is inserted the correct way on both ends, and each connector has the locking tab engaged. The RPi + camera draws about 260 mA more current when recording video, than without the camera. The Model B is about 550 mA by itself, so camera use pushes it over 800 mA. Some power supplies, cables, and polyfuses may not maintain 5V onboard at this current load well enough for reliable operation. You can check this with a voltmeter across TP1 and TP2.

In some cases, the micro-connector from the camera module to the camera board PCB has been loose. This can be fixed by removing and re-seating the small (tiny!) yellow flex cable connector labelled "P5V04A SUNNY" on the camera board. It makes a click when it is fully seated.

Colored Banding or Flickering on video
This can be caused by a poor power supply, or bad power cable. Several people have fixed this by replacing the power supply, or the microUSB power cable.

It can also be caused by indoor fluorescent lighting. The camera defaults to video mode at 30 fps, which works well in the USA with 60 Hz power. If you are in Europe or elsewhere with 50 Hz power, this may give you flicker under fluorescent lighting. Try using the option -fps 25 to change the frame rate to 25 frames per second.

Pi Sight
Pi Sight is an application which allows you to control all the aspects of your Raspberry Pi camera module using an Android device. This app makes it a lot easier to start using and experimenting with your Raspberry Pi camera module using a simple graphic interface. After capture, the images are automatically saved on your Raspberry Pi and a preview is downloaded to your Android device. You then have the option to save the full image to your device gallery if you wish to.

It was inspired by BerryCam for iOS and has much of the same functionality. You can control exposure modes, image effects, white balance, image size and quality and pretty much every other parameter that can be accessed when using the camera on the command line. It also uses the same Python handler script on the Raspberry Pi as BerryCam - which means that if you have both Android and iOS devices you will still only need the one handler script running in the background on your Raspberry Pi.

This app is perfect for those getting started with the Raspberry Pi camera module, as well as seasoned pros looking for an easier way to take pictures with their Raspberry Pi and Android device. This app can also come in handy if your Raspberry Pi camera setup lives in a hard to access remote location, or if you just want to take some security shots of your house whilst you are away to check everything is in order!

PLEASE NOTE: To get this to work correctly, you will need to have a Raspberry Pi with a camera module installed. You will then need to visit www.pi-supply.com/pi-sight and follow the instructions to get the Python listener script running on your Raspberry Pi.

BerryCam
BerryCam enables you to use your iOS device to control the Raspberry Pi camera module. Control exposure modes, special effects for still images with the simple interface - no need to learn complex SSH commands.

Quickly and easily preview your images on the iOS device and save to your camera roll. The same images are also saved to your Raspberry Pi.

A great way to experiment with the possibilities of the Raspberry Pi camera.

More info is available here - http://www.fotosyn.com/berrycam-support/

Pi Vision
Pi Vision is a GUI based controller for the Raspberry Pi camera module which runs on your Raspberry Pi. More info is available here - http://heywhatsthebigidea.net/projects/pi-vision-a-raspberry-pi-camera-controller/

Changing the ribbon cable
The ribbon cable that connects the camera board to the Pi is 15-core 1mm pitch ribbon cable, with alternate end contacts (top side / bottom side). ModMyPi stock Replacement Raspberry Pi Camera Cables for £1.99 and have worldwide shipping. In the UK they can also be sourced from Toby Electronics where the required type is FFC1-15-B150105160MM. Other suppliers have been noted on eBay.

The Foundation has noted that the camera only passed EMI emissions testing with ribbon cable lengths of 15cm, although longer cables may also work. One user 'rew' reports a 4 m (13 foot) extension cable is working.

A quick guide on how to replace the raspberry pi camera cable is available on the ModMyPi tutorials.

Adjusting Lens Focus
The camera is fixed-focus (at infinity) as delivered. The thread-locking glue dots can be scraped off allowing manual lens focus, as close as 6 cm. To change the focus to FL cm, unscrew the lens (turn counter-clockwise) by D degrees, where D = 360 * (3.5 cm / FL). For example, to focus at 10 cm, unscrew lens 360 * (3.5 / 10) = 126 degrees. Values are approximate. The closest achievable focus is about 25 mm, after unscrewing the lens roughly 2 full turns. At this point it is loose and must be held in place by other means.

Unscrewing more than 2 turns results in removal of the lens allowing use of other optical systems. The lens thread size may be M6 x 0.35.

Macro, Wide, Tele adaptor lenses
The near focus point of the camera is about 1 meter as delivered. Without modification to the camera itself, it is possible to put a simple external lens in front such as reading glasses, SLR diopter ("close-up filter") or loupe to enable closer focus. For best results, put the additional lens very close to the camera lens.

Macro, Wide-Angle, and Telephoto adapter lenses designed for the iPhone 4/4s and similar devices will also work on the R-Pi camera. Depending on your configuration, properly mounting the accessory lens in front of the camera module may require some ingenuity. Focus becomes critical with a telephoto adapter, so success there may also require the manual focus modification.

Replacing Stock Lens
Changing the lens is a more significant and risky modification than simply adding an accessory lens. Richard Kinch has made an adaptor to mount M12 thread lenses on the R-Pi camera board, after unscrewing and removing the stock lens. Martin Miller has posted a guide on raspberrytorte.com describing complete camera module disassembly and replacing lens holder with a stock M12 unit. Various M12 x 0.5 (S-mount) lenses intended for board-level cameras are available at focal lengths from fisheye to long telephoto.

Removing IR Filter
The IR filter is rigid and glued to the bottom inside of the black plastic lens housing, requiring complete disassembly to remove. Two early attempts by RPi forum users M33P and scorp were initially successful, but in both cases the camera died soon afterwards from blunt trauma to the fragile bond wires on the die.

A RPi blog post (27 May 2013) has more description of this process with a video of the modification, and video from the resulting IR-enabled camera.

Housings
To help building your own camera board case or enclosure, a hand-measured mechanical drawing of the camera module is available, thanks to Gert van Loo. There is another drawing from raspberrypi-spy. There are some CAD files for housings and camera holders available on Thingiverse.