Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Base de caméra motorisée à suivi de mouvement

Composants et fournitures

Arduino UNO
× 1
Condensateur 100 µF
× 1
LED (générique)
× 5
Capteur de mouvement PIR (générique)
× 5
Résistance 220 ohm
× 5
Servos (Tower Pro MG996R)
× 1

À propos de ce projet

J'ai eu cette idée pour résoudre un problème que j'avais avec mes caméras de sécurité à domicile. J'ai une caméra en particulier qui est positionnée sur un mur entre deux pièces, mais vous ne pouvez voir qu'une pièce à la fois, sauf si vous vous connectez au logiciel de la caméra pour la faire pivoter manuellement. Si quelqu'un devait entrer dans la pièce d'en face, la caméra n'enregistrerait jamais l'action. Pour résoudre ce problème, j'ai décidé de créer une base de détection/suivi de mouvement sur laquelle je pourrais attacher la caméra afin qu'elle se repositionne automatiquement là où le mouvement a été détecté.

COMMENT ÇA FONCTIONNE :

Cet appareil utilise 5 capteurs de mouvement PIR pour détecter tout mouvement dans un rayon de 180º. Une fois le mouvement détecté, un servomoteur fait tourner la base de la caméra pour pointer dans cette direction. Il y a également 5 voyants LED "d'état" positionnés à l'intérieur de la base qui s'allumeront chaque fois que l'un des capteurs PIR détectera un mouvement.

VOIR EN ACTION !

CABLAGE :

Le câblage de ce projet est simple et direct, cependant, en raison du fait qu'il y a 5 de tout sauf le servomoteur, le nombre de fils commence à s'additionner un peu. Consultez le schéma de circuit et les schémas au bas de cette page pour plus de détails, mais voici les bases.

les voyants d'état LED...

J'ai utilisé une mini planche à pain pour séparer les lumières LED du reste des circuits afin de permettre un retrait plus facile si nécessaire. Chaque LED répond à un capteur PIR différent et s'allumera chaque fois qu'elle détectera un mouvement. Connectez simplement chaque LED à une entrée numérique distincte (9-13) sur l'Arduino et mettez-les à la terre via une résistance de 220 ohms.

les capteurs de mouvement PIR...

J'ai utilisé les capteurs PIR modèle HC-SR501 pour ce projet. Chaque capteur PIR doit être connecté à une entrée numérique (2-6) sur l'Arduino, à une alimentation 5V et à la terre. Si vous utilisez le même capteur PIR que moi, vous pouvez (avec précaution) retirer le couvercle et les broches sont marquées en dessous. Vous connecterez chaque capteur PIR à la lumière LED correspondante dans le code téléchargé plus tard.

le servomoteur...

Le servomoteur est fixé au support où se trouve la caméra et fait pivoter la caméra pour l'aligner avec le capteur PIR actif. En utilisant le brochage de votre moteur, connectez une broche à l'alimentation, une autre broche à l'entrée numérique Arduino 7 et la dernière broche à la terre. Avant d'alimenter l'Arduino, assurez-vous de connecter un condensateur de 100 µF entre l'alimentation et la masse du moteur pour aider à protéger la carte des surtensions qui se produisent lorsque le moteur se déplace.

Une chose à noter à propos des servomoteurs est que tous n'ont pas une plage de mouvement complète de 180º. Après quelques tests, j'ai compris que le mien ne bougeait que d'environ 160º, alors modifiez le code en conséquence si votre moteur diffère. Vous saurez que le moteur essaie d'aller trop loin lorsqu'il fait un bruit de grincement à la dernière position du capteur PIR.

CONSTRUCTION :

J'ai utilisé une vieille étiqueteuse de CD Memorex pour le boîtier du servo et la surface sur laquelle une caméra peut s'asseoir. Je n'ai pas réussi à prendre une photo "avant", donc l'image ci-dessous est la seule que j'ai pu trouver en ligne. La pièce arrière était un disque en plastique plat et robuste qui s'est finalement détaché en un seul morceau (après un peu de persuasion de mon tournevis), donc cela a très bien fonctionné pour un endroit où asseoir mon appareil photo. Il est également livré avec 4 « pieds » en caoutchouc amovibles, ce qui aide à donner à l'appareil photo un peu plus d'adhérence lorsque le moteur bouge.

J'ai apporté ma pince à la partie noire au centre pour l'enlever… et par là, je veux dire, la briser en autant de parties que possible avant qu'elle ne disparaisse :)  Ensuite, j'ai percé quelques trous dans la base avec mon Dremel, puis Fixez le servomoteur avec quelques vis.

Enfin, j'ai utilisé une autre vis pour fixer le servomoteur à la pièce où la caméra sera assise. J'ai rencontré un problème où le poids de la caméra faisait basculer la base, j'ai donc résolu ce problème en fabriquant un cylindre en carton juste assez haut pour s'insérer librement entre le moteur et la caméra. Maintenant, il bouge toujours librement, mais a plus de soutien avec son poids uniformément réparti.

