Yún – colleghiamo una webcam (1)

by luca
57 comments

Il tutorial di oggi, diviso in due parti, vi spiegherà come utilizzare una webcam con il vostro Arduino Yun.

Scegliamo la webcam

La distribuzione Linux (Linino) in esecuzione su Arduino Yun è in grado di gestire le webcam supportate dal driver UVC: un elenco completo di tali webcam è disponibile sulla pagina ufficiale.

Non è invece attualmente supportato il driver Gspca; un supporto per tale driver è previsto nel prossimo futuro.

Ho scelto – dopo aver letto i test positivi di altri utenti – la webcam Microsoft LifeCam HD-3000, acquistabile per circa 20 euro:

Installiamo il software

Prima di collegare la webcam, dobbiamo installare qualche pacchetto software su Arduino Yun. L’installazione può essere fatta sia da riga di comando (collegandoci in SSH), sia da interfaccia grafica… per questo tutorial ho scelto la seconda modalità.

Arduino Yun deve essere collegato in rete e deve poter navigare in Internet.

Colleghiamoci con un browser all’interfaccia grafica di Arduino e, dopo aver inserito la password, clicchiamo Configure; quindi advanced configuration panel:

Dal menu selezioniamo System, Software:

Premiamo il pulsante Update lists per aggiornare la lista dei software disponibili:

Cerchiamo il pacchetto kmod-video-uvc, spostiamoci nel tab Available packages e installiamolo:

Facciamo lo stesso per il pacchetto fswebcam:

Colleghiamo ora la webcam. Per essere sicuri che Linino la abbia riconosciuta, visualizziamo il log di sistema:

Le ultime righe del log dovrebbero indicare che la webcam è stata correttamente configurata:

Scattiamo una fotografia

Colleghiamoci ora via SSH ad Arduino Yun: utilizzeremo fswebcam per catturare una immagine dalla webcam e salvarla sulla SD, in modo che sia poi visibile tramite browser.

Spostiamoci sulla SD (cd /www/sd) e digitiamo il comando

fswebcam --no-banner --save photo.jpg

Con questo comando catturiamo una immagine dalla webcam e la salviamo, senza scritte aggiuntive (–no-banner) con nome photo.jpg:

Possiamo ora utilizzare un browser per visualizzare l’immagine catturata:

Related Posts

57 comments

lucadentella.it – Yún – Aggiungiamo una porta seriale 2 dicembre 2013 - 09:18

[…] disposizione una porta USB host, alla quale è possibile collegare periferiche USB quali tastiere, webcam… e anche un adattatore […]

Reply
Arduino Yun Bridge curl - Mauro Alfieri Elettronica Domotica Robotica 4 dicembre 2013 - 08:36

[…] qualcuno alla porta, questo è abbastanza semplice se usi la webcam come descritto dall’amico Luca e usi uno script linux che periodicamente controlla il sensore PIR collegato alla Arduino Yun […]

Reply
Giovanni 18 febbraio 2014 - 19:31

Ciao

grazie per questo articolo; come si collega la WEBCAM a YUN? Spero non con decine di cavetti o uno Shield.

Giovanni

Reply
luca 18 febbraio 2014 - 20:10

una semplice connessione USB: Yun dispone di una porta USB host… più facile di così! 😉

Reply
Giovanni 18 febbraio 2014 - 22:04

Lo speravo, grazie

Giovanni

Reply
pietro 19 febbraio 2014 - 14:53

Ciao,volevo sapere piu o meno il tempo che ci mette arduino yun per scattare un foto e memorizzarla su sd.In pratica mi servirebbe un sistema che scatti subito una foto,appena un sensore di prossimita’ rilevi un oggetto.Grazie.

Reply
luca 19 febbraio 2014 - 21:17

ciao pietro, ho fatto qualche prova: fswebcam impiega circa 2 secondi per acquisire l’immagine, convertirla e salvarla su SD. se però fai catturare più di una immagine in sequenza, il tempo per acquisire la seconda, terza… è molto inferiore.

Reply
davide 1 aprile 2014 - 16:05

