Collegamento di una fotocamera analogica a un Raspberry Pi. Server di videosorveglianza utilizzando Raspberry Pi. Creazione di video time-lapse

Diamo un'occhiata ai metodi per collegare correttamente la fotocamera al Raspberry Pi e lavorare con essa tramite la finestra del terminale e utilizzando il linguaggio di programmazione Python.
Materiali correlati:
Quando colleghi la fotocamera al Raspberry, ricorda quanto segue:
  • La fotocamera teme l'elettricità statica; si consiglia di toccarla durante il funzionamento attraverso materiale antistatico
  • la fotocamera consuma 250 mA - quando si utilizza un alimentatore Malina mediocre, il collegamento della fotocamera potrebbe causare una mancanza di alimentazione quando la fotocamera funziona attivamente
  • non c'è il microfono nella fotocamera
  • la parte superiore della fotocamera si trova sul lato opposto all'uscita del cavo, ma c'è un comando speciale per riflettere l'immagine verticalmente - ne parleremo più avanti.

Connessione

Si consiglia di collegare la fotocamera ad un Raspberry spento. Puoi disattivare rapidamente Raspberry con il comando
sudo shutdown adesso
Il connettore CSI daisy chain si trova accanto all'HDMI: il vantaggio di collegare la fotocamera tramite questo connettore, a differenza dell'USB, è che alleggerisce il processore durante il trasferimento dei dati tramite l'interfaccia CSI
Per facilitare il fissaggio della fotocamera c'è soluzioni già pronte, ad esempio - Supporto in acrilico.
L'interfaccia della fotocamera deve essere attivata nelle impostazioni del Raspberry:
Dopo aver attivato la telecamera (se richiesto), è necessario riavviare Malina: sudo reboot now
Per funzionare con la fotocamera, Raspbian ha già preinstallati le utilità e i driver necessari. Aggiorniamo i pacchetti per utilizzare le ultime versioni: sudo apt-get update -y sudo apt-get dist-upgrade -y Se tutto è stato eseguito correttamente, proviamo a ottenere un fotogramma di prova dalla fotocamera: crea una cartella per le foto, vai ad esso ed eseguire il comando di acquisizione dell'immagine: mkdir ~/pi_cam/ cd ~/pi_cam/ raspistill -v -o test.jpg
In caso di guasto è necessario verificare i passaggi precedenti oppure far suonare i contatti del connettore sulla telecamera e su Malina.
Nel sistema operativo Raspbian sono preinstallati i seguenti pacchetti per lavorare con la fotocamera:
  • raspivid, raspvidyuv - acquisizione video
  • raspistill, raspiyuv: scattare foto
Una guida completa alle utilità elencate è disponibile all'indirizzo lingua ingleseè spento. Sito web del Raspberry Pi
Tutte le utilità vengono avviate dal terminale e sono abbastanza facili da usare.
I pacchetti con nomi che terminano con "yuv" non utilizzano il componente di codifica: memorizzano le informazioni "grezze" non elaborate ricevute dal sensore della fotocamera. Diamo un'occhiata a come lavorare con ciascun pacchetto, ma prima conosceremo l'elenco dei parametri della fotocamera comuni a tutti i pacchetti, quindi esamineremo argomenti specifici e esempi specifici le loro applicazioni.

Parametri comuni

Diamo un'occhiata ai valori dei parametri. Vale la pena notare che:
  • Se un argomento non viene specificato quando si chiama l'utilità, viene utilizzato il suo valore predefinito.
  • SE LA COLONNA "INTERVALLO VALORI CONSENTITI" È VUOTA, non è necessario passare alcun valore aggiuntivo: è sufficiente passare solo l'argomento stesso.
  • L'anteprima viene mostrata solo su un monitor fisico collegato al Raspberry. Se accedi a Raspberry tramite desktop remoto (VNC), l'anteprima non verrà mostrata in nessuna impostazione poiché l'immagine di anteprima viene inviata direttamente al monitor sopra al resto delle informazioni
  • Simile alla visione di video tramite desktop
Discussione
Descrizione
Intervallo valido
Valore di default
-P
Opzioni della finestra di anteprima
larghezza, altezza, coordinata x, coordinata y
-F
Anteprima a schermo intero
NO
-N
Nessuna anteprima
-operazione
Anteprima della trasparenza della finestra
0...255
255
-sh
Nitidezza
-100...100
0
-co
Contrasto
-100...100
0
-br
Illuminazione
0...100
50
-sa
Saturazione
-100...100
0
-ISO
Sensibilità del sensore della fotocamera
-100...100
0
-contro
Stabilizzazione video
(solo video)
NO
-ev
Compensazione dell'esposizione
-10...10
0
-ex
Esposizione
  • notte
  • anteprima notturna
  • controluce: controluce dietro il soggetto
  • faretto: illuminazione con faretto
  • sport: oggetto in movimento
  • neve: paesaggio innevato
  • spiaggia: paesaggio balneare
  • verylong: lunga esposizione
  • Fixedfps: limita gli FPS a un valore fisso
  • anti-vibrazione: anti-vibrazione
  • fuochi d'artificio: paesaggio con fuochi d'artificio
auto
-aww
bilanciamento del bianco
  • sole: 5000K...6500K - soleggiato
  • nuvola:6500K ... 12000K nuvoloso
  • ombra: all'ombra
  • tungsteno: 2500K ... 3500K tungsteno
  • fluorescente: 2500K...4500K
  • incandescente: metallo rovente
  • lampo: con lampo
  • orizzonte
auto
-ifx
Vari effetti
nessuno, negativo, solarizzazione, posterizzazione, lavagna bianca, lavagna, schizzo, denoise, rilievo, pittura a olio, tratteggio, penna gpen, pastello, acquerello, pellicola, sfocatura, saturazione, scambio colori, sbiadito, colorpoint, bilanciamento del colore, cartone animato
nessuno
-cfx
Bilanciamento del colore
0...255:0...255
128:128
-mm
Misurazione dell'esposizione
  • medio: medio
  • punto: punto
  • retroilluminato: legge l'immagine retroilluminata
  • matrice: misurazione a matrice
media
-marcire
Giro
0 ... 359
0
-HF
Riflessione orizzontale
NO
-vf
Riflessione verticale
NO
-roi
ROI del sensore
coordinate dall'angolo in alto a sinistra e la larghezza e l'altezza dell'area
0 … 1,0 … 1,0 … 1,0 … 1
0,0,1,1
-ss
Velocità dell'otturatore
in microsecondi
6000000
-RDC
Compressione della gamma dinamica
spento
-st
mostrare le statistiche
NO
Successivamente, considereremo le utilità separatamente.


raspistill: acquisizione di foto

Questa utility produce un'immagine compressa codificata e per eseguire questa azione vengono passati alcuni parametri come argomenti durante l'esecuzione di raspistill.

argomenti

Discussione
Descrizione
Intervallo valido
Valore di default
-w
Larghezza
0...massimo
Massimo
-H
Altezza
0...massimo
Massimo
-Q
Qualità
0...100
75
-o
Nome del file
il percorso del file
-
-v
Uscita al terminale
Informazioni sul processo di acquisizione
NO
-T
Ritardo prima dell'azione
in millisecondi
0
-tl
Lasso di tempo
esempio: -tl 2000 -o immagine%04d.jpg
2000 - intervallo
%04d - Modello numerico a 4 cifre
-
-e
Codifica in formato
jpg, bmp, gif e png
jpg
-X
Aggiunta di tag EXIF
fino a 32 tag
-
-R
Memorizzazione di un array Bayer nei metadati di un'immagine codificata
-

Esempi

Diamo un'occhiata ad esempi specifici di utilizzo di raspistill:
Cattura un'immagine standard dopo 2 secondi e salvala nel file image.jpg (nella cartella in cui ti trovi attualmente). La risoluzione sarà standard (massima) raspistill -t 2000 -o image.jpg La stessa cosa, ma con una risoluzione di 640x480 raspistill -o image.jpg -w 640 -h 480 Cattura un'immagine con una qualità ridotta del 5% e salvalo in un file image.jpg (nella cartella in cui ti trovi attualmente). Con questa qualità, la dimensione dell'immagine sarà notevolmente più piccola raspistill -o image.jpg -q 5 Ottenere un'immagine codificata in formato PNG e salvarla nel file image.png raspistill -o image.png –e png Ottenere un'immagine standard con due tag EXIF ​​incorporati: Artista - Boris, altitudine GPS - 123,5 m raspistill -o image.jpg -x IFD0.Artist=Boris -x GPS.GPSAltitude=1235/10 Creazione di una serie di immagini time-lapse che verranno catturate a intervalli di 10 secondi durante 10 minuti (600.000 ms) e essere chiamato image_num_001_today.jpg, image_num_002_today.jpg e così via. L'immagine finale verrà denominata latest.jpg raspistill -t 600000 -tl 10000 -o image_num_%03d_today.jpg -l latest.jpg Cattura immagini quando premi Invio, i file verranno salvati uno accanto all'altro e denominati my_pics01.jpg my_pics02. jpg ecc. raspistill -t 0 -k -o mie_pics%02d.jpg

raspiyuv

Gli argomenti di lancio sono esattamente gli stessi di raspistill (vedi sopra), di cui solo i seguenti NON DISPONIBILI:
-q - qualità
-e - specificando il formato dell'immagine di destinazione
-x - Aggiungi tag EXIF
-r - Memorizza un array Bayer nei metadati dell'immagine codificata
Tuttavia, esiste una PROPRIA argomentazione
-rgb - salvataggio dei dati grezzi “grezzi” nel formato RGB888 (8 bit/canale)

raspivid: acquisizione video

Parametri di lancio

Discussione
Descrizione
Intervallo valido
Valore di default
-w
Larghezza
0...massimo
1920
-H
Altezza
0...massimo
1080
-B
Bitrate video
numero di bit al secondo.
10Mbit/s è impostato -b 10000000
-o
Nome del file
il percorso del file
-
-v
Uscita al terminale
Informazioni sul processo di acquisizione
-T
Ritardo prima dell'azione
in millisecondi
0
-fps
Frequenza dei fotogrammi
Numero di fotogrammi al secondo 2...30
-K
Avvia/interrompi la registrazione premendo Invio
il processo viene interrotto premendo “X”
-sg
Salvataggio di segmenti video con una durata fissa in file separati
Imposta la durata di un segmento e la maschera del file
-sg 3000 -o video%04d.h264
-wr
Limitazione del numero massimo di file durante la segmentazione
Utilizzato con l'argomento -sg e implementa essenzialmente la riscrittura ciclica come nei DVR
La risoluzione predefinita è 1080p (1920x1080)
Diamo un'occhiata ad esempi specifici:
Registrazione di un video standard di 5 secondi (1920x1080, 30 fotogrammi/sec) e salvataggio in un file video.h264 raspivid -t 5000 -o video.h264 Registrazione di un video di 5 secondi con una risoluzione di 1080p e un bitrate specifico di 3,5 Mbit /s e salvataggio nel file video.h264 raspivid -t 5000 -o video.h264 -b 3500000 Registra 5 secondi di video a definizione standard con frame rate di 5 fps e salva nel file video.h264 raspivid -t 5000 -o video.h264 -f 5 Se un monitor è collegato al Raspberry tramite HDMI, il video registrato può essere visualizzato utilizzando il lettore omxplayer: sudo apt-get install omxplayer #se il lettore non è ancora installato omxplayer video.h264 La visualizzazione video non è disponibile tramite VNC

Codici di errore

  • 0: completamento riuscito
  • 64 - comando inviato non valido (errore di sintassi)
  • 70 - errore nell'utilità o durante la comunicazione con la fotocamera
  • 130 - l'esecuzione è stata interrotta dall'utente (combinazione di tasti Ctrl + C)

Libreria PiCamera

