Diy caméra de sécurité panoramique et d`inclinaison réseau avec pi framboise

Apprenez à faire un panoramique à distance visible et inclinez caméra de sécurité avec un Raspberry Pi. Ce projet peut être complété en une matinée avec seulement la plus simple des pièces. Voici le résultat final:

De quoi as-tu besoin

  • Raspberry Pi 2 ou 3 avec carte Micro SD
  • ONU Arduino ou similaire
  • 2 x micro ou mini-servos de passe-temps
  • webcam USB
  • Homme aux fils mâles Hookup
  • Homme à fil de montage femelles
  • attaches assorties

Construire la caméra de sécurité

Attacher une corne d`asservissement (les petits plastiques « de formes ») à chaque servo avec la vis prévue. La forme particulière ne compte pas vraiment, bien que plus le mieux. Ne pas trop serrer la vis.

Maintenant, utilisez attaches pour attacher un servo à l`autre à angle droit. L`un d`entre eux sera pan (de gauche à droite), tandis que l`autre sera inclinaison (haut et bas). Peu importe que l`on fait quoi, il peut être réglé dans le code.

Servo-Hardware

Enfin, fixez votre webcam à l`un des servos. Vous pouvez utiliser les liens zip pour cela, bien que ma webcam est venu avec un clip vissé au fond - je l`ai enlevé et utilisé ce la vis pour le maintenir à la corne. Pour la stabilité, vous pouvez monter tout le gréement à un cas ou une boîte. Une simple boîte en carton fait l`affaire tout à fait bien. Vous pouvez couper un trou carré propre et monter un servo affleurant à la surface, mais une cravate zip sera suffisante.

Pi-Pan-Tilt-caméra

Un mot sur les Webcams

Toutes les webcams USB sont également créés. Connectez votre webcam au port USB de votre Pi et exécutez la commande suivante:

lsusb

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

Configuration servo

Alors que servos peut sembler effrayant et complexes, ils sont vraiment très simple de se connecter. Servos fonctionnent sur Pulse Width Modulation (PWM), qui est une manière pour les systèmes numériques d`imiter les signaux analogiques. signaux PWM sont essentiellement un rapide ON - OFF signaux. Un signal qui est activé ou HIGH est décrit à l`aide du rapport cyclique. Cycle de service est exprimé en pourcentage, et décrit combien de temps le signal est activé pour. Un signal de PWM de 25% de cycle sera ON pour 25% du temps, et OFF pour les 75% restants. Le signal est pas allumé au début puis OFF pour toujours, il est pulsé régulièrement sur une période de temps très court.

