🛠 Caméra DVP 8 bits sur le connecteur CSI et vision OpenCV
Objetivos
El conector CSI de 24 pines del BPI-M2 Zero es una rareza en este formato: un bus de cámara paralelo de 8 bits DVP/CCIR656 (D0-D7, PCLK, HSYNC, VSYNC, MCLK, control I2C sobre PE12/PE13, alimentación controlada por CSI-PWR-EN sobre PD14) para sensores tipo OV5640 hasta ~5 MP. Tenga cuidado con la trampa de vocabulario repetida por algunos artículos: es DVP paralelo, NO MIPI — las cámaras MIPI no son compatibles. Usted va a conectar la cinta plana, verificar el pipeline de vídeo en el núcleo y ejecutar una detección de rostros con OpenCV.
Material
- BPI-M2 Zero + imagen vendor Debian kernel 4.4 (cobertura CSI más completa; el soporte mainline sun6i-csi para esta placa sigue siendo parcial)
- Módulo de cámara OV5640 (o compatible DVP 8 bits) con cinta plana FPC de 24 pines
- Pantalla HDMI o flujo de red para visualizar
- Disipador opcional: la captura + OpenCV calientan los 4 Cortex-A7
Código completo
# 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
Verificación esperada
v4l2-ctl lista el dispositivo de captura con formatos YUYV; la foto de control es nítida y correctamente expuesta; la ventana de OpenCV muestra el flujo y enmarca los rostros. En caso de trama completamente negra o verde, comience por verificar la orientación de la cinta plana FPC.
Errores frecuentes
- Conectar una cámara MIPI (cinta plana idéntica, protocolo diferente): el conector es DVP paralelo, solo un sensor DVP de 8 bits es adecuado.
- Invertir la cinta plana FPC: contacto parcial, imagen ruidosa o sensor ausente en el bus I2C.
- Exigir CSI bajo Armbian mainline reciente: la cobertura del controlador para esta placa es incompleta, la imagen vendor 4.4 sigue siendo la vía segura.
- Apuntar a 5 MP a plena frecuencia con OpenCV: con 512 MB, permanezca en 640×480 para visión en tiempo real.
- Olvidar CSI-PWR-EN (PD14): sin la autorización para alimentar el sensor, no aparece ningún segundo dispositivo I2C en el bus de cámara.
Otros tutoriales para esta placa
- Flasher Armbian et premier boot du BPI-M2 Zero
- LED et bouton avec libgpiod sur le port 40 broches
- Wi-Fi AP6212 : le piège de l'antenne U.FL non fournie
- Console série sur USB-OTG : dépanner sans réseau ni câble UART
- Activer le bus SPI0 et piloter un petit écran TFT
- Survivre avec 512 Mo : zram, swap compressé et services légers
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash