Install Camera on Raspberry Pi: Everything you Need to Know

raspberry pi camera installation

A camera is a must-have for any Raspberry Pi owner, it’ll allow you to try dozens of interesting new projects
If you’re not confident with finding a compatible camera and how to use it on Raspberry Pi, you’re at the best place to learn everything

How to install a camera on Raspberry Pi?
Raspberry Pi offers a dedicated port to add a camera extension
As it’s integrated on the main board, everything is easy to install and configure, especially on Raspbian
You first need to enable the camera port, and then you’ll have a bunch of commands to take pictures or videos

In this guide, I’ll show you how to choose the camera, install it and a few tips you need to know to enjoy directly your new device

Buyer’s guide

Introduction

If you already have a camera, perfect, you’re ready to go
But for those who are here to learn how a camera works on Raspberry Pi before buying it, I will give you a few tips to know before placing the order

In this part, I’ll show you a few camera models I recommend and how to make your choice
We’ll also quickly look at other useful accessories to enjoy your camera

Camera models

Unlike USB cameras on computer, the number of available products is quite limited

Official Raspberry Pi Camera Module

The first official camera from the Raspberry Pi Foundation : Camera Module (source: Raspberry Pi)

The Raspberry Pi Foundation offers two camera models, and I’ll show you both
This one was the first available, and has been updated in 2016 (for v2)

It’s now a high quality camera with an 8 megapixel sensor that allows you to get HD pictures (3280 × 2464 pixels) and videos (1080p max)
This model is compatible with any Raspberry Pi model (1, 2 3 and probably 4) and easy to install on Raspbian (we’ll see that later)

It’s available on Amazon.com (check the current price here) and the official website

Raspberry Pi NoIR Camera Module

The other version of the Raspberry Pi Foundation camera module : NoIR (source: Raspberry Pi)

This one is almost the same, so I’ll be quick
The NoIR version has the same capabilities (8MP, 1080p, …)

The only difference is the ability to take infrared photographs
The price is also a bit higher but if you have a few extra dollars available, take this one
It’s often used for security cameras or to take photos in a low light environment
Even if you’re not sure to use it next, it doesn’t matter, it’s worth it

The NoIR model is also available on Amazon (click here to get the updated price)

Other models?

There is not really a better model than these
If you just want to have one for educational purposes, you can absolutely find a cheaper camera
For example, this one was my first camera, it’s perfect to learn how to use a camera on Raspberry Pi, but the quality is lower
It’s half the price, but if you have to buy another one a few months after, this is not worth it

Other things to consider

A camera is an external device and will often stay outside the case
So depending on what your projects are, you may need other accessories

I will just give you a few extra links to look at, so you can do your research easily :

  • Some cases are compatible with the camera, to include the main board and the camera inside
    For example, this “Lego” model seems perfect as you can use it horizontal or vertical (the link leads to Amazon)
    You also get heat sinks in the package and you can fix it to a wall
  • Another thing you may have to consider is to keep your current case for the Raspberry Pi and use a simple holder to keep the camera vertical
    raspberry pi camera holder
    There are many similar products, you can check this one for example
  • The last thing you may need is another camera cable
    The included cable is 15 cm long, that’s fine for a basic usage, but you may need to have a shorter or longer cable to fit your needs
    In this pack on Amazon, you have a few cable lengths you can use and change for each project (from 30 cm to 1 m)

Install your new camera on Raspberry Pi

Now that you have everything you need, we can start the serious part of this tutorial 🙂

System installation

Raspbian is the recommended operating system to install and use a camera on Raspberry Pi
Everything is included and especially if you choose the official model, you’ll have absolutely no issue with it
I don’t know exactly which systems are compatible, you may want to try them later, but start with Raspbian for now

I already wrote a guide on how to install Raspbian on Raspberry Pi, feel free to check it if you are not confident with the installation
You can use Desktop or Lite version, both are working fine with any compatible camera, so choose the one you prefer for your project
The only advantage of the Desktop version is that you can check the picture directly on Raspbian if you have a screen in your setup
For remote access only, keep the Lite version

After the installation, make sure to have made these steps:

  • Raspbian installed with anything you need (software, network, …)
  • Raspbian configuration made with all your favorites settings (keyboard layout and language for example)
  • Raspbian updated with the last version of all packages
    sudo apt update
    sudo apt upgrade
  • Enable SSH to allow remote access for the first tests
    sudo service ssh start
  • If you choose the Desktop version, you can also install a remote desktop app to do everything from your computer

Once everything is OK, you can stop the Raspberry Pi to install the camera
sudo shutdown -h now

Connect the camera

The camera installation on the Raspberry Pi is straightforward once you find the port location

  • Take the Raspberry Pi out of its box
  • Find the camera port on the Raspberry Pi (between the HDMI and jack port)
    It’s the only one that fit the cable width, and it may be written “CAMERA” on the main board, you’ll find it easily 🙂
  • Before plugging the cable, you may need no remove the plastic film and lightly pull the black plastic
  • Plug the cable and push the black plastic to hold the cable inside
  • Make sure to align both connectors on the same side (cable connectors on the HDMI port side)
    camera cable raspberry pi
  • Then I recommend to start with a rapid test before holding everything in the case and/or in the holder, just to be sure that it’s working 🙂

Plug all cables back (power, HDMI, network, USB …) and start the Raspberry Pi

Enable the camera in Raspbian

Before using the camera on your Raspberry Pi, you need to enable it in Raspbian
By default, the camera port is disabled

  • Connect through SSH (you can find useful tips here to connect via SSH from your computer)
    You can also use a terminal on the Desktop version, or directly the Raspbian lite after login
  • Start the raspi-config tool
    sudo raspi-config
  • Go to “Interfacing options” > “Camera”
  • “Would you like the camera interface to be enabled ?”
    Yes !
  • Exit raspi-config and accept the reboot

That’s all you need to do
After the reboot, the camera is ready to use

Commands you can use on Raspbian to manage the camera

I will now introduce two useful commands to record and see what happen on your camera

Take a photo

The first thing you can try is to take a simple picture of the image seen by the camera
“raspistill” is the corresponding command on Raspbian
It’s already installed on your system

To use it, the basic command line is :
raspistill -o image.jpg

With -o you define the target file name (where the pictures will be saved)
It’s possible to use a file name including the path, for example:
raspistill -o ~/Pictures/mypicture.jpg

By using raspistill without parameter you’ll get the command help, with all possible options
Or you can check this page on the Raspberry Pi website for other basic options

Record a video

To record a video, the command is almost the same
“raspivid” is the corresponding command name

So like for pictures, to record a video use:
raspivid -o video.h264
Use the CTRL+C shortcut to stop the recording
.h264 files are compatibles with VLC
On Raspbian Desktop: sudo apt install vlc

Same thing to see all parameters available, use raspivid without anything else to get all options with a short description
Useful options are :

  • t : to choose the video duration in ms (ex: 6000 for a 6s video). This way you don’t need to use CTRL+C and can schedule the video capture with a script or cron
  • -w and -h: video size (width and height)

Get files on your computer (Raspbian Lite)

You may be asking how to download pictures on your computer after this

The easiest way is to use software like FileZilla or WinSCP :

  • FileZilla is a free tool available on Windows, Linux and macOS
    It’s mostly used to connect to FTP servers, but there is an option to use it for SCP transfers
    You can download the setup files here
  • SCP is a secured protocol to copy files on the network over SSH
    So you don’t need anything else on the Raspberry Pi
  • Open FileZilla
  • To try it quickly, you can use the quick connect option under the menu

    But there is also a “Site manager” to store all your servers and connect without entering anything
  • Fill the host with the Raspberry Pi IP address
    Then the username (probably “pi”) and the pi password
  • Click “Quickconnect” when ready
  • On the left side, this is your computer, browse to the path where you want to download files to (C:\Users\username\Pictures for example)
  • On the right side, it’s the Raspberry Pi, browse to the location where you saved the pictures or video
  • Double-click on a file to download it
    Or select multiple files, right-click and “Download files”

