Publicité

Apprenez à créer une caméra de sécurité panoramique et inclinable visible à distance avec un Raspberry Pi. Ce projet peut être achevé en une matinée avec seulement les pièces les plus simples. Voici le résultat final:

De quoi as-tu besoin

  • Raspberry Pi 2 ou 3 avec carte Micro SD
  • Arduino UNO ou similaire
  • 2 x micro ou mini servos de loisir
  • Webcam USB
  • Fils de raccordement mâle à mâle
  • Fils de raccordement mâle à femelle
  • Liens zippés assortis

Construire la caméra de sécurité

Fixez un cornet de servo (les petites «formes» en plastique) à chaque servo à l'aide de la vis fournie. La forme particulière n'a pas vraiment d'importance, bien que plus elle est grande, mieux c'est. Ne serrez pas trop la vis.

Utilisez maintenant des attaches zippées pour attacher un servo à l'autre à angle droit. L'un d'eux sera panoramique (de gauche à droite), tandis que l'autre sera incliné (de haut en bas). Peu importe qui fait quoi, il peut être ajusté dans le code.

Servo-matériel

Enfin, connectez votre webcam à l'un des servos. Vous pouvez utiliser des fermetures à glissière pour cela, bien que ma webcam soit livrée avec un clip vissé au fond - je l'ai retiré et j'ai utilisé la vis pour le fixer au klaxon. Pour plus de stabilité, vous souhaiterez peut-être monter l'ensemble de l'installation sur un boîtier ou une boîte. Une simple boîte en carton fait très bien l'affaire. Vous pouvez couper un trou carré soigné et monter un servo au ras de la surface, mais une attache zippée sera suffisante.

instagram viewer

Caméra Pi-Pan-Tilt

Un mot sur les webcams

Toutes les webcams USB ne sont pas créées de la même manière. Connectez votre webcam au port USB de votre Pi et exécutez cette commande:

lsusb

Cette commande affiche des informations sur tous les périphériques USB connectés au Pi. Si votre webcam n'est pas répertoriée ici, vous voudrez peut-être essayer un concentrateur USB alimenté et répéter la commande. Si la webcam n'est toujours pas reconnue, vous devrez peut-être acheter un webcam compatible.

Configuration du servo

Bien que les servos puissent sembler effrayants et complexes, ils sont vraiment assez simples à connecter. Les servos fonctionnent sur la modulation de largeur d'impulsion (PWM), qui est un moyen pour les systèmes numériques d'imiter des signaux analogiques. Les signaux PWM sont essentiellement un signal ON-OFF rapide. Un signal ON ou HIGH est décrit en utilisant le rapport cyclique. Le rapport cyclique est exprimé en pourcentage et décrit la durée pendant laquelle le signal est activé. Un signal PWM de 25% de rapport cyclique sera ON pendant 25% du temps, et OFF pour les 75% restants. Le signal n'est pas activé au démarrage puis désactivé pour toujours, il est pulsé régulièrement sur une très courte période de temps.

Les servos écoutent ces impulsions et agissent en conséquence. Utiliser un rapport cyclique de 100% serait le même que le 5v «normal» et 0% serait le même que le sol. Ne vous inquiétez pas si vous ne comprenez pas parfaitement le fonctionnement du PWM, vous pouvez toujours contrôler les servos (Extreme Electronics est un bon endroit pour en savoir plus).

Il existe deux façons principales d'utiliser PWM - matériel ou logiciel. Le PWM matériel fournit souvent une latence plus faible (combien de temps entre le servo recevant la commande et le déplacement) que le PWM logiciel, mais le Pi n'a qu'une seule broche compatible PWM matérielle. Circuits externes sont disponibles pour fournir plusieurs canaux de PWM matériel, mais un simple Arduino peut également gérer la tâche, car ils ont plusieurs broches PWM matérielles.

Voici le circuit:

Pi-Servo-Connection

