Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Geautomatiseerde Motion-Tracking Camera Basis met Arduino en Servo Besturing

Onderdelen en benodigdheden

Onderdeel Aantal Opmerkingen
Arduino UNO 1 Hoofdcontroller
Condensator 100 µF 1 Bescherming tegen servo spanningsspiekers
LED (standaard) 5 Status LEDs per PIR sensor
PIR Bewegingssensor (HC-SR501) 5 Detectie in 180° radius
Weerstand 220 Ω 5 Voor LEDs
Servo (Tower Pro MG996R) 1 Draait camera basis

Over dit project

Ik bedacht dit om een probleem met mijn beveiligingscamera's op te lossen. Één camera zit op een muur tussen twee kamers, maar je ziet er maar één kamer tegelijk tenzij je handmatig roteert via software. Als iemand de andere kamer binnenloopt, neemt de camera niets op. Oplossing: een bewegingsdetecterende/volgende basis waarop de camera zit, die automatisch roteert naar gedetecteerde beweging.

Hoe het werkt

Het apparaat gebruikt 5 PIR bewegingssensoren voor detectie binnen een 180° straal. Bij detectie roteert een servomotor de camerabasis naar die richting. Er zitten ook 5 LED statuslampjes in de basis die oplichten wanneer de bijbehorende PIR sensor beweging detecteert.

Zie het in actie

Video demonstreert de werking

Wiring

De wiring is simpel, maar door 5x alles (behalve servo) lopen de draden op. Zie schema's onderaan voor details. Hier de basis:

LED statuslampjes

Ik gebruikte een mini breadboard om LEDs gescheiden te houden van de rest voor gemakkelijke verwijdering. Elke LED hoort bij een andere PIR sensor en brandt bij detectie. Verbind elke LED met een aparte digitale pin (9-13) op de Arduino, en ground ze via een 220Ω weerstand.

PIR bewegingssensoren

Ik gebruikte HC-SR501 PIR sensoren. Elke sensor heeft: digitale pin (2-6) op Arduino, 5V voeding, ground. Haak het hoesje af – pinnen zijn gemarkeerd onderaan. Verbind elke PIR sensor met de bijbehorende LED in de code.

Servomotor

De servo zit op de stand waar de camera op rust, en roteert de camera naar de actieve PIR sensor. Gebruik de pinout van je motor: één pin naar voeding, één naar Arduino digitale pin 7, één naar ground. Belangrijk: Voordat je de Arduino voedt, plaats een 100µF condensator tussen voeding en ground van de motor om de board te beschermen tegen spanningsspiekers bij motorbeweging.

Let op: Niet alle servos hebben een volle 180° bereik. Mijn servo ging maar ~160°. Pas de code aan als jouw motor anders is. Je hoort een kraakgeluid bij de laatste PIR positie als de servo te ver probeert te gaan.

Constructie

Ik gebruikte een oude Memorex CD-labeler voor de servo behuizing en het camera plateau. Geen "voor" foto, maar hier is een referentieafbeelding:

Geautomatiseerde Motion-Tracking Camera Basis met Arduino en Servo Besturing

De achterkant was een vlakke, stevige plastic schijf die in één stuk afging (na wat overtuiging met schroevendraaier) – perfect voor de camera. Er zaten 4 rubber "voetjes" aan die grip geven bij motorbeweging.

Ik hakte het zwarte middenstuk eruit (lees: brak het in stukjes). Daarna boorde ik gaten in de basis met een Dremel en bevestigde de servo met schroeven. Een extra schroef bevestigt de servo aan het cameraplateau.

Probleem: camera gewicht liet de basis kantelen. Oplossing: kartonnen cylinder tussen motor en camera – past los, geeft gewichtsverdeling, beweegt nog vrij.

Geautomatiseerde Motion-Tracking Camera Basis met Arduino en Servo Besturing

Hier is alles na installatie PIR sensoren en complete wiring. Ik gebruikte meerdere breadboards – makkelijk om in de basis te passen en om te verwijderen bij troubleshooting/uitbreiding.

Geautomatiseerde Motion-Tracking Camera Basis met Arduino en Servo Besturing
Geautomatiseerde Motion-Tracking Camera Basis met Arduino en Servo Besturing

Om af te ronden: alle zichtbare karton delen zwart gespoten voor naadloze look met de zwarte stand.