Control the camera with Python

The last interesting thing I want to show you with a camera, is to use an advanced programming language (Python), to go further with your camera and includes it in bigger projects

Introduction

If you are new to Python and want to do more things on Raspberry, I think you may need to learn it
Python is a central language on Raspberry Pi (if I well remember, the Pi from Raspberry Pi comes from Python)
And the good news is that everything is available on a default Raspbian to use Python directly (editors, compilers, basic libraries, …)

In this part, I will not teach you everything about Python, that’s not the goal, but just how to use your camera with it
If you want to learn more, I have a detailed guide on how to start with Python here

First script with Python

OK, let’s start with the first script to take pictures with Python
In the following steps, I continue with Raspbian Lite
If you are on Raspbian Desktop, there are many editors you can use like Thonny (pre-installed) or other available with apt

Create your first script :

  • Install the Python camera library :
    sudo apt install python-picamera
  • Create a new Python file :
    nano first_script.py
  • Paste the following sample code into the file :
import picamera
with picamera.PiCamera() as camera:
camera.start_preview()
camera.capture('/home/pi/Images/python.jpg')
camera.stop_preview()
  • Save and exit (CTRL+A, CTRL+D)
  • Create the Images folder if you use the exact same code
    mkdir /home/pi/Images
  • Run the script
    python first_script.py
  • Check the result in /home/pi/Images
    You can see the python.jpg file with the picture you just took
    (Use WinSCP, FileZilla or scp to copy the file on your computer and check the picture)

It’s only a basic script where you get the basics on how to take a picture in Python
If you already know Python, you can do everything from here
(All available functions are in the documentation here)

Improve the script

Now, I’ll show you another example, with more advanced features
The goal here is to give you an extra delay after starting the script, to do your best smile before the photo 🙂

We’ll do this in two steps, a basic one and a slightly improved one

  • Create a new file (you can also edit the previous one as almost nothing changes for the first sample)
    nano picture_delay.py
  • Paste these lines :

import time
import picamera
with picamera.PiCamera() as camera:
camera.start_preview()
time.sleep(5)
camera.capture('/home/pi/Images/python2.jpg')
camera.stop_preview()

  • That’s almost the same script for now
    The sleep function allows you to wait a few seconds (5 in the example) before continuing
  • Save and Exit (CTRL+A, CTRL+D)
  • Try it :
    python picture_delay.py
  • Did you have the time to do your best smile?
    Probably, but you have to keep it for a few seconds without knowing if the shot was taken

We’ll improve that now, and add a sound when the script takes the picture

  • Edit the previous file (or create a new one) :
    nano picture_delay_sound.py
  • Paste these lines into the file :
import pygame 
import time
import picamera

with picamera.PiCamera() as camera:
     camera.start_preview()
     time.sleep(4)
     pygame.mixer.init()
     pygame.mixer.music.load("flash.wav")
     pygame.mixer.music.play()
     time.sleep(1)
     camera.capture('/home/pi/Images/python.jpg')
     camera.stop_preview()
  • Save and exit
  • You’ll probably need to install the pygame library :
    sudo apt install python-pygame
  • You may also need to find the flash.wav file, or use something else
    For basic sounds, Soundbible offer direct download, for example this one : Soundbible clicking sound
    Many sites offers many sounds, but most of them require a free account, Soundbible allows direct download without account
  • Once you find it, rename the wav file or edit the script, and run the script:
    python picture_delay_sound.py
  • With an audio output on the Raspberry Pi, you’ll hear the sound one second before the shot

That’s it for my second script
You now need to code the script corresponding to your needs, by helping you with the documentation

Conclusion

I hope you enjoyed this introduction on how to install and configure a camera on Raspberry Pi
If you make bigger projects with your camera, it would be nice to share them here with us, I’ll love it!

And of course, if you have additional questions, comments are here for that 🙂

2 comments

Leave a Reply

Your email address will not be published. Required fields are marked *