Servos écouter ces impulsions et agir en conséquence. L`utilisation d`un cycle de service de 100% serait la même chose que « régulier » 5v, et 0% serait le même que la terre. Ne vous inquiétez pas si vous ne comprenez pas comment fonctionne PWM, vous pouvez contrôler encore 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. PWM matériel fournit souvent une latence plus faible (la durée entre la réception de la commande d`asservissement et le déplacement) que le logiciel PWM, mais le Pi ne dispose que d`une broche PWM matériel capable. Les circuits externes sont disponibles pour fournir des canaux multiples de matériel PWM, mais simple Arduino peut également gérer la tâche, car ils ont plusieurs broches PWM matériel.

Voici le circuit:

Pi-Servo-Connection

Vérifiez l`Brochage pour votre Pi, ils varient légèrement entre les modèles. Vous devez savoir comment vos servos sont câblés. Servos ont besoin de trois fils pour les contrôler, mais les couleurs varient légèrement:

  • Le rouge est positif, le connecter à Pi + 5v
  • Brun ou noir est négatif, connectez ce à la masse sur la Pi
  • Orange ou blanc est un signal, le connecter à broches Arduino 9 et 10

Configuration Arduino

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

Une fois que les servos sont connectés, ouvrez l`Arduino IDE sur votre ordinateur et télécharger ce code de test. Ne pas oublier de sélectionner la carte et le port de la Outils gt; Planche et Outils gt; Port menus

#comprendre  // importer la bibliothèqueservo servoPan, servoTilt- // Création d`objets servoint servoMin = 20, ServoMAX = 160- // Définir les limites de servosvide installer() {// servos d`installation sur les broches PWM capablesservoPan.attacher(9)-servoTilt.attacher(dix)-}vide boucle() {pour(int je = servoMin- je lt; ServoMAX- ++je) { 1// Déplacement servos du minimum au maximum servoPan.écrire(je)-servoTilt.écrire(je)-retard(100)- // Attendre 100ms }pour(int je = ServoMAX- je gt; servoMin- --je) {// Déplacement servos du maximum au minimumservoPan.écrire(je)-servoTilt.écrire(je)-retard(100)- // Attendre 100ms}}

Si tout va bien, vous devriez voir les deux servos se déplacent lentement et en arrière. Notez comment « servoMin » et Servomax » sont tels que définis 20 et 160 degrés (au lieu de 0 et 180). Ceci est en partie parce que ces servos bon marché sont incapables de se déplacer avec précision les 180 degrés, et aussi en raison de la taille physique de la webcam empêche la gamme complète utilisée. Vous devrez peut-être ajuster ces pour votre configuration.

Si elles ne fonctionnent pas du tout revérifier le circuit est branché correctement. Breadboards peuvent parfois varier en qualité et, donc envisager d`investir dans un multimètre pour vérifier.

Les servos sont presque trop puissant pour l`Arduino au pouvoir, ils seront alimentés par le Pi. Le rail de 5V sur le Pi est limité à 750mA fourni à l`ensemble Pi, Pi et le tire environ 500 mA, 250 mA pour laisser les servos. Ces micro servos tirent environ 80 mA, ce qui signifie Pi devrait être capable de gérer deux d`entre eux. Si vous souhaitez utiliser plus ou plus, servos modèles plus alimentés, vous devrez peut-être utiliser une alimentation externe.

Maintenant télécharger le code suivant à l`Arduino. Cela écouter les données série entrantes (série comme Universal En série Bus ou USB). Le Pi envoie ces données via USB à l`Arduino, lui dire où déplacer les servos.

#comprendre  // importer la bibliothèqueservo servoPan, servoTilt- // Créer un objet servoLes chaînes de caractères = ""- // commandes entrantes de magasins (tampon)vide installer() {// servos d`installation sur les broches PWM capablesservoPan.attacher(9)-servoTilt.attacher(dix)-En série.commencer(9600)- // Démarrer série à 9600 bps (vitesse)}vide boucle() {tandis que (En série.disponible() gt; 0){// S`il y a des donnéescarboniser singleChar = En série.lis()- // Lire chaque caractèresi (singleChar == `P`) {// Déplacement servo panoramiqueservoPan.écrire(Les données.toInt())-Les données = ""- // buffer Effacer}autre si (singleChar == `T`) {// mouvement asservissement d`inclinaisonservoTilt.écrire(Les données.toInt())-Les données = ""- // buffer Effacer}autre {Les données += singleChar- // ajouter de nouvelles données}}}

Vous pouvez tester ce code en ouvrant le moniteur de série (en haut à droite gt; Serial Monitor) Et l`envoi de certaines 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 majuscule) spécifie le servo de panoramique ou d`inclinaison. Comme ces données sont transmises à partir de la Pi en série, chaque personnage passe par un à la fois. L`Arduino doit ces « magasin » jusqu`à ce que toute la commande a été transmise. La dernière lettre indique non seulement le servo, il permet également à l`Arduino savoir qu`il n`y a pas plus de données dans cette commande.

Enfin, débranchez votre Arduino de l`ordinateur, et brancher dans le Raspberry Pi via la connexion habituelle du port USB.

Configuration Pi

Maintenant, il est temps de configurer le Pi. Premier, installer un système d`exploitation. Connectez la webcam et l`Arduino au port USB Pi.Comment faire pour installer un système d`exploitation à votre Raspberry PiComment faire pour installer un système d`exploitation à votre Raspberry PiVoici comment obtenir un nouveau système d`exploitation installé et en cours d`exécution sur votre Pi - et comment cloner votre configuration idéale pour la reprise après incident rapide.Lire la suite

Mise à jour du Pi:

sudo apt-get mettre à joursudo apt-get surclassement

Installer le mouvement:

sudo apt-get installer mouvement

Motion est un programme fait pour gérer le streaming de webcam. Il gère tout le levage lourd, et peut même effectuer l`enregistrement et la détection de mouvement (essayer la construction d`un système de sécurité de la capture de mouvement). Ouvrez le fichier de configuration de mouvement:Construire un système de sécurité de capture de mouvement en utilisant un Raspberry PiConstruire un système de sécurité de capture de mouvement en utilisant un Raspberry PiParmi les nombreux projets que vous pouvez construire avec le Raspberry Pi, l`un est le système de sécurité de la capture de mouvement le plus intéressant et utile de façon permanente.Lire la suite

sudo nano /etc/motion/motion.conf

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

  • démon sur - Exécutez le programme
  • framerate: 100 - Combien d`images ou d`images / seconde pour diffuser
  • stream_localhost off - Permettre l`accès à travers le réseau
  • largeur 640 - Largeur de la vidéo, réglez votre webcam
  • Hauteur 320 - Hauteur de la vidéo, réglez votre webcam
  • stream_port 8081 - Le port de sortie vidéo
  • output_picture off - Ne pas enregistrer les images