Geautomatiseerde Motion-Tracking Camera Basis met Arduino en Servo Besturing
Geautomatiseerde Motion-Tracking Camera Basis met Arduino en Servo Besturing
Geautomatiseerde Motion-Tracking Camera Basis met Arduino en Servo Besturing

Code

De PIR sensoren kalibreren 15 seconden na opstarten. Verlaten de ruimte tijdens kalibratie voor "schone" ruimbasis zonder beweging.

/*************************************************
*** The Motion Following Motorized Camera Base ***
*** by Lindsay Fox ***
*************************************************/
#include <Servo.h>

Servo camServo;           // Servo motor voor camera basis
int currentPIRposition = 0; // Huidige servo hoek

// LED status lampjes
int LEDpin[] = {9,10,11,12,13};
int currentLEDpin = 9;

// PIR sensoren
int PIRpin[] = {2,3,4,5,6};
int currentPIRpin = 2;
int PIRprevState[] = {1,1,1,1,1}; // Vorige staat (0=LOW, 1=HIGH)
int PIRposition[] = {157, 117.75, 78.5, 39.25, 0}; // Servo hoeken voor 5 PIR's (0-157° gelijkmatig)
boolean PIRstatus;

void setup() {
  Serial.begin(9600);
  camServo.attach(7); // Servo pin
  
  for (int p = 0; p < 5; p++) {
    pinMode(PIRpin[p], INPUT); // Alle PIR's als INPUT
  }
  for (int l = 0; l < 5; l++) {
    pinMode(LEDpin[l], OUTPUT); // Alle LEDs als OUTPUT
  }
  
  // KALIBREREN PIR SENSOREN
  Serial.print("Calibrating PIR Sensors ");
  for(int c = 0; c < 15; c++) {
    Serial.print(".");
    delay(1000); // 15 seconden kalibratie (10-60 sec afhankelijk van sensoren)
  }
  Serial.println("PIR Sensors Ready");
  camServo.write(78.5); // Start in middenpositie
}

void loop() {
  for (int PIR = 0; PIR < 5; PIR++) {
    currentPIRpin = PIRpin[PIR];
    currentLEDpin = LEDpin[PIR];
    PIRstatus = digitalRead(currentPIRpin);
    
    if (PIRstatus == HIGH) { // Beweging gedetecteerd
      digitalWrite(currentLEDpin, HIGH); // Bijbehorende LED aan
      
      if (PIRprevState[PIR] == 0) { // Vorige staat was LOW
        if (currentPIRposition != currentPIRpin && PIRprevState[PIR] == 0) {
          // Nieuwe actieve PIR, beweeg servo
          camServo.write(PIRposition[PIR]);
          Serial.print("Current angle: ");
          Serial.println(PIRposition[PIR]);
          delay(50);
          currentPIRposition = currentPIRpin;
          PIRprevState[PIR] = 1;
        }
        PIRprevState[PIR] = 1;
      }
    } else {
      // digitalWrite(currentLEDpin, LOW); // Optioneel: LED uit bij geen beweging
      PIRprevState[PIR] = 0;
    }
  }
}

Schema's

Zie bijgevoegde schema's voor complete wiring diagram.

Productieproces

  1. De Evolutie en Ontwerp van Moderne Camera's
  2. Minimale Raspberry Pi-behuizing ter bescherming tegen statische schade
  3. Een LED Besturen met een PIR-bewegingssensor op Raspberry Pi
  4. Bewegingsdetectie Alarmsysteem met Java & Reactive Blocks – Implementeren op Raspberry Pi & SMS Sturen
  5. Bouw een Beweging-gestuurde AWS IoT-knop met Raspberry Pi, PIR-sensor en MQTT
  6. Een Raspberry Pi Camera in een Vogelhuisje Installeren – Stap-voor-stap Handleiding
  7. BrickPi Bookreader: Kindle Lezen Automatiseren met Raspberry Pi en LEGO Mindstorms
  8. Een Live IP-camera Instellen op Raspberry Pi met Motion – Stap-voor-Stap Gids
  9. Gemotoriseerde Bal Kleppen: Functie, Voordelen en Toepassingen
  10. Lineaire Bewegingstechnologie: Precisieoplossingen voor Automatisering
  11. NASA's Langley Research Center Onthult Geavanceerde Plenoptische Camera voor 3D Kleurimaging