stiamo realizzando un progetto legato alla videosorveglianza utilizzando Arduino Uno. La nostra idea è collegare un sensore di movimento ad Arduino e far partire la registrazione di un video tramite la webcam del pc in caso di rilevazione di movimento.
Siamo riusciti a collegare Arduino con il sensore di movimento (micro pir) riscontrando però una certa latenza nel rilevamento del movimento: esso viene rilevato anche nel momento in cui non è più presente. Muovendo la mano davanti al sensore, infatti, viene acceso un led e rilevato il movimento: nel momento in cui tolgo la mano il movimento viene ancora rilevato per un certo periodo di tempo (2 o 3 secondi al massimo); di conseguenza il led rimane acceso.
Di seguito il codice che utlizziamo:
Una volta risolta questa prima questione dobbiamo collegare Arduino alla webcam del pc: una volta rilevato il movimento deve essere avviata la webcam e deve partire la registrazione di un video di n secondi che poi verrà memorizzato nel computer stesso.
Qualcuno ha dei suggerimenti sulla procedura da seguire per effettuare questa operazione?
il sensore pir che ho io ha una regolazione manuale del tempo di durata uscita, cioè appena rileva un movimento tiene l'uscita HIGH per tot secondi. Non conosco bene i tipi di pir ma il "problema" potrebbe essere quello
naturalmente sprecare parole nn costa nulla.
Tipo magari che PIR hai?
che sistema operativo usi?
che conoscenze hai sui linguaggi?
etc,etc,etc....
generalmente nei forum non si paga a lettera digitata.
la soluzione è che se hai la regolazione del tempo di HIGH la metti al minimo, diversamente non credo si possa bypassare la logica del pir a livello software
vbextreme:
naturalmente sprecare parole nn costa nulla.
Tipo magari che PIR hai?
che sistema operativo usi?
che conoscenze hai sui linguaggi?
etc,etc,etc....
generalmente nei forum non si paga a lettera digitata.
doppiozero: Holding time: 2s il tempo è fisso allora.
Si letto grazie. Ora rimane il problema di voler collegare arduino al pc e attraverso un segnale inviato al pc attivare una webcam collegata in usb che registra un video e dopo un tot di secondi inviare un altro segnale per fermare la registrazione, poi se possibile inviare il video via email o caricarlo su dropbox o inviarlo in un altro modo. So che esistono sistemi gia pronti e ipcam adatte all'uso ma mi serve per un progetto. Dove posso trovare informazioni o guide inerenti?
Stai chiedendo nel posto sbagliato.
Qui ti possiamo dire come fare ad inviare alla seriale - USB qualcosa quando il PIR si attiva.
Per il resto, è programmazione PC.
Purtroppo di tutti i linguaggi che conosci il java mi sta antipatico e gli altri per me sono misteriosi. Forse qualcuno ti saprà indirizzare...
Visto i linguaggi che conosci o ti buttu su java om se hai voglia/tempo di imparare qualcosa di nuovo, guardati processing che potrebbe fare al caso tuo (Es. Capture / Libraries / Processing.org )
paulus1969:
Stai chiedendo nel posto sbagliato.
Qui ti possiamo dire come fare ad inviare alla seriale - USB qualcosa quando il PIR si attiva.
Per il resto, è programmazione PC.
Purtroppo di tutti i linguaggi che conosci il java mi sta antipatico e gli altri per me sono misteriosi. Forse qualcuno ti saprà indirizzare...
Mi servirebbe proprio questo un come inviare al seriale usb un segnale per dar partire la registrazione webcam poi la gestione video la faccio da pc
doppiozero: Holding time: 2s il tempo è fisso allora.
per aggirare il problema del tempo fisso, via software si potrebbe fare...
int ledYellow = 13;
int segnal = 2;
boolean state = false;
#define led_max_time 1000 //1 secondo anziche i 2secondi non modificabili del pir
unsigned long start_led = 0; //variabile in cui memorizzerò i millis
void setup()
{
pinMode( ledYellow, OUTPUT );
digitalWrite( ledYellow, LOW );
Serial.begin(9600);
delay(1000);
}
void loop()
{
int pirSegnal = digitalRead( segnal );
Serial.print(pirSegnal);
if (pirSegnal == HIGH) {
if (state == false) { //al primo loop in cui rilevo il segnale del pir come HIGH salvo i millis attuali e cambio il valore di "state" per non salvare di nuovo i millis al successivo loop!
start_led = millis();
state = true;
}
//solo se il tempo trascorso dalla prima accensione del led è minore o uguale a quello stabilito via software il led sarà acceso
if (millis() - start_led <= led_max_time) digitalWrite(ledYellow, HIGH);
else digitalWrite(ledYellow, HIGH);
} else {
//quando torna basso il segnale del pir, resetto la variabile "state" per permettergli di salvare di nuovo i millis alla prossima rilevazione
digitalWrite(ledYellow, LOW);
state = false;
}
//delay(1000);
}
si però hai un tempo di accensione fisso e sei comunque legato al tempo del pir. Se accendi il led per mezzo secondo devi comunque aspettare un altro secondo e mezzo prima di poterlo riaccendere.