Ciao luca,
Complimenti per l’articolo , volevo chiederti come si installano i pacchetti fswebcam e kmod-video-uvc , dato che quando faccio update list non mi appaiono.In più se impostdavode.lao yun come client, ho la rete Internet ma non posso accedere al pannello di linino..
Grazie

Reply
robert 25 maggio 2014 - 18:12

thanks a lot!,it work

Reply
Oscar 29 maggio 2014 - 10:26

Hola!
He seguido paso a paso tu tutorial, por cierto muy bien explicado, pero he tenido un par de problemillas que me gustaría preguntarte.

Con wifi configurada y usando puTTY sobre un Wnd7, hago una conexion SSH a mi ip del Arduino Yun.
El problema es que:
Cuando conecto la microSD, no me la reconoce como “sd”, sino que me aparece en “/mnt como sda1”.
Con la webcam conectada ejecuto:
“root@Arduinoyun:/mnt/sda1# fswebcam –no-banner –save foto.jpg”

Lo cierto es que SI captura la foto, que queda almacenada en la microSD, pero despues NO puedo visualizarla por el navegador.
pongo “192.168.0.101 /mnt/sda/foto.jpg” y NADA.. ¿Podrías decirme donde esta el error?, ¿Quizas en la ruta del navegador?.

Muchas gracias y FELICIDADES por el articulo

Reply
luca 5 giugno 2014 - 20:48

Hi Oscar

(I hope I correctly understood your comment) first you must create (using your PC for example) on your SD the folder “arduino” and, inside that, the folder “www”. When you insert the SD card it now should be available at /www/sd. Give a read to my blog post.

Reply
Gabriele 6 luglio 2014 - 14:24

Ciao,
grazie per la guida. Purtroppo ho un problema che non capisco se dipende dall’hardware (connessione elettrica USB) o dal software. La Webcam non viene rilevata dalla porta USB (e neanche una chiavetta USB utilizzata come controprova). Ho installato tutti i pacchetti indicati e anche altri relativi all’USB. Ho aggiornato l’immagine del sistema operativo e ne ho provate anche altre versioni senza successo.
Hai qualche consiglio da darmi?
Grazie e complimenti per il lavoro!

Reply
luca 8 luglio 2014 - 08:12

ciao Gabriele,

mmm non ti vede assolutamente nulla che colleghi alla USB? Prova con un HID device (tastiera/mouse)…

Reply
pete 14 agosto 2014 - 12:40

Hi,

nice tutorial.
webcam works and the pic is on the gets into the folder mnt/sda1/arduino/test.png … however I cannot access it via the browser. Do I need to start a client application or am I typing a wrong url?
192.168.2.136/mnt/sda1/arduino/test.png doesnt work
thanks

Reply
luca 15 agosto 2014 - 14:04

Hi Pete

you should save the images in the www folder (/mnt/sda1/arduino/www) which is accessible through a web browser at the /sd/myphoto.jpg path (sd is a symlink to /mnt/sda1/arduino/www)

Reply
Luigi 9 settembre 2014 - 16:47

Ciao Luca. Ho fatto la stessa esperienza seguendo il libro “Alla scoperta di Arduino Yun” avendo però problemi di hanging della webcam e/o di Yun.
Ho quindi fatto l’update di OpenWrt a 1.4.2 e aimè la cosa la webcam mi rimanda lo streaming a quadri e pure le foto scattate da “motion”. Ho pensato fosse la webcam Logitech Quickcam 9000 che è data per avere problemi con il driver UVC e quind l’ho sostituita con la Logitech C270 data per funzionante con UVC. Niente stesso prblema. Hai qualche idea?
Grazie
Luigi

Reply
Simone 15 dicembre 2015 - 11:20

massimo rispetto per luca e questa pagina,
Luigi le logitec danno problemi…
ho trovato questa pagina
http://www.ideasonboard.org/uvc/
date un occhio.

Reply
piero 6 ottobre 2014 - 14:49