Questa è una libreria per il linguaggio di programmazione Python che ti consente di semplificare e automatizzare il lavoro con la fotocamera Raspberry
Descrizione completa della biblioteca in inglese
Nelle versioni moderne della distribuzione Raspbian la libreria è già preinstallata, puoi verificarlo tramite la console Python python3 import picamera In caso di errore, devi uscire dalla console inserendo il comando exit() o usando Ctrl + Combinazione di tasti D e installa la libreria con il comando sudo apt-get install python3-picamera Lavora con la fotocamera dal codice Python in modo simile ai comandi del terminale discussi sopra. Puoi facilmente ottenere un'immagine standard da una telecamera direttamente nella console Python: import picamera #importa la libreria della telecamera camera = picamera.PiCamera() #crea un oggetto telecamera camera.capture("image.jpg") #chiama l'immagine della telecamera metodo di acquisizione camera .close() #chiude la sessione della fotocamera L'immagine verrà salvata nel file image.jpg nella cartella corrente.

Due anni fa, quando ho iniziato a lavorare sui multicotteri, ho dovuto realizzarne uno piccolo. Poiché il quadricottero doveva essere puramente autonomo, tutto ciò che veniva richiesto a questo telecomando era controllare il drone durante il test e la configurazione.

In linea di principio, il telecomando ha affrontato con successo tutti i compiti assegnati . Ma c’erano anche gravi carenze.

  1. Le batterie non entravano nella custodia, quindi ho dovuto fissarle alla custodia con del nastro isolante :)
  2. I parametri sono stati regolati utilizzando quattro potenziometri, che si sono rivelati molto sensibili alla temperatura. Stabilisci alcuni valori in casa, esci - e sono già diversi, sono volati via.
  3. U Arduino Nano, che ho utilizzato nel telecomando, ci sono solo 8 ingressi analogici. Quattro erano occupati dalla regolazione dei potenziometri. Un potenziometro fungeva da gas. Due ingressi erano collegati al joystick. Rimaneva libera solo un'uscita e c'erano molti più parametri da configurare.
  4. L'unico joystick non era affatto quello del pilota. Anche controllare l'acceleratore con un potenziometro è stato piuttosto frustrante.
  5. E il telecomando non emetteva alcun suono, il che a volte è estremamente utile.

Per eliminare tutte queste carenze, ho deciso di riprogettare radicalmente il telecomando. Sia la parte hardware che quella software. Ecco cosa volevo fare:

  • Crea una custodia grande in modo da poterci riporre tutto ciò che desideri adesso (comprese le batterie) e tutto ciò che desideri in seguito.
  • In qualche modo risolvi il problema con le impostazioni, non aumentando il numero di potenziometri. Inoltre, aggiungi la possibilità di salvare i parametri nel telecomando.
  • Realizza due joystick, come sulle normali console di pilotaggio. Bene, metti i joystick stessi ortodossi.

Nuova costruzione

L’idea è estremamente semplice ed efficace. Ritagliamo due piastre dal plexiglass o altro materiale sottile e le colleghiamo con le cremagliere. L'intero contenuto della custodia è fissato alla piastra superiore o inferiore.

Controlli e menu

Per controllare una serie di parametri, è necessario posizionare una serie di potenziometri sul telecomando e aggiungere un ADC oppure effettuare tutte le impostazioni tramite il menu. Come ho già detto, la regolazione con i potenziometri non è sempre una buona idea, ma non bisogna nemmeno rinunciarvi. Si è quindi deciso di lasciare quattro potenziometri nel telecomando e di aggiungere un menu completo.

Per navigare nel menu e modificare i parametri, solitamente vengono utilizzati i pulsanti. Sinistra, destra, su, giù. Ma volevo usare un codificatore invece dei pulsanti. Ho avuto questa idea da un controller per stampante 3D.


Naturalmente, con l'aggiunta del menu, il codice del telecomando è stato ampliato più volte. Per cominciare, ho aggiunto solo tre voci di menu: "Telemetria", "Parametri" e "Memorizza parametri". La prima finestra visualizza fino a otto diversi indicatori. Finora ne utilizzo solo tre: alimentazione a batteria, bussola e altitudine.

Nella seconda finestra sono disponibili sei parametri: coefficienti del controller PID per gli assi X/Y, Z e angoli di correzione dell'accelerometro.

La terza voce permette di salvare i parametri in EEPROM.

Joystick

Non ho pensato a lungo alla scelta dei joystick del pilota. È successo che ho ricevuto il primo joystick Turnigy 9XR da un collega nel settore dei quadricotteri, Alexander Vasiliev, il proprietario del noto sito web alex-exe.ru. Ho ordinato il secondo direttamente da Hobbyking.


Il primo joystick era caricato a molla in entrambe le coordinate, per controllare l'imbardata e il beccheggio. Il secondo che ho preso era lo stesso, così da poterlo poi convertire in un joystick per controllare trazione e rotazione.

Nutrizione

Nel vecchio telecomando utilizzavo un semplice regolatore di tensione LM7805, alimentato con un pacco di 8 batterie AA. Un'opzione terribilmente inefficiente, in cui sono stati spesi 7 volt per riscaldare il regolatore. 8 batterie - perché a portata di mano c'era solo un compartimento del genere, e LM7805 - perché a quel tempo questa opzione mi sembrava la più semplice e, soprattutto, la più veloce.

Ora ho deciso di agire in modo più saggio e ho installato un regolatore abbastanza efficace sull'LM2596S. E invece di 8 batterie AA, ho installato uno scomparto per due batterie LiIon 18650.


Risultato

Mettendo tutto insieme, abbiamo ottenuto questo dispositivo. Vista interna.


Ma con il coperchio chiuso.


Mancano il cappuccio di un potenziometro e i cappucci dei joystick.

Infine, un video su come vengono configurate le impostazioni tramite il menu.


Linea di fondo

Il telecomando è fisicamente assemblato. Ora sto lavorando alla finalizzazione del codice per il telecomando e il quadricottero per riportarli alla loro antica forte amicizia.

Durante l'impostazione del telecomando sono state individuate delle carenze. In primo luogo, gli angoli inferiori del telecomando restano nelle tue mani: (probabilmente ridisegnerò un po' le piastre, appianerò gli angoli. In secondo luogo, anche un display 16x4 non è sufficiente per un bellissimo display telemetrico: devo accorciare gli angoli nomi dei parametri a due lettere Nella prossima versione del dispositivo installerò un display a punti o immediatamente una matrice TFT.


Il computer a scheda singola Raspberry Pi permette di realizzare cose davvero interessanti e utili: dai centri multimediali ai sistemi domotici. Collegando diversi moduli al Raspberry Pi è possibile espandere notevolmente le funzionalità di questo minicomputer.



Uno di questi plug-in aggiuntivi è una fotocamera, che ti consente di scattare foto o girare video. Oggi sul mercato sono presenti numerose fotocamere per Raspberry Pi e in questo articolo ne daremo una breve recensione.


Diamo un'occhiata a sei delle fotocamere più popolari: ZeroCam Noir, ZeroCam FishEye, Raspberry Pi Fisheye Camera compatibile, Raspberry Pi Camera V2, Raspberry Pi Camera V2 Noir e Raspberry Pi Camera 1.3.



ZeroCam Noir è un modulo fotocamera per Raspberry Pi Zero o Raspberry Pi Zero W, quindi se vuoi utilizzarlo in Raspberry Pi 3 o 2, dovrai utilizzare un cavo adattatore. Questa fotocamera non dispone di un filtro IR sull'obiettivo, il che la rende ideale per la fotografia in condizioni di scarsa illuminazione. Ecco alcune delle sue principali caratteristiche: sensore da 5 megapixel, 2592×1944 pixel, 1080p a 30 FPS (o 60 FPS a 720p, 90 FPS a 480p), lunghezza focale 3,60 mm, 53,50 gradi orizzontali, 41,41 gradi verticali, ca. dimensioni della scheda con fotocamera: 60 x 11,4 x 5,1 mm.



Questa è la versione fisheye della ZeroCam, il che significa che ha un'immagine grandangolare. Questa fotocamera è realizzata anche per Pi Zero o Pi Zero W, quindi per utilizzarla con un altro pannello Pi è necessario un cavo adattatore.



