Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Automatisierte Motion-Tracking Kamerabasis mit Arduino & Servo-Steuerung

Komponenten und Zubehör

Automatisierte Motion-Tracking Kamerabasis mit Arduino & Servo-Steuerung
Arduino UNO
× 1
Automatisierte Motion-Tracking Kamerabasis mit Arduino & Servo-Steuerung
Kondensator 100 µF
× 1
Automatisierte Motion-Tracking Kamerabasis mit Arduino & Servo-Steuerung
LED (allgemein)
× 5
Automatisierte Motion-Tracking Kamerabasis mit Arduino & Servo-Steuerung
PIR-Bewegungssensor (allgemein)
× 5
Automatisierte Motion-Tracking Kamerabasis mit Arduino & Servo-Steuerung
Widerstand 220 Ohm
× 5
Servos (Tower Pro MG996R)
× 1

Über dieses Projekt

Ich kam auf diese Idee, um ein Problem mit meinen Überwachungskameras zu lösen. Ich habe eine bestimmte Kamera, die an einer Wand zwischen zwei Räumen positioniert ist, man kann aber immer nur einen Raum gleichzeitig sehen, es sei denn, man loggt sich in die Kamerasoftware ein, um sie manuell zu drehen. Wenn jemand in den gegenüberliegenden Raum geht, würde die Kamera die Aktion nie aufzeichnen. Um dieses Problem zu lösen, beschloss ich, eine bewegungserkennende/verfolgende Basis zu bauen, auf der ich die Kamera befestigen kann, damit sie sich automatisch dorthin ausrichtet, wo Bewegung erkannt wird.

WIE ES FUNKTIONIERT:

Dieses Gerät nutzt 5 PIR-Bewegungssensoren, um jede Bewegung innerhalb eines 180°-Radius zu erkennen. Sobald Bewegung erkannt wird, dreht ein Servomotor die Kamerabasis in diese Richtung. Außerdem gibt es 5 LED-„Status“-Lichter im Inneren der Basis, die aufleuchten, sobald einer der PIR-Sensoren Bewegung detektiert.

IN AKTION SEHEN!

VERDRAHTUNG:

Die Verdrahtung für dieses Projekt ist einfach und geradlinig, jedoch addiert sich die Anzahl der Kabel aufgrund der 5-fachen Komponenten (außer dem Servomotor) beträchtlich. Schauen Sie sich das Schaltbild und die Schematics am Ende der Seite an, aber hier sind die Grundlagen.

Die LED-Statuslichter...

Ich nutzte ein Mini-Steckbrett, um die LED-Lichter vom Rest der Schaltung zu trennen, um ein einfacheres Entfernen bei Bedarf zu ermöglichen. Jede LED reagiert auf einen anderen PIR-Sensor und leuchtet auf, sobald dieser Bewegung detektiert. Einfach jede LED an einen separaten digitalen Eingang (9–13) am Arduino anschließen und über einen 220-Ohm-Widerstand gegen Masse legen.

Die PIR-Bewegungssensoren...

Ich verwendete HC-SR501 Modell PIR-Sensoren. Jeder PIR-Sensor muss an einen digitalen Eingang (2–6) am Arduino, 5 V Stromversorgung und Masse angeschlossen werden. Wenn Sie denselben PIR-Sensor wie ich nutzen, können Sie (vorsichtig) die Abdeckung abnehmen – die Pins sind darunter markiert. Sie verbinden jeden PIR-Sensor im Code später mit der entsprechenden LED.

Der Servomotor...

Der Servomotor ist an dem Ständer befestigt, auf dem die Kamera sitzt, und dreht die Kamera so aus, dass sie mit dem aktiven PIR-Sensor ausgerichtet ist. Anhand des Pinouts Ihres Motors einen Pin an Strom, einen an Arduino Digitalpin 7 und den letzten an Masse anschließen. Bevor Sie den Arduino mit Strom versorgen, unbedingt einen 100 µF Kondensator zwischen Strom und Masse des Motors schalten, um das Board vor Spannungsspitzen zu schützen, die beim Bewegen des Motors auftreten.