Revérifiez le brochage pour votre Pi, ils varient légèrement d'un modèle à l'autre. Vous devez comprendre comment vos servos sont câblés. Les servos nécessitent trois fils pour les contrôler, mais les couleurs varient légèrement:

  • Le rouge est positif, connectez-le à Pi + 5v
  • Le brun ou le noir est négatif, connectez-le à GND sur le Pi
  • Orange ou blanc est un signal, connectez-le aux broches Arduino 9 et 10

Configuration Arduino

Nouveau sur Arduino? Commencez ici Débuter avec Arduino: Guide du débutantArduino est une plate-forme de prototypage électronique open source basée sur du matériel et des logiciels flexibles et faciles à utiliser. Il est destiné aux artistes, designers, amateurs et à toute personne intéressée par la création d'objets ou d'environnements interactifs. Lire la suite .

Une fois les servos connectés, ouvrez l'IDE Arduino sur votre ordinateur et téléchargez ce code de test. N'oubliez pas de sélectionner la bonne carte et le bon port dans le Outils> Conseil et Outils> Port menus

#comprendre // Importez la bibliothèque Servo servoPan, servoTilt; // Créer des objets servo. int servoMin = 20, servoMax = 160; // Définir les limites des servos void setup () {// Configurer les servos sur des broches compatibles PWM servoPan.attach (9); servoTilt.attach (10); } void loop () {for (int i = servoMin; i  servoMin; --i) {// Déplacer les servos du maximum vers le minimum servoPan.write (i); servoTilt.write (i); retard (100); // Attendez 100 ms} }

Tout va bien, vous devriez voir les deux servos se déplacer lentement d'avant en arrière. Remarquez comment «servoMin» et servoMax »sont définis comme 20 et 160 degrés (au lieu de 0 et 180). Cela est dû en partie au fait que ces servos bon marché sont incapables de déplacer avec précision les 180 degrés complets, et également en raison de la taille physique de la webcam qui empêche l'utilisation de la plage complète. Vous devrez peut-être les ajuster pour votre configuration.

S'ils ne fonctionnent pas du tout, vérifiez que le circuit est correctement câblé. Les maquettes peuvent parfois varier en qualité, alors pensez à investir dans un multimètre pour vérifier.

Les servos sont presque trop puissant pour que l'Arduino soit alimenté, ils seront donc alimentés par le Pi. Le rail 5v sur le Pi est limitée à 750mA fournie à l'ensemble du Pi, et le Pi consomme environ 500mA, laissant 250mA pour le servos. Ces micro servos consomment environ 80 mA, ce qui signifie que le Pi devrait être capable d'en gérer deux. Si vous souhaitez utiliser plus de servos ou des modèles plus puissants et plus puissants, vous devrez peut-être utiliser une alimentation externe.

Téléchargez maintenant le code suivant sur l'Arduino. Cela écoutera les données série entrantes (série comme dans Universal En série Bus ou USB). Le Pi enverra ces données via USB à l'Arduino, lui indiquant où déplacer les servos.

#comprendre // Importez la bibliothèque Servo servoPan, servoTilt; // Créer un objet servo. String data = ""; // Stocke les commandes entrantes (tampon) void setup () {// Configuration des servos sur des broches compatibles PWM servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Démarrer la série à 9600 bps (vitesse) } void loop () {while (Serial.available ()> 0) {// S'il y a des données char singleChar = Serial.read (); // Lire chaque caractère if (singleChar == 'P') {// Move pan servo servoPan.write (data.toInt ()); data = ""; // Effacer le tampon} else if (singleChar == 'T') {// Move tilt servo servoTilt.write (data.toInt ()); data = ""; // Vider le tampon} else {data + = singleChar; // Ajouter de nouvelles données}} }

Vous pouvez tester ce code en ouvrant le moniteur série (en haut à droite> Moniteur série) et envoi de données de test:

  • 90P
  • 0P
  • 20T
  • 100T

