Base de Cámara con Seguimiento de Movimiento Automatizado: Arduino y Control de Servo
Componentes y Suministros
| Arduino UNO | × | 1 |
| Condensador 100 µF | × | 1 |
| LED (genérico) | × | 5 |
| Sensor PIR de Movimiento (genérico, modelo HC-SR501) | × | 5 |
| Resistencia 220 Ω | × | 5 |
| Servomotor Tower Pro MG996R | × | 1 |
Sobre el Proyecto
Se me ocurrió esta idea para resolver un problema con mis cámaras de seguridad domésticas. Tengo una cámara en una pared entre dos habitaciones, pero solo se ve una a la vez salvo que entre al software para rotarla manualmente. Si alguien entra en la otra habitación, la cámara nunca graba la acción. Para solucionarlo, creé una base detectora/seguidora de movimiento donde montar la cámara para que se reposicione automáticamente hacia donde se detecte movimiento.
CÓMO FUNCIONA
El dispositivo usa 5 sensores PIR para detectar movimiento en un radio de 180°. Al detectar movimiento, un servomotor rota la base de la cámara hacia esa dirección. También hay 5 LEDs de "estado" dentro de la base que se encienden cuando su sensor PIR correspondiente detecta movimiento.
VERLO EN ACCIÓN
CABLEADO
El cableado es simple, pero al tener 5 de cada cosa (excepto el servo), la cantidad de cables suma bastante. Consulte el diagrama de circuito y esquemas al final, pero aquí lo básico:
Luces LED de estado
Usé una mini protoboard para separar los LEDs del resto del circuito y permitir fácil extracción. Cada LED responde a un PIR distinto y se enciende al detectar movimiento. Conecte cada LED a una entrada digital distinta (9–13) en el Arduino y a tierra mediante resistencia de 220 Ω.
Sensores PIR de movimiento
Usé modelo HC-SR501. Cada PIR necesita: entrada digital (2–6) en Arduino, 5 V y tierra. Si usa el mismo modelo, puede quitar la tapa con cuidado; los pines están marcados debajo. Conecte cada PIR al LED correspondiente en el código que subiremos luego.
Servomotor
El servo va fijado al soporte donde se sienta la cámara y la rota para alinearse con el PIR activo. Según el pinout de su motor, conecte un pin a alimentación, otro a entrada digital 7 del Arduino y el último a tierra. Antes de alimentar el Arduino, conecte un condensador de 100 µF entre alimentación y tierra del motor para proteger la placa de picos de corriente al moverse el motor.
Nota: no todos los servos tienen rango completo de 180°. El mío solo gira ~160°, así que ajuste el código si el suyo difiere. Sabrá que intenta girar demasiado si hace ruido de rozamiento en la última posición del PIR.
CONSTRUCCIÓN
Usé un viejo etiquetador de CDs Memorex para la carcasa del servo y la superficie donde se sienta la cámara. No tomé foto del "antes", pero la imagen de abajo es lo único que encontré en línea. La pieza trasera era un disco plástico plano y resistente que se desprendió en una pieza (tras persuasión con destornillador), ideal para apoyar la cámara. También traía 4 "pies" de goma removibles que dan agarre extra al mover el motor.

Quité la parte central negra con alicates (rompiéndola en trozos). Luego taladré un par de agujeros en la base con Dremel y atornillé el servo. Finalmente, otro tornillo une el servo a la pieza donde se sienta la cámara. Tuve un problema: el peso de la cámara inclinaba la base. Lo solucioné haciendo un cilindro de cartón lo justo para encajar entre el motor y la cámara, distribuyendo el peso y permitiendo movimiento libre.

Aspecto tras instalar los 5 sensores PIR y completar el circuito. Usé varias protoboards para facilitar encaje dentro de la base y poder quitar una u otra durante pruebas y ampliaciones.


Para terminar, pinté con spray negro todas las partes visibles del cartón para que integrara con el soporte negro superior.



Código
Código Principal (Arduino)
Los sensores PIR se calibran 15 segundos tras encender el Arduino. Se recomienda salir de la habitación durante la calibración para que los sensores capturen la imagen real de la sala sin movimiento.
/*************************************************
*** Base de Cámara Motorizada con Seguimiento de Movimiento ***
*** por Lindsay Fox ***
*************************************************/
// Servomotor
#include <Servo.h>
Servo camServo;
int currentPIRposition = 0;
int LEDpin[] = {9,10,11,12,13};
int currentLEDpin = 9;
int PIRpin[] = {2,3,4,5,6};
int currentPIRpin = 2;
int PIRprevState[] = {1,1,1,1,1};
int PIRposition[] = {157,117.75,78.5,39.25,0};
boolean PIRstatus;
void setup() {
Serial.begin(9600);
camServo.attach(7);
for (int p = 0; p < 5; p++) pinMode(PIRpin[p], INPUT);
for (int l = 0; l < 5; l++) pinMode(LEDpin[l], OUTPUT);
// CALIBRACIÓN PIR
Serial.print("Calibrando sensores PIR ");
for(int c = 0; c < 15; c++) {
Serial.print(".");
delay(1000);
}
Serial.println("Sensores PIR listos");
camServo.write(78.5);
}
void loop() {
for (int PIR = 0; PIR < 5; PIR++) {
currentPIRpin = PIRpin[PIR];
currentLEDpin = LEDpin[PIR];
PIRstatus = digitalRead(currentPIRpin);
if (PIRstatus == HIGH) {
digitalWrite(currentLEDpin, HIGH);
if(PIRprevState[PIR] == 0) {
if (currentPIRposition != currentPIRpin && PIRprevState[PIR] == 0) {
camServo.write(PIRposition[PIR]);
Serial.print("Angulo actual: ");
Serial.println(PIRposition[PIR]);
delay(50);
currentPIRposition = currentPIRpin;
PIRprevState[PIR] = 1;
}
PIRprevState[PIR] = 1;
}
} else {
digitalWrite(currentLEDpin, LOW);
PIRprevState[PIR] = 0;
}
}
}
Esquemas
(Consulte los diagramas de cableado descritos en la sección "CABLEADO" arriba.)
Proceso de manufactura
- La evolución y diseño de las cámaras modernas
- Carcasa minimalista para Raspberry Pi que protege contra daños por estática
- Controle un LED con Sensor PIR de Movimiento en Raspberry Pi
- Sistema de Alarma por Detección de Movimiento con Java y Reactive Blocks – Despliegue en Raspberry Pi y Envío de SMS
- Botón IoT AWS Controlado por Movimiento con Raspberry Pi, Sensor PIR y MQTT
- Instalación de Cámara Raspberry Pi en una Caseta de Pájaros – Guía Paso a Paso
- BrickPi Bookreader: Automatice la lectura de Kindle con Raspberry Pi y LEGO Mindstorms
- Configura una Cámara IP en Vivo en Raspberry Pi con Motion: Guía Paso a Paso
- Válvulas de Bola Motorizadas: Función, Beneficios y Aplicaciones
- Tecnología de Movimiento Lineal: Soluciones de Precisión para Automatización
- Centro de Investigación Langley de la NASA presenta cámara plenóptica avanzada para imagen 3D en color