PR.FT5_15·Kit RPi›Câmara ExtraÍndice
⬤ Avançado · Camera V2 · picamera2

📷 Módulo de Câmara Raspberry Pi

Guia completo de ligação do módulo Camera V2 ao RPi, captura de imagens e vídeo, timelapse automático e deteção de movimento com OpenCV.

Ligar o módulo de câmara

O módulo Camera V2 liga-se através da porta CSI (Camera Serial Interface) no RPi — a fita plana azul/prateada:

  1. Levanta suavemente a tranca plástica da porta CSI
  2. Insere o cabo flat com os contactos metálicos voltados para o lado do HDMI
  3. Fecha a tranca
  4. Ativa a câmara: sudo raspi-config → Interfacing Options → Camera

Instalar picamera2

Terminal
sudo apt install python3-picamera2 -y

Exercício 1 — Tirar uma fotografia

Python · foto.py
from picamera2 import Picamera2
import time

cam = Picamera2()
config = cam.create_still_configuration()
cam.configure(config)
cam.start()
time.sleep(2)  # estabilizar exposição
cam.capture_file("foto.jpg")
cam.stop()
print("Foto guardada como foto.jpg")

Exercício 2 — Timelapse (foto de 10 em 10 segundos)

Python · timelapse.py
from picamera2 import Picamera2
import time

cam = Picamera2()
cam.configure(cam.create_still_configuration())
cam.start()
time.sleep(2)

i = 0
print("Timelapse iniciado — Ctrl+C para parar")
try:
    while True:
        nome = f"frame_{i:04d}.jpg"
        cam.capture_file(nome)
        print(f"Capturado: {nome}")
        i += 1
        time.sleep(10)
except KeyboardInterrupt:
    cam.stop()

Exercício 3 — Deteção de movimento com OpenCV

Terminal + Python
# Instalar OpenCV
pip3 install opencv-python
Python · detetar_movimento.py
from picamera2 import Picamera2
import cv2, numpy as np, time

cam = Picamera2()
cam.configure(cam.create_video_configuration(
    main={"size": (640,480)}))
cam.start()
anterior = None

try:
    while True:
        frame = cam.capture_array()
        cinza = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        cinza = cv2.GaussianBlur(cinza, (21,21), 0)
        if anterior is None:
            anterior = cinza; continue
        diff = cv2.absdiff(anterior, cinza)
        thresh = cv2.threshold(diff, 25, 255, cv2.THRESH_BINARY)[1]
        if thresh.sum() > 10000:
            print("⚠ MOVIMENTO DETETADO!")
        anterior = cinza
        time.sleep(0.1)
except KeyboardInterrupt:
    cam.stop()
✅
Módulo extra necessário. O módulo Camera V2 não está incluído no kit base — deve ser adquirido separadamente ou fornecido pelo professor.