Remarquez le format des commandes - une valeur puis une lettre. La valeur est la position du servo et la lettre (en majuscules) spécifie le servo panoramique ou d'inclinaison. Comme ces données sont transmises du Pi en série, chaque caractère passe par un à la fois. L'Arduino doit les «stocker» jusqu'à ce que toute la commande ait été transmise. La dernière lettre spécifie non seulement le servo, mais elle permet également à l'Arduino de savoir qu'il n'y a plus de données dans cette commande.

Enfin, déconnectez votre Arduino de l'ordinateur et branchez-le au Raspberry Pi via la connexion de port USB habituelle.

Configuration Pi

Il est maintenant temps de configurer le Pi. Premier, installer un système d'exploitation Comment installer un système d'exploitation sur un Raspberry PiVoici comment installer un système d'exploitation sur votre Raspberry Pi et comment cloner votre configuration parfaite pour une reprise après sinistre rapide. Lire la suite . Connectez la webcam et l'Arduino au Pi USB.

Mettez à jour le Pi:

mise à jour sudo apt-get. mise à niveau sudo apt-get

Installez le mouvement:

sudo apt-get install motion

Motion est un programme conçu pour gérer le streaming webcam. Il gère tous les travaux lourds et peut même effectuer un enregistrement et une détection de mouvement (essayez la construction d'un système de sécurité de capture de mouvement Construire un système de sécurité de capture de mouvement à l'aide d'un Raspberry PiParmi les nombreux projets que vous pouvez créer avec le Raspberry Pi, l'un des plus intéressants et des plus utiles est le système de sécurité de capture de mouvement. Lire la suite ). Ouvrez le fichier de configuration de Motion:

sudo nano /etc/motion/motion.conf

Ce fichier fournit de nombreuses options pour configurer Motion. Configurez comme suit:

  • daemon on - Exécute le programme
  • framerate: 100 - Combien d'images ou d'images / seconde à diffuser
  • stream_localhost off - Autorise l'accès à travers le réseau
  • largeur 640 - Largeur de la vidéo, ajustez pour votre webcam
  • hauteur 320 - Hauteur de la vidéo, ajustez pour votre webcam
  • stream_port 8081 - Le port de sortie de la vidéo
  • output_picture off - N'enregistrez aucune image

Ceci est un fichier assez volumineux, vous pouvez donc utiliser CTRL + W pour rechercher des lignes. Une fois terminé, appuyez sur CTRL + X puis confirmez pour enregistrer et quitter.

Modifiez maintenant un fichier supplémentaire:

sudo nano / etc / default / motion

Définissez «start_motion_daemon = yes». Cela est nécessaire pour garantir le bon fonctionnement de Motion.

Découvrez maintenant votre adresse IP:

ifconfig