Si tratta di una fotocamera fisheye compatibile con Raspberry Pi che può essere facilmente trovata su varie piattaforme di trading online come AliExpress, TaoBao, eBay. È caratterizzato da una visione grandangolare di 175º. Si basa sul sensore Omnivision 5647 con una risoluzione di 5 megapixel (2592 x 1944 pixel).



Questa fotocamera è dotata di un sensore di immagine Sony IMX219 da 8 megapixel con obiettivo a focale fissa, in grado di visualizzare immagini statiche da 3280×2464 pixel, supporta video 1080p30, 720p60 e 640×480p90. La fotocamera è compatibile con tutte le schede Raspberry Pi, ma se vuoi usarla con il Pi Zero hai bisogno di un cavo adattatore.



Questa fotocamera ha tutte le funzionalità del modulo Raspberry Pi Camera V2, ma non ha un filtro IR. Ciò significa che è quasi una fotocamera ideale per scattare al buio.



Raspberry Pi Camera 1.3 è il predecessore del modulo V2. È dotato di un sensore OmniVision OV5647 da 5 megapixel.

Confronto del campo visivo e della qualità dell'immagine delle telecamere per Raspberry Pi

In questo test, tutte le telecamere sono installate a una distanza di 1 metro dall'immagine di prova. I risultati sono i seguenti:











Confronto tra qualità dell'immagine e resa cromatica delle fotocamere Raspberry Pi durante lo zoom











Confronto della qualità delle riprese notturne

I risultati seguenti mostrano diverse fotocamere pronte per la fotografia notturna che fanno la stessa cosa: immagine di prova in condizioni di scarsa illuminazione al buio.







conclusioni

Tutte le fotocamere funzionano leggermente meglio di quanto ci si aspetterebbe da moduli così economici. Sfortunatamente, non esiste una fotocamera all-in-one tra queste, e c'è un compromesso da fare in quanto non sembrano esserci fotocamere grandangolari (fisheye) con il filtro IR rimosso. Quindi, se desideri un grandangolo, avrai bisogno di un'illuminazione regolare e, al contrario, di notte difficilmente otterrai scatti grandangolari.

Buona giornata!

Alla vigilia di Capodanno ho avuto l'idea di costruire una sorta di videosorveglianza. Avevo tutto ciò di cui avevo bisogno a portata di mano:

  • Computer a scheda singola Raspberry Pi modello B
  • Webcam LOGITECH HD Webcam C270
Dopo la lettura, ho deciso di sviluppare un po’ l’idea dell’autore.
Conoscenza
Quindi, per prima cosa, facciamo conoscenza con il "componente" principale:
Aspetto del Raspberry Pi:

Caratteristiche:

  • Processore Broadcom BCM2835 ARM1176JZFS da 700 MHz con FPU e GPU Videocore 4
  • La GPU fornisce Open GL ES 2.0, OpenVG con accelerazione hardware e decodifica 1080p30 H.264 di alto profilo
  • La GPU è in grado di raggiungere 1 Gpixel/s, 1,5 Gtexel/s o 24 GFLOPS con filtro texture e infrastruttura DMA
  • 512 MB di RAM
  • Si avvia dalla scheda SD, esegue una versione del sistema operativo Linux
  • Presa Ethernet 10/100BaseT
  • Presa di uscita video HDMI
  • 2 prese USB 2.0
  • Presa di uscita video composito RCA
  • Presa per scheda SD
  • Alimentato da presa microUSB
  • Jack di uscita audio da 3,5 mm
  • Connettore per videocamera HD Raspberry Pi
  • Dimensioni: 85,6 x 53,98 x 17 mm"
pi@hall-pi ~ $ cat /proc/cpuinfo processore: 0 nome modello: processore compatibile ARMv6 rev 7 (v6l) BogoMIPS: 2.00 Caratteristiche: swp half Thumb fastmult vfp edsp java tls Implementatore CPU: 0x41 Architettura CPU: 7 variante CPU : 0x0 Parte CPU: 0xb76 Revisione CPU: 7 Hardware: BCM2708 Revisione: 000e Seriale: 000000005a82c372

