Apprenez à faire une caméra de sécurité panoramique et inclinable à distance avec un Raspberry Pi. Ce projet peut être complété en une matinée avec seulement les parties 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 servos micro ou mini passe-temps
- Webcam USB
- Fils de raccordement mâles à mâles
- Mâle à femelle fils de branchement
- Liens zip assortis
Construire la caméra de sécurité
Fixez un klaxon servo (les petites "formes" en plastique) à chaque servo en utilisant la vis fournie. La forme particulière n'a pas vraiment d'importance, bien que le plus grand soit le mieux. Ne serrez pas trop la vis.
Utilisez maintenant des attaches pour attacher un servo à l'autre à angle droit. L'un d'eux sera pan (gauche à droite), tandis que l'autre sera incliné (haut et bas). Peu importe lequel fait quoi, il peut être ajusté dans le code.
Enfin, connectez votre webcam à l'un des servos. Vous pouvez utiliser des fermetures à glissière pour cela, bien que ma webcam est venu avec un clip vissé au fond - je l'ai enlevé et utilisé la vis pour le maintenir à la corne. Pour plus de stabilité, vous pouvez installer l'ensemble de la plate-forme sur un étui ou une boîte. Une simple boîte en carton fait très bien l'affaire. Vous pouvez couper un trou carré et monter un servo de chasse à la surface, mais une cravate sera suffisante.
Un mot sur les webcams
Toutes les webcams USB ne sont pas créées de manière égale. 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 pouvez essayer un concentrateur USB alimenté et répéter la commande. Si la webcam n'est toujours pas reconnue, vous devrez peut-être acheter une webcam compatible.
Configuration du servo
Tandis que les servos peuvent sembler effrayants et complexes, ils sont vraiment très simples à connecter. Les servos fonctionnent sur la modulation de largeur d'impulsion (PWM), qui permet aux systèmes numériques d'imiter les signaux analogiques. Les signaux PWM sont essentiellement un signal ON - OFF rapide. Un signal qui est ON ou HIGH est décrit en utilisant le cycle de service. Le rapport cyclique est exprimé en pourcentage et décrit la durée d'activation du signal. Un signal PWM de 25% de facteur de marche sera activé pendant 25% du temps, et OFF pour les 75% restants. Le signal n'est pas allumé au démarrage, puis éteint 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. L'utilisation d'un cycle de travail de 100% serait la même que 5v "régulière", et 0% serait la même chose que le sol. Ne vous inquiétez pas si vous ne comprenez pas complètement comment PWM fonctionne, vous pouvez toujours contrôler les servos (Extreme Electronics est un bon endroit pour en savoir plus).
Il y a 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, cependant le Pi n'a qu'une seule broche compatible PWM matérielle. Des circuits externes sont disponibles pour fournir plusieurs canaux de PWM matériel, cependant un simple Arduino peut également gérer la tâche, car ils ont plusieurs broches PWM matérielles.
Voici le circuit:
Vérifiez le brochage de 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
- Marron ou noir est négatif, connectez-le à GND sur le Pi
- Orange ou blanc est le signal, connectez-le aux broches Arduino 9 et 10
Configuration Arduino
Nouveau sur Arduino? Commencez ici Premiers pas avec Arduino: Guide du débutant Premiers pas avec Arduino: un guide pour débutants Arduino 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 carte et le port corrects dans les menus Outils> Carte et Outils> Port
#include // Import the library Servo servoPan, servoTilt; // Create servo objects int servoMin = 20, servoMax = 160; // Define limits of servos void setup() { // Setup servos on PWM capable pins servoPan.attach(9); servoTilt.attach(10); } void loop() { for(int i = servoMin; i servoMin; --i) { // Move servos from maximum to minimum servoPan.write(i); servoTilt.write(i); delay(100); // Wait 100ms } }
#include // Import the library Servo servoPan, servoTilt; // Create servo objects int servoMin = 20, servoMax = 160; // Define limits of servos void setup() { // Setup servos on PWM capable pins servoPan.attach(9); servoTilt.attach(10); } void loop() { for(int i = servoMin; i servoMin; --i) { // Move servos from maximum to minimum servoPan.write(i); servoTilt.write(i); delay(100); // Wait 100ms } }
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). C'est en partie parce que ces servos bon marché sont incapables de déplacer avec précision les 180 degrés, et aussi en raison de la taille physique de la webcam empêche l'utilisation de la gamme complète. Vous devrez peut-être les ajuster pour votre configuration.
Si elles ne fonctionnent pas du tout, vérifiez que le circuit est correctement câblé. Les planches à pain peuvent parfois varier en qualité, alors pensez à investir dans un multimètre pour vérifier.
Les servos sont presque trop puissants pour alimenter l'Arduino, ils seront donc alimentés par le Pi. Le rail 5v sur le Pi est limité à 750mA fourni à l'ensemble Pi, et le Pi tire environ 500mA, laissant 250mA pour les servos. Ces micro servos tirent environ 80mA, ce qui signifie que le Pi devrait être capable de gérer deux d'entre eux. Si vous souhaitez utiliser plus de servos ou des modèles plus puissants et plus puissants, vous devrez peut-être utiliser une alimentation externe.
Maintenant, téléchargez le code suivant sur l'Arduino. Cela permettra d'écouter les données série entrantes (série comme dans Universal Serial Bus, ou USB). Le Pi enverra ces données via USB à l'Arduino, lui indiquant où déplacer les servos.
#include // Import the library Servo servoPan, servoTilt; // Create servo object String data = ""; // Store incoming commands (buffer) void setup() { // Setup servos on PWM capable pins servoPan.attach(9); servoTilt.attach(10); Serial.begin(9600); // Start serial at 9600 bps (speed) } void loop() { while (Serial.available()>0) { // If there is data char singleChar = Serial.read(); // Read each character if (singleChar == 'P') { // Move pan servo servoPan.write(data.toInt()); data = ""; // Clear buffer } else if (singleChar == 'T') { // Move tilt servo servoTilt.write(data.toInt()); data = ""; // Clear buffer } else { data += singleChar; // Append new data } } }
Vous pouvez tester ce code en ouvrant le moniteur série (en haut à droite> Serial Monitor ) et en envoyant quelques données de test:
- 90P
- 0P
- 20T
- 100T
Notez le format des commandes - une valeur et une lettre. La valeur est la position du servo, et la lettre (en majuscules) spécifie le servo de panoramique ou d'inclinaison. Comme ces données sont transmises à partir du Pi en série, chaque personnage en reçoit une à la fois. L'Arduino doit les "stocker" jusqu'à ce que toute la commande ait été transmise. La lettre finale ne spécifie pas seulement le servo, mais 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 sur le Raspberry Pi via la connexion USB habituelle .
Configuration Pi
Il est maintenant temps de configurer le Pi. Premièrement, installez un système d'exploitation Comment installer un système d'exploitation sur votre Raspberry Pi Comment installer un système d'exploitation sur votre Raspberry Pi Voici comment installer un nouveau système d'exploitation sur votre Pi - et comment cloner votre installation parfaite pour un désastre rapide récupération. Lire la suite . Connectez la webcam et l'Arduino à l'USB Pi.
Mettre à jour le Pi:
sudo apt-get update sudo apt-get upgrade
Installez le mouvement:
sudo apt-get install motion
Motion est un programme conçu pour gérer le streaming en webcam. Construire un système de sécurité de capture de mouvement à l'aide d'un Raspberry Pi Construire un système de sécurité de capture de mouvement à l'aide d'un Raspberry Pi Parmi les nombreux projets que vous pouvez construire avec le Raspberry Pi, l'un des plus intéressant et en permanence utile est le système de sécurité de capture de mouvement. Ouvrez le fichier de configuration Motion:
sudo nano /etc/motion/motion.conf
Ce fichier fournit beaucoup d'options pour configurer Motion. Installez comme suit:
- daemon on - Exécute le programme
- framerate: 100 - Combien de cadres ou d'images / seconde à diffuser
- stream_localhost off - Autorise l'accès sur le réseau
- largeur 640 - Largeur de la vidéo, ajustez pour votre webcam
- height 320 - Hauteur de la vidéo, ajustez pour votre webcam
- stream_port 8081 - Le port de sortie de la vidéo vers
- output_picture off - Ne sauvegarde aucune image
C'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 sauvegarder et quitter.
Maintenant, éditez un autre fichier:
sudo nano /etc/default/motion
Définissez "start_motion_daemon = yes". Ceci est nécessaire pour s'assurer que Motion s'exécute.
Maintenant, trouvez votre adresse IP:
ifconfig
Cette commande affichera les détails de connexion réseau pour le Pi. Regardez la deuxième ligne, inet addr . Vous pouvez définir une adresse IP statique (Qu'est-ce qu'une adresse IP statique?) Qu'est-ce qu'une adresse IP statique? Comment puis-je en obtenir un et ses avantages / inconvénients? Qu'est-ce qu'une adresse IP statique, Comment obtenir un et ses avantages / désavantages? Dans les réseaux domestiques, les adresses IP ne sont généralement pas fixées, mais elles se situent dans des plages spécifiques: une adresse IP statique ne change pas, quels sont les avantages et pourquoi en voudriez-vous une? Read More), mais pour l'instant Prenez note de ce numéro.
Maintenant, lancez Motion:
sudo service motion start
Vous pouvez arrêter ou redémarrer Motion en changeant "start" à "stop" ou "restart".
Passez sur 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 deux-points suivi d'un nombre est le port qui a été configuré plus tôt. Tout étant bien, vous devriez voir le flux de votre webcam! Essayez de vous déplacer et de voir à 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 faire la mise au point de 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 naviguez dedans:
mkdir security-cam cd security-cam/
Maintenant, installez Twisted:
sudo apt-get install python-twisted
Twisted est un serveur web écrit en Python, qui va écouter les commandes et agir en conséquence.
Une fois installé, créez un script Python pour exécuter des commandes (déplacez les servos).
sudo nano servos.rpy
Notez comment l'extension de fichier est ".rpy" au lieu de "py". Voici le code:
# Import necessary files import serial from twisted.web.resource import Resource # Setup Arduino at correct speed try: arduino = serial.Serial('/dev/ttyUSB0', 9600) except: arduino = serial.Serial('/dev/ttyUSB1', 9600) class MoveServo(Resource): isLeaf = True def render_GET(self, request): try: # Send value over serial to the Arduino arduino.write(request.args['value'][0]) return 'Success' except: return 'Failure' resource = MoveServo()
Maintenant, lancez le serveur web:
sudo twistd -n web -p 80 --path /home/pi/security-cam/
Laisse le décomposer - "-p 80" spécifie le port (80). C'est le 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 relancez la commande).
Maintenant, créez la page Web:
sudo nano index.html
Voici le code de la page Web:
Make Use Of DIY Security Camera #container { /* center the content */ margin: 0 auto; text-align: center; } Voilà. Votre propre caméra réseau Pan and Tilt. Si vous souhaitez exposer votre webcam à Internet, n'oubliez pas de tenir compte des dangers. 5 Dangers à prendre en compte lorsque vous pointez vos caméras de sécurité à domicile 5 Dangers à prendre en compte lorsque vous pointez vos caméras de sécurité à domicile parties de votre maison, vous les pointez. Garder les choses en sécurité est important, tout comme le maintien de votre vie privée. Lire la suite - puis se pencher sur la redirection de port Qu'est-ce que le transfert de port et comment cela peut-il m'aider? [MakeUseOf explique] Qu'est-ce que le transfert de port et comment cela peut-il m'aider? [MakeUseOf Explains] Pleurez-vous un peu à l'intérieur quand quelqu'un vous dit qu'il y a un problème de redirection de port et que votre nouvelle application brillante ne fonctionnera pas? Votre Xbox ne vous laissera pas jouer à des jeux, vos téléchargements de torrent refusent ... Lisez plus, ainsi votre routeur sait où envoyer des demandes entrantes. Vous pouvez ajouter une alimentation externe Pi to Go? 3 façons d'alimenter un Raspberry Pi pour les projets portables Pi to Go? 3 façons d'alimenter un Raspberry Pi pour des projets portatifs Vous voulez sortir votre Raspberry Pi de la maison et participer à certains projets mobiles? Vous aurez besoin d'une batterie quelconque, mais plusieurs options sont disponibles. 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-moi savoir dans les commentaires, j'aimerais voir!