Suivi de visage Pan/Tilt temps réel sur Raspberry Pi – Guide pratique
Avec un investissement modeste en temps et 25 $ en pièces, vous pouvez transformer un Raspberry Pi en une webcam pan/tilt légère, temps réel, qui suit les visages. En combinant la détection de visage OpenCV, deux servos de modélisme et le pilote servoblaster, le Pi peut maintenir la caméra centrée sur un sujet à une fréquence d'images supérieure à un mouvement par seconde.
Étape 1 : Acquérir le matériel
Ce dont vous aurez besoin :
- Raspberry Pi – Modèle A ou B fonctionnera ; le nouveau Modèle A (ou Pi Zero) est pleinement suffisant.
- Support pan/tilt (de nombreux designs gratuits existent sur Thingiverse)
- Deux servos de modélisme (ex. : SG90 ou MG995)
- Câble ruban GPIO
- Webcam compatible Pi (j'ai utilisé une Logitech C210)
En supposant que vous possédez déjà un Pi et une webcam, les pièces supplémentaires coûtent environ 25 $.
Étape 2 : Préparer votre Raspberry Pi
Utilisez l'OS Raspbian officiel (hard‑float) et tenez-le à jour. L'overclocking à 800 MHz peut vous donner la marge CPU supplémentaire dont vous avez besoin pour la détection temps réel, mais sachez qu'il peut réduire la stabilité.
Installez OpenCV pour Python :
sudo apt-get install python-opencv
Téléchargez et installez servoblaster, le pilote de servo de Richard Hirst :
git clone https://github.com/richard-hirst/servoblaster.git
cd servoblaster
make install_autostart
Optionnel : Configurez un délai d'expiration pour que le pilote arrête d'envoyer des impulsions après une seconde d'inactivité. Ajoutez cette ligne à /etc/modules :
servoblaster idle_timeout=1000
Démarrez le pilote :
sudo modprobe servoblaster
Réglages caméra : Grâce à Gmoto pour l'insight que l'ajustement du module uvcvideo corrige les problèmes de latence. Exécutez ces commandes une fois par démarrage ou ajoutez-les à /etc/modules :
rmmod uvcvideo
modprobe uvcvideo nodrop=1 timeout=5000 quirks=0x80
Étape 3 : Assembler le montage
Suivez les instructions du support, montez les servos, et fixez la webcam au sommet du support (le ruban adhésif fonctionne bien). Connectez la caméra au port USB du Pi ; un hub USB alimenté est optionnel mais peut aider si la caméra tire plus de courant.
Étape 4 : Connecter les servos
Servoblaster mappe servo‑0 sur GPIO 4 et servo‑1 sur GPIO 17. Les fils typiques des servos sont :
- Rouge – +5 V
- Marron/Noir – GND
- Contrôle – ligne de signal
Utilisez le câble ruban pour relier les fils de contrôle aux bonnes broches GPIO. Le code traite servo‑0 comme panoramique (gauche-droite) et servo‑1 comme inclinaison (haut-bas).
Alimentation des servos : Les petits servos de modélisme peuvent souvent être alimentés directement depuis les broches 5 V GPIO du Pi, mais les modèles plus grands ou plus exigeants peuvent nécessiter une alimentation externe 5 V–6 V. Connectez le +5 V et GND du servo à l'alimentation externe, puis reliez la masse externe à une broche GPIO de masse du Pi.
Étape 5 : Exécuter le programme de suivi
Téléchargez le script fourni PiFace.py, placez-le sur le Pi, et exécutez :
cd /path/to/PiFace.py
python PiFace.py
OpenCV exécute la détection de visage à une résolution de 320×240, recherchant les profils droit, gauche et frontaux. Les servos s'ajustent à un taux supérieur à une fois par seconde, maintenant la caméra centrée sur le visage détecté.
Consultez les vidéos de démonstration liées dans l'article original pour référence.
Processus de fabrication
- Comment lire la température avec un DS18B20 sur Raspberry Pi 2
- Surveillance de température professionnelle sur Raspberry Pi avec DS18B20
- Mesure de température sur Raspberry Pi avec capteurs 1‑Wire Maxim et pont I2C DS2482
- Surveillance précise de la température dans un placard serveur avec Raspberry Pi
- Intégration de données de capteurs sur Raspberry Pi : Guide pratique complet
- Capteur de suivi de ligne KY‑033 avec Raspberry Pi : Détecteur de porte/lignes simple
- Détection d'éclairs avec Raspberry Pi et AS3935 : Guide pratique
- Suivi avancé de balle de ping-pong sur Raspberry Pi avec OpenCV
- Construire une alarme à eau headless Raspberry Pi 2 avec Adafruit T‑Cobbler Plus