Voici à quoi ressemble tout une fois les capteurs PIR installés et tous les circuits terminés. Vous remarquerez que j'ai utilisé plusieurs maquettes pour terminer mon projet. La raison en est qu'il est extrêmement facile de les installer à l'intérieur de la base, ainsi que de choisir celui à retirer lors du dépannage et de l'extension ultérieure.

Pour terminer le projet, j'ai peint à la bombe toutes les parties visibles du carton noir afin qu'il ait l'air plus homogène avec le support noir ci-dessus.

Voici le produit fini après peinture...


Code

  • Le code principal
Le code principalArduino
Les capteurs PIR se calibreront pendant 15 secondes après la mise sous tension de l'Arduino. Il est recommandé de quitter la pièce pendant ce processus afin que les capteurs obtiennent une image fidèle de la pièce sans aucun mouvement.
/************************ ******************************** La base de caméra motorisée à suivi de mouvement ****** par Lindsay Fox *** *******************************************************/ // Servor motor#include Servo camServo; // nomme le servomoteur contrôlant la caméra baseint currentPIRposition =0; // définit l'angle actuel du servo// voyants d'état LEDint LEDpin[] ={9,10,11,12,13} ; // Numéros de broche LEDint currentLEDpin =9; // la broche LED actuelle ; commencer par le premier de la séquence ci-dessus// PIR sensorint PIRpin[] ={2,3,4,5,6} ; // Numéros de broche PIRint currentPIRpin =2; // la broche PIR actuelle ; commencer par le premier de la séquence ci-dessusint PIRprevState[] ={1,1,1,1,1} ; // l'état précédent du PIR (0 =LOW, 1 =HIGH)int PIRposition[] ={157,117.75,78.5,39.25,0} ; // attribuer des angles pour le servomoteur (0-157 répartis également entre 5 capteurs PIR)boolean PIRstatus ; // Définir l'état du capteur PIR comme vrai ou faux ////// SETUP /////////////////////////////// //////void setup() { Serial.begin(9600); camServo.attach(7) ; // attribuer une broche d'asservissement pour (int p =0; p <5; p++) { // définir tous les capteurs PIR comme INPUTS pinMode(PIRpin[p], INPUT); } // fin 'p' for for (int l =0; l <5; l++) { // définit toutes les LED comme OUTPUTS pinMode(LEDpin[l], OUTPUT); } // fin 'l' pour /////// CALIBRER LES CAPTEURS PIR /////// Serial.print("Calibrage des capteurs PIR "); for(int c =0; c <15; c++){ // calibrer les capteurs PIR pendant 15 secondes (changer de 10 à 60 secondes selon vos capteurs) Serial.print("."); retard(1000); // attendre 1 seconde } // terminer l'étalonnage pour Serial.println("PIR Sensors Ready"); camServo.write (78.5); // déplacer le servo en position centrale pour commencer } // terminer la configuration///// BOUCLE PRINCIPALE ///////////////////////// ///////void loop() { for (int PIR =0; PIR <5; PIR++) { // démarre cette boucle pour chaque capteur PIR currentPIRpin =PIRpin[PIR]; // définit la broche PIR actuelle sur le numéro actuel dans la boucle 'for' currentLEDpin=LEDpin[PIR]; // définit la broche LED actuelle sur le numéro actuel dans la boucle 'for' PIRstatus =digitalRead(currentPIRpin); if (PIRstatus ==HIGH) { // si un mouvement est détecté sur le capteur PIR actuel digitalWrite(currentLEDpin, HIGH); // allume la LED correspondante if(PIRprevState[PIR] ==0) { // si l'état précédent du capteur PIR est BAS if (currentPIRposition !=currentPIRpin &&PIRprevState[PIR] ==0) { // si le PIR haut est différent de position actuelle PIR puis déplacer vers la nouvelle position camServo.write(PIRposition[PIR]); Serial.print("Angle actuel :"); Serial.println(PIRposition[PIR]); retard (50); positionPIR actuelle =broche PIR actuelle ; // réinitialiser la position actuelle du PIR sur la broche [PIR] active PIRprevState[PIR] =1 ; // définit l'état PIR précédent sur HIGH } PIRprevState[PIR] =1; // définit l'état PIR précédent sur HIGH si la position actuelle est la même que la broche PIR actuelle } // termine PIRprevState if } // termine PIRstatus if else { // digitalWrite(currentLEDpin, LOW); //la led visualise l'état de la broche de sortie du capteur PIRprevState[PIR] =0; // définit l'état PIR précédent sur LOW } // end else } // end [PIR] for loop } // end main loop

Schémas


Processus de fabrication

  1. Appareil photo
  2. Base RaspberryPI minimale
  3. Capteur de mouvement utilisant Raspberry Pi
  4. Système d'alarme de détection de mouvement
  5. Bouton AWS IoT à contrôle de mouvement
  6. Framboise avec caméra dans le nichoir
  7. Lecteur de livres BrickPi
  8. LIVE CAMERA STREAMING RASPBERRY PI – MOTION SETUP
  9. Technologie de mouvement linéaire