Difference between revisions of "Rpi Camera Module"

From eLinux.org
Jump to: navigation, search
m (RaspiStill)
m (RaspiStill)
Line 160: Line 160:
  
 
Timelapse:
 
Timelapse:
-t is the time the camera will stay on and -tl is the time between snapshots.
+
-t is the time the camera will stay on and -tl is the time between snapshots. A -tl below 655 will increase -t so that the number of frames t/tl will be created.
 
</pre>
 
</pre>
  

Revision as of 12:11, 21 September 2013


RaspPi.png Back to the Hub


Hardware & Peripherals:

Hardware - detailed information about the Raspberry Pi boards.

Hardware History - guide to the Raspberry Pi models.

Low-level Peripherals - using the GPIO and other connectors.

Expansion Boards - GPIO plug-in boards providing additional functionality.

Screens - attaching a screen to the Raspberry Pi.

Cases - lots of nice cases to protect the Raspberry Pi.

Other Peripherals - all sorts of peripherals used with the Raspberry Pi.


Introduction

Raspberry Pi Camera Module

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[1] sold out after several days. By mid-July 2013 stock was available again.

Technical Parameters

  • Sensor type: OmniVision OV5647[2] 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 [1],[2] depth of field & angle of view calculators[3] sensor info[4] f-stop measurement[5]

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 <size>.  Default  1920  
‐h,  ‐‐ height    :  Set image  height  <size>.  Default  1080  
‐b,  ‐‐ bitrate   :  Set bitrate. Use bits per second  (e.g.   10MBits/ s would be ‐ b 10000000)  
‐o,  ‐‐ output    :  Output  filename  <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 (cycl e  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 <size>  
‐h,  ‐‐ height    :  Set image  height  <size>  
‐q,  ‐‐ quality   :  Set jpeg  quality  <0 to  100> 
‐r,  ‐‐ raw       :  Add  raw  bayer data  to  jpeg  metadata 
‐o,  ‐‐ output    :  Output filename  <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 <t>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 

Timelapse:
-t is the time the camera will stay on and -tl is the time between snapshots. A -tl below 655 will increase -t so that the number of frames t/tl will be created.

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'.[3] 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.[4]

Video4Linux2

There is an unofficial Userspace Video4Linux2 (V4L2) driver.[5][6][7] 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[8] is being developed[9] 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 [10]

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

Troubleshooting

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.[11][12]

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.[13]

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.[14][15]

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.[16] Try using the option -fps 25 to change the frame rate to 25 frames per second.

Customizing

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[17]. 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.[18] One user 'rew' reports a 4 m (13 foot) extension cable is working.[19][20]

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[21] 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[22].

Unscrewing more than 1 turn results in removal of the lens[23] allowing use of other optical systems. The lens thread size may be M6 x 0.35[24].

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.[25][26] Martin Miller has posted a guide on raspberrytorte.com describing complete camera module disassembly and replacing lens holder with a stock M12 unit.[27] Various M12 x 0.5 (S-mount) lenses intended for board-level cameras are available at focal lengths from fisheye to long telephoto.[28][29][30]

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[31] and scorp[32] were initially successful, but in both cases the camera died soon afterwards from blunt trauma to the fragile bond wires on the die.[33]

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.[34]

Housings

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

References

  1. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=32605&start=350#p358580
  2. http://www.ovt.com/products/sensor.php?id=66
  3. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=44966
  4. http://rbnrpi.wordpress.com/project-list/setting-up-wireless-motion-detect-cam/
  5. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=50639
  6. http://www.linux-projects.org/modules/sections/index.php?op=viewarticle&artid=14
  7. http://www.linux-projects.org/modules/sections/index.php?op=viewarticle&artid=16
  8. https://github.com/illes/raspiraw
  9. http://bealecorner.org/best/RPi/
  10. http://www.raspberrypi-spy.co.uk/2013/05/how-to-disable-the-red-led-on-the-pi-camera-module/
  11. http://elinux.org/R-Pi_Troubleshooting#Troubleshooting_power_problems
  12. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=43998#p350528
  13. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=39996&start=150#p373336
  14. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=44863
  15. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=43982
  16. http://www.raspberrypi.org/phpBB3/viewtopic.php?t=43982&p=351090#p350434
  17. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=43737#p352401
  18. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=43737#p348917
  19. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=43737#p362714
  20. http://www.bitwizard.nl/catalog/product_info.php?products_id=146
  21. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=32605&start=225#p346170
  22. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=46637#p366719
  23. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=32605&start=325#p352613
  24. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=46637&p=367053#p367053
  25. http://www.raspberrypi.org/phpBB3/viewtopic.php?t=45887
  26. http://www.truetex.com/raspberry_pi_m12_lens_adapter.pdf
  27. http://wiki.raspberrytorte.com/index.php?title=Camera_Module_Lens_Modifcation
  28. http://www.solino.com/cms/index.php?article_id=193&clang=0
  29. http://www.m12lenses.com/M12-Mount-Mega-Pixel-Lenses-s/21.htm
  30. http://www.net-gmbh.com/en/s-mount.html
  31. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=44339#p352586
  32. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=44339#p352902
  33. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=44339
  34. http://www.raspberrypi.org/archives/4088
  35. http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=44466
  36. http://www.raspberrypi-spy.co.uk/2013/05/pi-camera-module-mechanical-dimensions/
  37. http://www.thingiverse.com/search?q=raspberry+pi+camera&sa=