È possibile trovare un elenco delle distribuzioni ufficialmente supportate. Ho scelto Raspbian senza shell grafica.

Il processo di installazione è abbastanza semplice e non richiede descrizione dettagliata, quindi elencherò i fatti principali a cui vale la pena prestare attenzione:

  1. Impostazione del fuso orario
  2. Impostazione del nome del computer
  3. Abilitazione dell'accesso SSH
  4. Aggiornamento del sistema
Dopo aver completato tutte le impostazioni necessarie, puoi iniziare.
Preparazione
Per prima cosa installiamo tutti i pacchetti necessari:
sudo apt-get install imagemagick libav-tools libjpeg8-dev subversion
Quindi scarica e assembla mjpg-streamer:
sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer cd mjpg-streamer make
Perché Memorizzeremo tutti i dati nel cloud, imposteremo il lavoro da remoto file system tramite WebDAV:
sudo apt-get install davfs2 sudo mkdir /mnt/dav sudo mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi
Per non inserire ogni volta nome utente e password, è necessario aggiungerli al file
/etc/davfs2/secrets
/mnt/dav password dell'utente
Il processo di lavoro
Aggiungiamo i comandi a /etc/rc.local per montare WebDAV ed eseguire lo script per trasmettere alla rete:
mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi cd /home/pi/mjpg-streamer && ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
Ora, andando su http://:8080/ avremo accesso alla fotocamera. Non resta che inoltrare la porta sul router e potrai accedere alla telecamera al di fuori della rete locale.
Creazione di video time-lapse
Prima di tutto, dobbiamo ottenere un'immagine dalla fotocamera. Perché è già occupato (l'immagine viene trasmessa dal server web), quindi sfrutteremo l'opportunità per ricevere l'immagine corrente dal server web:
arricciare http://localhost:8080/?action=snapshot > out.jpg
Se vogliamo disegnare sull'immagine la data della foto, allora possiamo utilizzare il comando convert
timestamp=`stat -c %y out.jpg` converti out.jpg -fill nero -fill bianco -pointsize 15 -draw "testo 5.15 "$(timestamp:0:19)"" out_.jpg
Versione completa sceneggiatura:
#!/bin/bash nomefile=$(perl -e "ora di stampa") nomecartella=$(data --rfc-3339=data) curl http://localhost:8080/?action=snapshot > $nomefile timestamp=` stat -c %y $nomefile` mkdir /mnt/dav/out/$nomecartella convert $nomefile -fill nero -fill bianco -dimensionepunti 15 -draw "testo 5.15 "$(timestamp:0:19)"" /mnt /dav /out/$nomecartella/$nomefile.jpg rm $nomefile
Il video viene assemblato utilizzando il comando avconv:
avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 out.avi
Versione completa dello script di assemblaggio video:
#!/bin/bash nomefile=$(data --rfc-3339=data) i=0 for f in `ls -tr /mnt/dav/out/$nomefile/*.jpg 2>/dev/null` do newf=`printf %06d $i`.jpg echo $f "-->" $newf mv $f $newf i=$((i+1)) done rmdir -R /mnt/dav/out/$nomefile/ avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 /mnt/dav/$nomefile.avi rm *.jpg
Ora non resta che registrare l'esecuzione degli script nello scheduler di Cron:
* * * * * pi bash /home/pi/cam.sh 59 23 * * * pi bash /home/pi/build.sh
Video di esempio
Conclusione
Questo approccio aiuta a eliminare la necessità di dedicare molto tempo alla visione di video e riduce anche il costo del prodotto finale. Grazie alla presenza di un sistema operativo completo, diventa possibile espandere le funzionalità nella giusta direzione.

Perché Questo computer ha prestazioni sufficienti per ricevere, archiviare, elaborare e trasmettere video da una fotocamera (ad esempio da una fotocamera USB) tramite Wi-Fi ad altri dispositivi. Esistono fotocamere speciali per Raspberry PI che si collegano a un connettore speciale su di esso e fotocamere USB che si collegano a qualsiasi porta USB su Raspberry PI. Perché Le fotocamere USB, di regola, sono molto più economiche di quelle speciali (anche se peggiori), quindi considereremo successivamente l'utilizzo di una fotocamera USB con Raspberry PI. Esistono numerosi programmi per acquisire video da una fotocamera USB oppure puoi scriverne uno tuo, ma per semplicità, esaminiamo prima l'acquisizione e la trasmissione di video utilizzando il programma di movimento. Per installare il programma motion su Raspberry PI è necessario innanzitutto collegarsi ad esso tramite il programma Putty (o qualsiasi altro programma terminale con possibilità di comunicare via SSH) (per informazioni su come effettuare questa operazione vedere il precedente articolo “Raspberry PI 3 configurazione e gestione GPIO tramite WIFI”). Dopo aver effettuato la connessione al Raspberry PI, è necessario aggiornare il sistema utilizzando i comandi

Sudo apt-get aggiornamento

Sudo apt-get upgrade

Dopo un aggiornamento del sistema riuscito, è necessario installare il programma di movimento con il comando

Sudo apt-get install motion

Durante l'installazione potrebbe essere posta la domanda "Vuoi continuare?" dopodiché dovrai inserire la lettera "Y". Dopo aver installato il programma motion, dovrai apportare alcune modifiche ai file di configurazione. Apri il file motion.conf nell'editor nano con il comando

Sudo nano /etc/motion/motion.conf

Poi

Sostituito da

Successivamente troveremo altre righe da modificare, per fare ciò premere la combinazione di tasti CTRL+W, inserire "stream_localhost" e premere invio, dopodiché dovrebbe essere trovata la riga richiesta, se non viene trovata, quindi la variabile "stream_localhost" " si chiama qualcos'altro, ad esempio "webcam_localhost" o qualcosa del genere. Dopo aver trovato la riga con questa variabile, è necessario

Stream_localhost attivo

sostituito da

Stream_maxrate 1

E sostituisci con

Stream_maxrate 100

Sostituito da

Poi

Tempo_frame_minimo 0

Sostituito da

Tempo_frame_minimo 1

Quest'ultimo viene fatto in modo che i fotogrammi vengano emessi una volta al secondo: questo non sembra molto buono, ma il video non scomparirà se l'immagine cambia improvvisamente. Lo scopo di ciascuna variabile può essere letto nei commenti.
Ora salva le modifiche premendo CTRL+O e invio, quindi premi CTRL+X ed esci editore nano. Ora modifichiamo un altro file, per fare ciò inseriamo il comando

Sudo nano /etc/default/motion

E sostituisci la linea

Start_motion_daemon=no

Start_motion_daemon=sì

Quindi salva le modifiche premendo CTRL+O ed entra, quindi premi CTRL+X ed esci dall'editor nano. Ora puoi avviare il trasferimento del video (la fotocamera USB deve essere collegata a una delle porte) con il comando

Avvio del movimento del servizio Sudo

Fermati con il comando

Arresto del movimento del servizio Sudo

Per vedere il video è necessario aprire il browser e inserire l'indirizzo IP del Raspberry PI nella barra degli indirizzi, quindi inserire i due punti e 8081 (indirizzo IP del Raspberry PI: 8081) e premere invio, quindi il video della fotocamera USB dovrebbe apparire nel browser. Puoi vedere come è fatto tutto questo, vedere il risultato e qualcos'altro nel video:

Come questo in modo semplice Puoi ottenere video da una fotocamera USB collegata a Raspberry PI. Se si tratta di un Raspberry PI 3 con Wi-Fi integrato e alimentato da un powerbank (o qualche altra fonte di energia elettrica portatile) (ad esempio, questo o uno più economico, anche se non è consigliabile utilizzarne uno economico, Raspberry PI necessita di una normale fonte di alimentazione per sfruttare tutte le sue capacità, è inoltre molto consigliabile installare un dissipatore di calore per il processore e altri microcircuiti che si sviluppano durante il funzionamento del Raspberry, idealmente il dissipatore di calore dovrebbe essere in rame e rivestito con una speciale vernice nera), quindi in base a tutto con questo puoi realizzare una sorta di sistema di videosorveglianza, videocamera o qualcosa di simile.




Superiore