🛠 Caméra DVP 8 bits sur le connecteur CSI et vision OpenCV

Banana Pi BPI-M2 Zero (Allwinner H2+ / H3) · avance · Schéma : IMG-bananapi-m2-zero-avance-2-camera-dvp-csi-opencv-m2-zero.svg — nappe FPC 24 broches reliant un module caméra OV5640 (capteur DVP parallèle) au connecteur CSI du BPI-M2 Zero ; tableau des signaux D0-D7, PCLK, HSYNC, VSYNC, MCLK, I2C PE12/PE13, CSI-PWR-EN (PD14) ; écran affichant une détection de visage OpenCV.

Objectifs

Le connecteur CSI 24 broches du BPI-M2 Zero est une rareté dans ce format : un bus caméra parallèle 8 bits DVP/CCIR656 (D0-D7, PCLK, HSYNC, VSYNC, MCLK, I2C de contrôle sur PE12/PE13, alim commandée par CSI-PWR-EN sur PD14) pour capteurs type OV5640 jusqu'à ~5 MP. Attention au piège de vocabulaire repris par certains articles : c'est du DVP parallèle, PAS du MIPI — les caméras MIPI ne conviennent pas. Vous allez câbler la nappe, vérifier le pipeline vidéo côté noyau et dérouler une détection de visage OpenCV.

Matériel

Code complet

# 1) Le pipeline vidéo est-il présent ?
v4l2-ctl --list-devices 2>/dev/null || sudo apt install -y v4l-utils
v4l2-ctl -d /dev/video0 --all | head -25     # formats supportés (YUYV 1280x720...)

# 2) Capture d'une image de contrôle
ffmpeg -f video4linux2 -i /dev/video0 -ss 1 -frames:v 1 test.jpg 2>/dev/null

# 3) Détection de visage OpenCV (léger, adapté aux 512 Mo)
sudo apt install -y python3-opencv
python3 - <<'EOF'
import cv2
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
face = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
while True:
    ok, frame = cap.read
    if not ok:
        print('pas de trame — vérifier nappe et alimentation capteur')
        break
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    for x, y, w, h in face.detectMultiScale(gray, 1.2, 5):
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
    cv2.imshow('BPI-M2 Zero CSI', frame)
    if cv2.waitKey(1) == 27:
        break
EOF

Vérification attendue

v4l2-ctl liste le périphérique de capture avec des formats YUYV ; la photo de contrôle est nette et correctement exposée ; la fenêtre OpenCV affiche le flux et encadre les visages. En cas de trame entièrement noire ou verte, commencer par vérifier le sens de la nappe FPC.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels