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:
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.
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.
Om af te ronden: alle zichtbare karton delen zwart gespoten voor naadloze look met de zwarte stand.
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
- De Evolutie en Ontwerp van Moderne Camera's
- Minimale Raspberry Pi-behuizing ter bescherming tegen statische schade
- Een LED Besturen met een PIR-bewegingssensor op Raspberry Pi
- Bewegingsdetectie Alarmsysteem met Java & Reactive Blocks – Implementeren op Raspberry Pi & SMS Sturen
- Bouw een Beweging-gestuurde AWS IoT-knop met Raspberry Pi, PIR-sensor en MQTT
- Een Raspberry Pi Camera in een Vogelhuisje Installeren – Stap-voor-stap Handleiding
- BrickPi Bookreader: Kindle Lezen Automatiseren met Raspberry Pi en LEGO Mindstorms
- Een Live IP-camera Instellen op Raspberry Pi met Motion – Stap-voor-Stap Gids
- Gemotoriseerde Bal Kleppen: Functie, Voordelen en Toepassingen
- Lineaire Bewegingstechnologie: Precisieoplossingen voor Automatisering
- NASA's Langley Research Center Onthult Geavanceerde Plenoptische Camera voor 3D Kleurimaging