Home
Accesso / Registrazione
 di 

Progetto videosorveglianza con Linux - Progetto Open Source

Progetto videosorveglianza con Linux - Progetto Open Source

Progetto videosorveglianza con Linux - Progetto Open Source

Ho creato un progetto PCAM (Pico Camera) con un microcontrollore ARM (LPC2142 - datasheet) ed una camera seriale (C328). Il progetto è molto semplice e di basso costo. Ora posso condividere un progetto per un prodotto di videosorveglianza più complesso. Poiché un blog è troppo piccolo per fornire ogni dettaglio per l’implementazione, tenterò di offrire le informazioni di orientamento per le persone che si volgeranno a DIY.

Il sistema (progetto videosorveglianza con Linux) sfrutta una scheda di valutazione ARM9 autoinstallante ed una webcam USB commerciale.
Per favore nota, non è un progetto commerciale, così il suo costo BOM non è la considerazione maggiore. Il kit ARM più comunemente disponibile è l’S2C2410/2440 (ARM920T), si può ottenere anche la scheda beagle col potente OMAP3530. Comunque, in questo progetto, l’elaborazione video sarà gestita dal processore ARM con la libreria V4L (Video per Linux), piuttosto che DSP nell'OMAP3530. Sfrutteremo le periferiche di scheda SDRAM, la flash memory NOR/NAND, USB host ,Ethernet, RS232, audio I/O (I2S) e JTAG.

I compiti principali per questo progetto sono: sviluppo driver, acquisizione video ed elaborazione backend (sia memoria locale in un dispositivo USB sia l’invio ad un web server interno o esterno).

Driver
I fornitori principali di cam USB sono Omnivision, VICMicro, Micron e Sunplus. Qualche volta è difficile ottenere direttamente le specifiche ed il codice sorgente del driver da questi venditori. Comunque la maggior parte delle cam USB possono essere rilevate nel desktop Linux. Ed è possibile ottenere i driver dalle comunità open source. Si può visionare il progetto Spca5xx e trovare i driver, poi inserire la scheda ARM. Gli step seguenti sono familiari per uno sviluppatore Linux.

  1. scarica la patch e modifica il tuo kernel;
  2. Abilita la camUSB SPCA5XX Sunplus Vimicro Sonix da modulo;
  3. abilita la usb-ohci e V4L nel sistema;
  4. Reimposta il kernel;
  5. Crea una entry del file system per la cam con: $mknod /dev/video0 c 81 0
  6. registra la cam con: $insmod spca5xx.o

Video per Linux
Per favore fai riferimento al manuale di V4L per informazioni dettagliate per lo sviluppo del programma di acquisizione video. Si può usare V4L API per accedere alla cam e catturare l'immagine. Ci sono molti programmi esemplificativi disponibili per desktop Linux a cui si può far riferimento. Per esempio, Cheese in Ubuntu è un buon punto di partenza. Per verificare l'API seguente in V4L si può usare:

  1. dev = l'open(ope_cam, O_ RDWR) apre il dispositivo di acquisizione video;
  2. ioctl (dev, VIDIOCGCAP & il vid_caps) fornisce le proprietà di questo dispositivo;
  3. ioctl (dev, VIDIOCGCHAN & il vid_chnl) trova i parametri channel per un canale;
  4. ioctl (dev, VIDIOCGFBUF & il vid_buf) trova le proprietà di frame buffer;
  5. ioctl (dev, VIDIOCGPICT & il vid_pi) trova il setup del quadro di acquisizione;
  6. ioctl (dev, VIDIOCSPICT & il vid_pic) parametri include profondità di colore, contrasto, e luminosità;
  7. ioctl (dev, VIDIOCSWIN & il vid_win) setup finestra dei parametri;
  8. fwrite (m_buf ,1 ,230400, p) salva i dati acquisiti;
  9. ioctl (dev, VIDIOCMCAPTURE & il vid_mmap) avvia l’acquisizione di un frame;


Miglioramento

La videosorveglianza è una fetta di mercato attivo con molte innovazioni. Tale mercato può essere diviso ulteriormente in molti piccoli segmenti. In generale, le cam stanno divenendo più intelligenti (riconoscimento video, collegamenti di rete), più chiare (da bassa risoluzione a HD) e più economiche. Come progetto di cam casalinga, esso può essere elevato a versioni commerciali.

C'è molto per migliorare questo progetto. Si può usare l'interfaccia di cam originaria dell’ S3C2440. Si può aggiungere il controllo PTZ (Pan/Tilt/Zoom) per le cam. Si può promuovere l'Ethernet a WiFi. Si possono aggiungere memoria di massa locale e flash card. Si può installare l’embedded server e DDNS per poter accedere remotamente alla cam. Ci si può connettere alla cam da telefonino tramite server WAP. Si può aggiungere l'audio se si vuole. Si può usare il framework gstreamer per convertire le immagini in AVI o altri formati di stream. Si può installare la cam su un robot mobile. Si può spiegare il riconoscimento dell’oggetto in movimento comparando le immagini sequenziali.
Se si vuole ottenere una cam di videosorveglianza ad alta risoluzione, si deve usare la schedaOMAP3530 o la scheda Blackfin. Si dice che siano in grado di occuparsi di gestire il video encoding.264. Ma io non sono abile con DSP.

Comunque, se Lei non ha la scheda ARM, provare prima QEMU. Alternativamente, si può tentare di sviluppare il codice nel proprio Linux PC, poi eseguirlo su NAS.

 

  1. scarica la patch e modifica il tuo kernel;
  2. Abilita la camUSB SPCA5XX Sunplus Vimicro Sonix da modulo;
  3. abilita la usb-ohci e V4L nel sistema;
  4. Reimposta il kernel;
  5. Crea una entry del file system per la cam con: $mknod /dev/video0 c 81 0
  6. registra la cam con: $insmod spca5xx.o

Video per Linux
Per favore fai riferimento al manuale di V4L per informazioni dettagliate per lo sviluppo del programma di acquisizione video. Si può usare V4L API per accedere alla cam e catturare l'immagine. Ci sono molti programmi esemplificativi disponibili per desktop Linux a cui si può far riferimento. Per esempio, Cheese in Ubuntu è un buon punto di partenza. Per verificare l'API seguente in V4L si può usare:

  1. dev = l'open(ope_cam, O_ RDWR) apre il dispositivo di acquisizione video;
  2. ioctl (dev, VIDIOCGCAP & il vid_caps) fornisce le proprietà di questo dispositivo;
  3. ioctl (dev, VIDIOCGCHAN & il vid_chnl) trova i parametri channel per un canale;
  4. ioctl (dev, VIDIOCGFBUF & il vid_buf) trova le proprietà di frame buffer;
  5. ioctl (dev, VIDIOCGPICT & il vid_pi) trova il setup del quadro di acquisizione;
  6. ioctl (dev, VIDIOCSPICT & il vid_pic) parametri include profondità di colore, contrasto, e luminosità;
  7. ioctl (dev, VIDIOCSWIN & il vid_win) setup finestra dei parametri;
  8. fwrite (m_buf ,1 ,230400, p) salva i dati acquisiti;
  9. ioctl (dev, VIDIOCMCAPTURE & il vid_mmap) avvia l’acquisizione di un frame;

AXIS IP Camera


Miglioramento

La videosorveglianza è una fetta di mercato attivo con molte innovazioni. Tale mercato può essere diviso ulteriormente in molti piccoli segmenti. In generale, le cam stanno divenendo più intelligenti (riconoscimento video, collegamenti di rete), più chiare (da bassa risoluzione a HD) e più economiche. Come progetto di cam casalinga, esso può essere elevato a versioni commerciali.

C'è molto per migliorare questo progetto. Si può usare l'interfaccia di cam originaria dell’ S3C2440. Si può aggiungere il controllo PTZ (Pan/Tilt/Zoom) per le cam. Si può promuovere l'Ethernet a WiFi. Si possono aggiungere memoria di massa locale e flash card. Si può installare l’embedded server e DDNS per poter accedere remotamente alla cam. Ci si può connettere alla cam da telefonino tramite server WAP. Si può aggiungere l'audio se si vuole. Si può usare il framework gstreamer per convertire le immagini in AVI o altri formati di stream. Si può installare la cam su un robot mobile. Si può spiegare il riconoscimento dell’oggetto in movimento comparando le immagini sequenziali.
Se si vuole ottenere una cam di videosorveglianza ad alta risoluzione, si deve usare la schedaOMAP3530 o la scheda Blackfin. Si dice che siano in grado di occuparsi di gestire il video encoding.264. Ma io non sono abile con DSP.