Ciao Luca,
sto iniziando da 0 con arduino e vorrei iniziare con lo yun.
Vorrei sapere se è possibile fare la stessa cosa, ma collegando delle telecamere IP sulla stessa rete. l’intento è decidere tramite interfaccia web quale telecamera visualizzare..
Puoi aiutarmi o darmi qualche dritta?
ciao e grazie
Piero

Reply
luca 8 ottobre 2014 - 12:44

Ciao Piero, se le telecamere sono già IP, non ti serve un dispositivo ulteriore… esistono (penso anche gratuiti) del software di “aggregazione” che ricevono i flussi video dalle varie telecamere e te le presentano a matrice o ti lasciano scegliere quale vedere.

Reply
piero 10 ottobre 2014 - 09:27

Ciao Luca,
grazie mille per la risposta.
Le telecamere sono IP e sono già collegate a server (qnap) con il quale le gestisco; la mia domanda era dovuta al fatto che, volendo iniziare con lo yun, lo sviluppo di una piccola applicazione web da metterci sopra per gestire le telecamere poteva essere un punto di partenza.
ciao e grazie
Piero

Reply
piero 10 ottobre 2014 - 10:04

Ciao Luca,
rileggendo quello che ho scritto mi sono accorto che probabilmente ho commesso un errore di base: per fare quello che ho detto l’applicazione sarebbe installabile su qualsiasi server anche differente da quello presente sullo yun in quanto non utilizzerebbe il driver linino-usb di connessione e gestione della telecamera…
OPS… piccolo errore di fondo…
sorry
P

Reply
Leo 25 ottobre 2014 - 12:24

ciao Luca.

mi rimane appesa la scritta

Trying source module file….

e non esegue nulla….

Quale potrebbe essere la causa?

Reply
Leo 25 ottobre 2014 - 12:41

ho notato che non ho il file /dev/video0

Reply
luca 25 ottobre 2014 - 13:14

Ciao Leo, ma la tua Yun è collegata a Internet? Hai aggiornato l’immagine Linino all’ultima versione? Sembra che non riesca a scaricare i drivers…

Reply
Angelo 30 ottobre 2014 - 16:01

Ciao Luca, potrei usare la scheda Arduino Yun per tenere connessa in rete una web cam in ripresa continua? Oppure potrebbe anche bastare una scheda Arduino UNO + una Ethernet Shield?
Grazie anticipatamente
Angelo

Reply
luca 31 ottobre 2014 - 15:07

Ciao Angelo, puoi farlo con la Yun (non con Arduino normale) ma è un po’ uno “spreco”, una webcam IP ti costa sicuramente meno 😉

Reply
giovanni 28 novembre 2014 - 19:06

Ciao e grazie per l’aiuto che fornisci. Ho seguito il tutorial alla lettere ed è andato tutto bene fino a quando provo a salvare la foto. Putty mi restituisce il seguente msg:
“There are unsaved changes to the image” al posto di “writing jpeg image to photo.jpg.
Che faccio???. Grazie ancora

Reply
luca 28 novembre 2014 - 20:36

ciao giovanni, posta tutto l’output del comando fswebcam –no-banner –save photo.jpg

Reply
giovanni 28 novembre 2014 - 22:27

ho risolto

Reply
lovely 1 gennaio 2015 - 14:58

hello. good evening. i just wanted to ask if how come that my webcam doesn’t capture any frames. it is always mention that no captured frames.

thank you!

Reply
luca 8 gennaio 2015 - 09:46

Hi! Do you get any errors from fswebcam? Try using the -S switch to skip the first n frames

Reply
Marco 8 luglio 2015 - 07:15

Buongiorno e grazie in anticipo.
Avrei bisogno di sapere quanto tempo ci mette a partire arduino yum dal momento dell’accensione.

Reply
luca 9 luglio 2015 - 17:11

Ciao Marco, circa 1 minuto il mio yun (con uhttpd, php…) da quando lo accendo a quando la parte web è visibile in rete (wifi).

Reply
paolo 19 luglio 2015 - 20:54

perdona la domanda sciocca, ma dove trovo i pacchetti: kmod-video-uvc e fswebcam???
grazie paolo