Cette commande affichera les détails de la connexion réseau pour le Pi. Regardez la deuxième ligne, inet addr. Vous souhaiterez peut-être définir une adresse IP statique (qu'est-ce qu'une adresse IP statique? Qu'est-ce qu'une adresse IP statique? Voici pourquoi vous n'en avez pas besoinUne adresse IP statique est celle qui ne change jamais. Les adresses IP dynamiques changent. Nous expliquons pourquoi vous n'avez pas besoin d'une adresse IP statique. Lire la suite ), mais pour l'instant, notez ce numéro.

Maintenant, lancez Motion:

sudo service motion start

Vous pouvez arrêter ou redémarrer Motion en remplaçant «start» par «stop» ou «restart».

Basculez vers votre ordinateur et accédez au Pi à partir d'un navigateur Web:

http://xxx.xxx.x.xx: 8081

Où xxx.xxx.x.xx est l'adresse IP Pi. Le signe deux-points suivi d'un nombre correspond au port configuré précédemment. Tout va bien, vous devriez voir le flux de votre webcam! Essayez de vous déplacer et voyez à quoi les choses ressemblent. Vous devrez peut-être ajuster les paramètres de luminosité et de contraste dans le fichier de configuration. Vous devrez peut-être concentrer la webcam - certains modèles ont une petite bague de mise au point autour de l'objectif. Tournez ceci jusqu'à ce que l'image soit la plus nette.

De retour sur le Pi, créez un dossier et accédez-y:

caméra de sécurité mkdir. cd security-cam /

Installez maintenant Twisted:

sudo apt-get install python-twisted

Twisted est un serveur Web écrit en Python, qui écoutera les commandes et agira en conséquence.

Une fois installé, créez un script Python pour exécuter des commandes (déplacer les servos).

sudo nano servos.rpy

Remarquez comment l'extension de fichier est «.rpy» au lieu de «py». Voici le code:

# Importez les fichiers nécessaires. importer en série. à partir de twisted.web.resource import Resource # Setup Arduino à la vitesse correcte. essayez: arduino = série. Série ('/ dev / ttyUSB0', 9600) sauf: arduino = série. Serial ('/ dev / ttyUSB1', 9600) classe MoveServo (Resource): isLeaf = True def render_GET (self, request): try: # Send value over série à l'Arduino arduino.write (request.args ['value'] [0]) return 'Success' except: return 'Failure' resource = MoveServo ()

Démarrez maintenant le serveur Web:

sudo twistd -n web -p 80 --path / home / pi / security-cam /

Permet de le décomposer - "-p 80" spécifie le port (80). Il s'agit du port par défaut pour les pages Web. «–Path / home / pi / security-cam /» indique à Twisted de démarrer le serveur dans le répertoire spécifié. Si vous apportez des modifications aux scripts dans le dossier «security-cam», vous devrez redémarrer le serveur (CTRL + X pour fermer, puis réexécutez la commande).

Créez maintenant la page Web:

sudo nano index.html

Voici le code de la page Web:

Faire usage de la caméra de sécurité DIY


Remplacez «PI_IP_ADDRESS» (utilisé deux fois) par la véritable adresse IP de votre Pi (raspberrypi.local devrait également fonctionner si vous utilisez la dernière version de Raspian). Redémarrez le serveur Web, puis accédez au Pi depuis votre ordinateur, pas besoin de spécifier le port. Vous devriez pouvoir effectuer un panoramique à gauche et à droite et voir le flux vidéo:

Pi-Pan-Tilt-Camera-Web-View

Voilà. Votre propre caméra réseau panoramique et inclinaison. Si vous souhaitez exposer votre webcam à Internet, pensez à considérer les dangers 5 dangers à considérer lors du pointage de vos caméras de sécurité à domicileIl est important de bien considérer où vous positionnez vos caméras et dans quelles parties de votre maison vous les dirigez. Il est important de garder les choses en sécurité, mais il en va de même de la confidentialité. Lire la suite - puis examinez redirection de port Qu'est-ce que la redirection de port et comment peut-elle m'aider? [MakeUseOf explique]Pleurez-vous un peu à l'intérieur quand quelqu'un vous dit qu'il y a un problème de redirection de port et c'est pourquoi votre nouvelle application brillante ne fonctionnera pas? Votre Xbox ne vous laissera pas jouer à des jeux, vos téléchargements de torrent refusent ... Lire la suite , afin que votre routeur sache où envoyer les demandes entrantes. Vous pourriez ajouter une alimentation externe 3 packs de batteries Raspberry Pi pour projets portablesUne batterie Raspberry Pi peut transformer un Pi ordinaire en ordinateur portable. Vous aurez besoin d'une de ces solutions de batterie pour commencer. Lire la suite et un adaptateur Wi-Fi pour une plate-forme vraiment portable.

Avez-vous fait quelque chose de cool avec une webcam et un Pi? Faites le moi savoir dans les commentaires, j'aimerais voir!

Joe est diplômé en informatique de l'Université de Lincoln, au Royaume-Uni. C'est un développeur de logiciels professionnel, et lorsqu'il ne pilote pas de drones ou n'écrit pas de musique, il peut souvent être trouvé en train de prendre des photos ou de produire des vidéos.