Comunque, se Lei non ha la scheda ARM, provare prima QEMU. Alternativamente, si può tentare di sviluppare il codice nel proprio Linux PC, poi eseguirlo su NAS.

Riferimenti
Video for Linux
http://www.thedirks.org/v4l2/

Spca5xx e Linux Embedded
http://mxhaard.free.fr/embedded.html

 

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di slovati

Videosorveglianza open-source

Un sistema di videosorveglianza completo come quello presentato in questo progetto e' fondamentale per aumentare il livello di sicurezza, sia che si tratti di controllare l'interno di un'abitazione, gli accessi ad un'area privata, o anche per il controllo di siti produttivi o industriali. Le possibilita' di estensione del progetto sono numerose, come del resto accennato nell'articolo: si potrebbe ad esempio introdurre una funzione di riconoscimento dei pattern (simile a cio' che ad esempio avviene in molti distributori di carburante self-service per il riconoscimento delle targhe). Inoltre, e questo e' un plus del progetto, vengono utilizzati degli strumenti open-source: V4L (Video for Linux), ad esempio, e' utilizzato per gestire non solo le webcam USB, ma permette di realizzare molte altre applicazioni quali: visione dei programmi televisivi, registrazione da TV, streaming, acquisizione e memorizzazione delle pagine teletext, ecc.

ritratto di giuskina

dicevo...

... si può fare di tutto con linux e con una webcam, peccato che mastico poco linux.
grazie ad un progetto del genere, xò meglio averlo l'audio ! PS grazie x i link

ritratto di linus

Se

se la cam è quella i LED IR per la sorveglianza notturna, che a mio avviso sarebbero necessari, ormai anche le scrause cinesi hanno.

ritratto di s1m0n3t

Ho giusto un pc embedded

Ho giusto un pc embedded linux che volevo utilizzare come dvr con una webcam...non riuscivo a trovare il software adatto e...eccolo qua!! Grazie!

ritratto di giuskina

perfetto

esiste anche la possibilità di avere la visione a infrarossi che qualcuno sappia? mi farebbe comodo per videosorvegliare l'esterno del giardino :))

ritratto di s1m0n3t

La visione ad infrarossi non

La visione ad infrarossi non dipende né dal software, né dall'hardware del pc. Basta una telecamera sensibile agli infrarossi (quasi tutte, se non hanno un apposito filtro ir) e un illuminatore ir. Ad esempio alcune telecamere di videosorveglianza hanno un illuminatore integrato, composto da una serie di led ir posizionati intorno alla telecamera. In caso di una telecamera sprovvista di led esistono illuminatori separati, simili a faretti led, ma che emettono luce infrarossa.

ritratto di Francesco12-92

grande

sono sistemi perfetti per una bellissima casa domotica controllata

ritratto di giuskina

grazie simonet

6 sempre una sorta di wikipedia da consultare a piacere ... cmq passo passo ne mastico sempre di più. Poi arriveranno anche delle riviste del settore

ritratto di NIck_BG

Il progetto è davvero

Il progetto è davvero stupefacente!
Il fatto che ci sia l'audio o meno ciò non importa! La cosa che mi piace di più di questo progetto è che è open source!
Complimenti al progettista!

ritratto di mingoweb

Ottimo progetto... E' sempre

Ottimo progetto... E' sempre preferibbile utilizzare un sistema LINUX per la sua stabilità...

ritratto di Angelo Gargarella

complimenti

Complimenti ottimo progetto, avanti così

ritratto di Anonimo_open

GNU/Linux è il meglio tutto

GNU/Linux è il meglio tutto il resto è spazzatura , complimenti per il progetto, w l'OpenSource!!!,
è bello condividere con altri ,per poter essere utile ,questo è il mondo Open .
Ottimo lavoro bravo!!!

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 2 utenti e 38 visitatori collegati.

Ultimi Commenti