Reply
luca 20 luglio 2015 - 07:45

Paolo, puoi installarli o tramite l’interfaccia web di Yun come spiegato nell’articolo, o in alternativa usando il comando opkg da shell.

Reply
paolo 20 luglio 2015 - 07:51

Ahhh ora ho capito!!! grazie Luca faccio una prova e vedo se funziona.

Reply
paolo 20 luglio 2015 - 08:13

Funziona perfettamente anche con la yun shield. L’unico problema è ke la shield non avendo una microsd, ti costringe a salvare le foto sulla memoria interna.
Grazie mille Luca sia per la guida sia per il supporto.

Reply
ale 19 gennaio 2016 - 01:03

ciao luca, bellissimo tutorial(come al solito) devo solo fare una domanda: è possibile impostare la yun in modo tale che faccia una foto ogni tot minuti(esempio ogni 30 min)?

Reply
luca 19 gennaio 2016 - 08:51

Ciao Ale, basta che inserisci il comando per scattare la fotografia in cron. Il modo più facile è via interfaccia web altrimenti con il comando crontab -e.

Reply
Paolo 21 marzo 2016 - 20:36

Ciao luca,
che tu sappia, si puo catturare la foto con risoluzione 640×480??
perche viene ridimensionata a 252×288?
grazie mille
Paolo

Reply
luca 21 marzo 2016 - 21:02

Ciao Paolo! Sicuramente sì, prova a giocare con le varie opzioni di fswebcam, puoi forzare anche la risoluzione…

Reply
Paolo 22 marzo 2016 - 07:34

trovato!!!

1) questo per modificare la risoluzione:
fswebcam -d /dev/video0 -r 1600×1200 output.jpg

2) questo pr modificare la risoluzione e salvare il file con DATA ed ORA dello scatto:
fswebcam -d /dev/video0 -r 1600×1200 /mnt/picture-`date +%d-%m-%y-%H-%M-%S`.jpeg

Reply
Vito 5 aprile 2016 - 17:00

Ciao, sto riscontrando un errore nell’acquisizione della foto. Praticamente dopo il comando “fswebcam photo.jpg” ottengo “—Opening /dev/video…” e poi l’errore “stat: No such file or directoty”.
Potrebbe essere un problema di webcam non compatibile o non funzionante?
Grazie

Reply
luca 6 aprile 2016 - 12:34

Ciao Vito, si normalmente quell’errore indica che Yun non ha riconosciuto la webcam e quindi fswebcam non riesce ad accedere al “file” corrispondente

Reply
Alessandro 5 aprile 2016 - 22:34

Buona Sera Luca, ottimo guarda, volevo sapere come invece, sempre collegato una camera usb allo Yun, fare una streaming su pagina web, digitando quindi sul computer l’ip dello yen in vece della foto far apparire lo streaming in tempo reale della camera

Grazie Mille
Alessandro

Reply
luca 6 aprile 2016 - 12:35

Ciao Alessandro, nella seconda parte del tutorial è spiegato proprio come fare streaming…

Reply
Nicola C 13 maggio 2016 - 23:41

ciao Luca, e grazie per la guida molto precisa!
premettendo che da terminale riesco ad acquisire foto, salvarle nella sd e visualizarle in rete locale vorrei chiederti come poter implementare questo all’interno di uno sketch.
io richiamando la funzione takephoto() vorrei riuscire a scattare la foto e salvarla.
è giusto il comando shell scritto così nello sketch? cosa non va?

ringrazio in anticipo, Nicola.

void takephoto()
{
Process p;
//cd /www/sd/
//fswebcam –no-banner –save foto.jpg

p.runShellCommand(“fswebcam –no-banner –save foto4.jpg > /mnt/sda1/arduino/www/foto4.jpg”);
while (p.running());

//while (p.available())
//{delay(1000);}
}

Reply
luca 16 maggio 2016 - 07:49

Ciao Nicola, il comando esatto di fswebcam è fswebcam --no-banner /www/sd/foto4.jpg, questo ti salva foto4.jpg sulla sd card (meglio non scrivere nella memoria interna dello Yun) senza banner.