Eins zu Servomotoren: Nicht alle haben einen vollen 180°-Bewegungsbereich. Nach Tests stellte ich fest, dass meiner nur ca. 160° bewegt – passen Sie den Code entsprechend an, falls Ihr Motor abweicht. Sie merken, dass der Motor zu weit drehen will, wenn er an der letzten PIR-Sensor-Position ein Knirschen macht.

KONSTRUKTION:

Ich verwendete einen alten Memorex CD-Labeler für das Servo-Gehäuse und die Fläche, auf der die Kamera sitzt. Ich vergaß ein „Vorher“-Foto zu machen, das Bild unten ist das einzige, das ich online finden konnte. Das Rückteil war eine flache, stabile Kunststoffscheibe, die schließlich in einem Stück abging (nach etwas Überredung mit meinem Schraubendreher) – perfekt als Kameraplatz. Es hatte auch 4 abnehmbare Gummifüße, die der Kamera mehr Halt geben, wenn der Motor bewegt.

Automatisierte Motion-Tracking Kamerabasis mit Arduino & Servo-Steuerung

Ich nahm die Zange zum schwarzen Mittelteil, um es zu entfernen… und damit meine ich, es in so viele Teile wie möglich zu zerbrechen, bis es weg ist :) Danach bohrte ich ein paar Löcher in die Basis mit meinem Dremel und befestigte den Servomotor mit ein paar Schrauben.

Zuletzt befestigte ich mit einer weiteren Schraube den Servomotor an dem Teil, auf dem die Kamera sitzt. Ich hatte ein Problem: Das Gewicht der Kamera ließ die Basis kippen. Ich löste es, indem ich einen Pappzylinder bastelte, der gerade hoch genug ist, um locker zwischen Motor und Kamera zu passen. Jetzt bewegt es sich noch frei, aber das Gewicht ist gleichmäßig verteilt.

Automatisierte Motion-Tracking Kamerabasis mit Arduino & Servo-Steuerung

So sieht alles aus, nachdem die PIR-Sensoren installiert und die gesamte Schaltung fertiggestellt ist. Sie sehen, ich nutzte mehrere Steckbretter. Der Grund: Es war extrem einfach, sie in die Basis zu bekommen, und man konnte beim Troubleshooting und späteren Erweitern einfach herausnehmen, welches man brauchte.

Automatisierte Motion-Tracking Kamerabasis mit Arduino & Servo-Steuerung
Automatisierte Motion-Tracking Kamerabasis mit Arduino & Servo-Steuerung

Zum Abschluss sprühte ich alle sichtbaren Teile der Pappe schwarz, damit es nahtloser mit dem schwarzen Ständer oben aussieht.

Hier das fertige Produkt nach dem Lackieren...

Automatisierte Motion-Tracking Kamerabasis mit Arduino & Servo-Steuerung
Automatisierte Motion-Tracking Kamerabasis mit Arduino & Servo-Steuerung
Automatisierte Motion-Tracking Kamerabasis mit Arduino & Servo-Steuerung


Code

Der HauptcodeArduino

Die PIR-Sensoren kalibrieren 15 Sekunden nach dem Einschalten des Arduino. Es wird empfohlen, während dieses Vorgangs den Raum zu verlassen, damit die Sensoren ein echtes Bild des Raums ohne Bewegung erhalten.