Ceci est tout à fait un gros fichier, vous voudrez peut-être utiliser CTRL + W pour rechercher des lignes. Une fois terminé, appuyez sur CTRL + X puis confirmez pour enregistrer et quitter.

Maintenant modifier un fichier plus:

sudo nano / Etc / default / mouvement

Set « start_motion_daemon = yes ». Cela est nécessaire pour assurer court mouvement.

Maintenant, trouver votre adresse IP:

ifconfig

Cette commande affiche les détails de connexion réseau pour Pi. Regardez la deuxième ligne, iNet adr. Vous pouvez définir une adresse IP statique (ce qui est une adresse IP statique?), Mais pour maintenant faire une note de ce nombre.Qu`est-ce qu`une adresse IP statique, Comment puis-je obtenir un & Ses avantages / inconvénientsQu`est-ce qu`une adresse IP statique, Comment puis-je obtenir un & Ses avantages / inconvénientsDans les réseaux à domicile, les adresses IP ne sont généralement pas fixes, mais ils ne se situent dans des gammes spécifiques. Une adresse IP statique ne change pas. Quels sont les avantages à cela, et pourquoi vous en voulez un?Lire la suite

Maintenant commencer Motion:

sudo un service début de mouvement

Vous pouvez arrêter ou redémarrer mouvement en changeant « start » pour « arrêter » ou « redémarrage ».

Passer à votre ordinateur et accédez à Pi à partir d`un navigateur Web:

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

Où xxx.xxx.x.xx est l`adresse IP Pi. Le colon suivi d`un numéro est le port qui a été installé plus tôt. Si tout va bien, vous devriez voir le flux de votre webcam! Essayez de déplacer et voir comment les choses regardent. Vous devrez peut-être régler 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 la lentille. Tournez jusqu`à ce que l`image est la plus nette.

Retour sur la Pi, créez un dossier et de naviguer dedans:

mkdir sécurité-camCD sécurité-cam /

Maintenant, installez Twisted:

sudo apt-get installer python-twisted

Twisted est un serveur web écrit en Python, qui écoute les commandes et agir 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 du fichier est « .rpy » au lieu de « py ». Voici le code:

# Importation des fichiers nécessairesimporter en sériede tordu.toile.Ressource importer Ressource# Configuration Arduino à une vitesse correcteessayer:arduino = en série.En série(`/ Dev / ttyUSB0`, 9600)sauf:arduino = en série.En série(`/ Dev / ttyUSB1`, 9600)classe MoveServo(Ressource):IsLeaf = Vraidef render_GET(soi,demande):essayer:# Envoyer valeur sur série à l`Arduinoarduino.écrire(demande.args[`valeur`][0])revenir `Succès`sauf:revenir `Échec`Ressource = MoveServo()