Reply
Nicola C 17 maggio 2016 - 23:05

Grazie 1000!!! Fenomenale!!!
Funziona alla grande!
Sapresti darmi qualche dritta ora per caricare questa foto su uno spazio web altervista? Via ftp o magari servendosi di qualche altro servizio gratuito, grazie!

Reply
luca 18 maggio 2016 - 09:06

puoi fare uno script che usa il client ftp di linino per fare l’upload dopo aver chiamato fswebcam per acquisire l’immagine

Reply
Mattia 10 giugno 2016 - 14:38

Ciao Luca quando eseguo il comando ‘fswebcam photo.jpg’ all’interno della cartella www, mi da questo errore:
/dev/video0 opened.
No input was specified, using the first.
Error selecting input 0
VIDIOC_S_INPUT: Device or resource busy
Come posso risolvere? Grazie

Reply
luca 13 giugno 2016 - 08:30

Ciao Mattia, sembra che la tua webcam non sia riconosciuta da Linux, hai verificato nel logs di sistema come spiegato nell’articolo?

Reply
Mattia 15 giugno 2016 - 16:21

Mi da questo tipo di errore di input nel Log:

Apr 1 14:45:10 Mattia user.err syslog: [1] [ERR] [ALL] motion_loop: Video device fatal error – Closing video device
Apr 1 14:45:10 Mattia user.notice syslog: [1] [NTC] [VID] vid_close: Closing video device /dev/video0
Apr 1 14:45:10 Mattia user.info sysinit: [1] [WRN] [ALL] motion_loop: Retrying until successful connection with camera
Apr 1 14:45:10 Mattia user.info sysinit: [1] [NTC] [VID] vid_v4lx_start: Using videodevice /dev/video0 and input -1

Reply
luca 16 giugno 2016 - 08:50

ciao, appena dopo aver collegato la webcam alla porta usb digita dmesg e copia le ultime righe…

Reply
Mattia 20 giugno 2016 - 12:05

Ciao questo è quello che sta nelle ultime righe:
root@Mattia:~# [ 54.980000] wlan0: authenticate with 54:e6:fc:fe:0e:3a
ash: missing ]
root@Mattia:~# [ 55.030000] wlan0: send auth to 54:e6:fc:fe:0e:3a (try 1/3)
-ash: syntax error: unexpected “(”
root@Mattia:~# [ 55.040000] wlan0: authenticated
ash: missing ]
root@Mattia:~# [ 55.050000] ath9k ar933x_wmac wlan0: disabling HT/VHT due to WEP/TKI
P use
ash: missing ]
root@Mattia:~# [ 55.050000] ath9k ar933x_wmac wlan0: disabling HT as WMM/QoS is not
supported by the AP
ash: missing ]
root@Mattia:~# [ 55.050000] ath9k ar933x_wmac wlan0: disabling VHT as WMM/QoS is not
supporte d by the AP
ash: missing ]
root@Mattia:~# [ 55.070000] wlan0: associate with 54:e6:fc:fe:0e:3a (try 1/3)
-ash: syntax error: unexpected “(”
root@Mattia:~# [ 55.100000] wlan0: RX AssocResp from 54:e6:fc:fe:0e:3a (capab=0x431
status=0 aid=6)
-ash: syntax error: unexpected “(”
root@Mattia:~# [ 55.110000] wlan0: associated
ash: missing ]
root@Mattia:~# [ 76.160000] usb 1-1.4: reset high-speed USB device number 4 using eh
ci-platfo rm
ash: missing ]

Reply
Yún – How to add a serial port | LinkSprite Learning Center 4 luglio 2016 - 02:05

[…] has also an USB host port, which can accept USB peripherals like keyboards, webcams… and also USB->serial […]

Reply
Yún – How to connect a webcam (2) | LinkSprite Learning Center 6 luglio 2016 - 02:34

[…] the first part of this tutorial you learned how to configure your webcam with Arduino Yun and how to capture […]

Reply

Rispondi a luca Cancel Reply

17 − 8 =