/*************************************************
 *** The Motion Following Motorized Camera Base ***
 *** by Lindsay Fox ***
 *************************************************/
 // Servomotor
 #include <Servo.h>
 Servo camServo; // Name des Servomotors, der die Kamerabasis steuert
 int currentPIRposition = 0; // aktueller Winkel des Servos
 // LED-Statuslichter
 int LEDpin[] = {9,10,11,12,13}; // LED-Pinnummern
 int currentLEDpin = 9; // aktueller LED-Pin; beginne mit dem ersten in der obigen Sequenz
 // PIR-Sensoren
 int PIRpin[] = {2,3,4,5,6}; // PIR-Pinnummern
 int currentPIRpin = 2; // aktueller PIR-Pin; beginne mit dem ersten in der obigen Sequenz
 int PIRprevState[] = {1,1,1,1,1}; // vorheriger Zustand des PIR (0 = LOW, 1 = HIGH)
 int PIRposition[] = {157,117.75,78.5,39.25,0}; // Winkel für Servomotor zuweisen (0-157 gleichmäßig auf 5 PIR-Sensoren verteilt)
 boolean PIRstatus; // Status des PIR-Sensors als true oder false setzen
 ///// SETUP //////////////////////////////////////
 void setup() {
   Serial.begin(9600);
   camServo.attach(7); // Servo-Pin zuweisen
   for (int p = 0; p < 5; p++) { // alle PIR-Sensoren als INPUTS setzen
     pinMode(PIRpin[p], INPUT);
   } // Ende 'p' for
   for (int l = 0; l < 5; l++) { // alle LEDs als OUTPUTS setzen
     pinMode(LEDpin[l], OUTPUT);
   } // Ende 'l' for
   /////// PIR-SENSOREN KALIBRIEREN ///////
   Serial.print("Calibrating PIR Sensors ");
   for(int c = 0; c < 15; c++){ // PIR-Sensoren 15 Sekunden kalibrieren (10-60 Sek. je nach Sensor ändern)
     Serial.print(".");
     delay(1000); // 1 Sekunde warten
   } // Ende Kalibrierungs-for
   Serial.println("PIR Sensors Ready");
   camServo.write(78.5); // Servo in Mittelposition bewegen zum Start
 } // Ende setup
 ///// HAUPTSCHLEIFE //////////////////////////////////
 void loop() {
   for (int PIR = 0; PIR < 5; PIR++) { // diese Schleife für jeden PIR-Sensor starten
     currentPIRpin = PIRpin[PIR]; // aktuellen PIR-Pin auf aktuelle Nummer in 'for'-Schleife setzen
     currentLEDpin = LEDpin[PIR]; // aktuellen LED-Pin auf aktuelle Nummer in 'for'-Schleife setzen
     PIRstatus = digitalRead(currentPIRpin);
     if (PIRstatus == HIGH) { // wenn Bewegung am aktuellen PIR-Sensor erkannt
       digitalWrite(currentLEDpin, HIGH); // entsprechende LED einschalten
       if(PIRprevState[PIR] == 0) { // wenn vorheriger Zustand des PIR-Sensors LOW
         if (currentPIRposition != currentPIRpin && PIRprevState[PIR] == 0) { // wenn hoher PIR anders als aktuelle Position PIR, dann zu neuer Position bewegen
           camServo.write(PIRposition[PIR]);
           Serial.print("Current angle : ");
           Serial.println(PIRposition[PIR]);
           delay(50);
           currentPIRposition = currentPIRpin; // aktuelle PIR-Position auf aktiven [PIR] Pin zurücksetzen
           PIRprevState[PIR] = 1; // vorherigen PIR-Zustand auf HIGH setzen
         }
         PIRprevState[PIR] = 1; // vorherigen PIR-Zustand auf HIGH setzen, wenn aktuelle Position gleich aktuellem PIR-Pin
       } // Ende PIRprevState if
     } // Ende PIRstatus if
     else { // digitalWrite(currentLEDpin, LOW); // LED visualisiert Sensor-Ausgangspin-Zustand
       PIRprevState[PIR] = 0; // vorherigen PIR-Zustand auf LOW setzen
     } // Ende else
   } // Ende [PIR] for-Schleife
 } // Ende Hauptschleife

Herstellungsprozess

  1. Entwicklung und Design moderner Kameras
  2. Minimales Raspberry Pi Gehäuse zum Schutz vor statischer Entladung
  3. LED mit PIR-Bewegungsmelder am Raspberry Pi steuern
  4. Bewegungsmelder-Alarmsystem mit Java & Reactive Blocks – Auf Raspberry Pi deployen & SMS senden
  5. Bewegungsgesteuerter AWS IoT Button mit Raspberry Pi, PIR-Sensor und MQTT
  6. Raspberry Pi Kamera im Vogelhaus installieren – Schritt-für-Schritt-Anleitung
  7. BrickPi Bookreader: Kindle-Lesen automatisieren mit Raspberry Pi und LEGO Mindstorms
  8. Live-IP-Kamera auf Raspberry Pi mit Motion einrichten – Schritt-für-Schritt-Anleitung
  9. Lineare Motionstechnologie: Präzisionslösungen für Automatisierung
  10. NASA Langley Research Center stellt fortschrittliche Plenoptik-Kamera für 3D-Farbbildgebung vor