Uso la cámara de vídeo como sensor de movimiento (no tomo ni grabo la foto) y entonces cierra el relé durante 30 segundos con lo que empieza a sonar el circuito de la tarjeta de felicitación. Pasado ese tiempo lo inactivo durante 5 minutos para que no esté sonando continuamente.
Vídeo primera parte:
Vídeo segunda parte:
Código fuente FelicitadorNavidadV1:
// Mediante un relé conecto Arduino a una tarjeta de felicitación navideña de las que empiezan a sonar
// con musiquita navideña y encienden un led.
// Uso la cámara de vídeo como sensor de movimiento (no tomo ni grabo la foto) y entonces cierra el relé durante 30 segundos con
// lo que empieza a sonar el circuito de la tarjeta de felicitación. Pasado ese tiempo lo inactivo durante
// 5 minutos para que no esté sonando continuamente.
#include <VC0706.h>
#include <SD.h>
#if ARDUINO >= 100
#include <SoftwareSerial.h>
#else
#include <NewSoftSerial.h>
#endif
// This is the SD card chip select line, 10 is common
#define chipSelect 10
// This is the camera pin connection. Connect the camera TX
// to pin 2, camera RX to pin 3
#if ARDUINO >= 100
SoftwareSerial cameraconnection = SoftwareSerial(2, 3);
#else
NewSoftSerial cameraconnection = NewSoftSerial(2, 3);
#endif
// pass the serial connection to the camera object
VC0706 cam = VC0706(&cameraconnection);
void setup() {
Serial.begin(9600);
// Try to locate the camera
if (cam.begin()) {
Serial.println("Camera Found:");
} else {
Serial.println("No camera found?");
return;
}
// Print out the camera version information
char *reply = cam.getVersion();
if (reply == 0) {
Serial.print("Failed to get version");
} else {
Serial.println("-----------------");
Serial.print(reply);
Serial.println("-----------------");
}
// Set the picture size - you can choose one of 640x480, 320x240 or 160x120
// Remember that bigger pictures take longer to transmit!
//cam.setImageSize(VC0706_640x480); // biggest
cam.setImageSize(VC0706_320x240); // medium
//cam.setImageSize(VC0706_160x120); // small
// You can read the size back from the camera (optional, but maybe useful?)
uint8_t imgsize = cam.getImageSize();
Serial.print("Image size: ");
if (imgsize == VC0706_640x480) Serial.println("640x480");
if (imgsize == VC0706_320x240) Serial.println("320x240");
if (imgsize == VC0706_160x120) Serial.println("160x120");
// Motion detection system can alert you when the camera 'sees' motion!
cam.setMotionDetect(true); // turn it on
//cam.setMotionDetect(false); // turn it off (default)
// You can also verify whether motion detection is active!
Serial.print("Motion detection is ");
if (cam.getMotionDetect())
Serial.println("ON");
else
Serial.println("OFF");
pinMode(6, OUTPUT); // Controla el relay
}
void loop() {
if (cam.motionDetected()) {
Serial.println("Motion!");
cam.setMotionDetect(false);
Serial.println("Activamos el relay!");
digitalWrite(6, HIGH); // Activamos el relay
delay(30000); // Mantenemos activo 30 seg
Serial.println("Desctivamos el relay!");
digitalWrite(6, LOW); // Desactivamos el relay
Serial.println("...Done!");
delay(300000); // Pausamos 5 min para que no vuelva a activarse demasiado pronto
cam.resumeVideo();
cam.setMotionDetect(true);
}
}
No hay comentarios:
Publicar un comentario