Maintenant, lancez le serveur Web:

sudo twistd de web -n 80 --path / home / pi / sécurité-cam /

Permet de décomposer - « -p 80 » indique le port (80). Ceci est le port par défaut pour les pages Web. « -path / home / pi / security-cam / » CONTENT torsadés pour démarrer le serveur dans le répertoire spécifié. Si vous apportez des modifications aux scripts dans le dossier « sécurité-cam » vous devez redémarrer le serveur (CTRL + X fermer, puis exécutez à nouveau la commande).

Maintenant, créez la page Web:

sudo nano index.html

Voici le code de la page Web:

lt;htmlgt;lt;têtegt;lt;Titregt;Exploitez la caméra de sécurité de bricolageTitregt;lt;style type="text / css"gt;#récipient {/ * Centre du contenu * /marge: 0 auto-text-align: centre-}stylegt;têtegt;lt;corpsgt;lt;div ça="récipient"gt;lt;img src="http: // PI_IP_ADDRESS: 8081" / Gt;lt;scénario src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"gt;scénariogt;lt;br / Gt;lt;bouton sur clic="servos.move (`P`, dix)"gt;La gaucheboutongt;lt;bouton sur clic="servos.move (`P`, -dix)"gt;Droiteboutongt;lt;bouton sur clic="servos.move (`T`, -dix)"gt;en hautboutongt;lt;bouton sur clic="servos.move (`T`, dix)"gt;Vers le basboutongt;divgt;corpsgt;lt;scénariogt;var servos-$( document ).prêt(fonction() {servos = moveServos()-})-fonction moveServos() {// Stocker certains paramètres, réglez en fonctionvar panPos = 70,tiltPos = 90,tiltMax = 170,tiltMin = 45,panMax = 170,panMin = 20-revenir {bouge toi:fonction(servo, ajustement) {var valeur-si(servo == `P`) {si(!((panPos gt; = panMax && ajustement gt; 0) || (panPos lt; = panMin && ajustement lt; 0))) {// Toujours dans la plage autorisée, "programme" le mouvementpanPos += ajustement-}valeur = panPos + `P`-}autre si(servo == `T`) {si(!((tiltPos gt; = tiltMax && ajustement gt; 0) || (tiltPos lt; = tiltMin && ajustement lt; 0))) {// Toujours dans la plage autorisée, "programme" le mouvementtiltPos += ajustement-}valeur = tiltPos + `T`-}// Utilisez AJAX pour déplacer réellement les servos$.obtenir(`Http: //PI_IP_ADDRESS/servos.rpy value =` + valeur)-},}}scénariogt;htmlgt;

Change « PI_IP_ADDRESS » (utilisé deux fois) à l`adresse IP réelle de votre Pi (raspberrypi.local devrait également fonctionner si vous utilisez la dernière Raspian). Redémarrez le serveur Web, puis naviguez jusqu`au Pi à partir de votre ordinateur, pas besoin de spécifier le port. Vous devriez pouvoir Pano gauche et à droite, et voir le flux vidéo:

Pi-Pan-Tilt-caméra-Web-View

Voilà. Votre appareil photo réseau Pan et Tilt. Si vous souhaitez exposer votre webcam à Internet, souvenez-vous prendre en compte les dangers - puis regardez dans redirection de port, de sorte que votre routeur sait où envoyer les requêtes entrantes. Vous pouvez ajouter une alimentation externe et un adaptateur Wi-Fi pour une plate-forme vraiment portable.5 Dangers à considérer lors du pointage votre maison Caméras de sécurité5 Dangers à considérer lors du pointage votre maison Caméras de sécuritéIl est important d`examiner attentivement où vous placez vos caméras, et quelles parties de votre maison vous les pointez. Garder les choses en sécurité est importante, mais maintient votre vie privée.Lire la suite

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

Articles connexes