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à.
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:
Ciao
grazie per questo articolo; come si collega la WEBCAM a YUN? Spero non con decine di cavetti o uno Shield.
Giovanni
una semplice connessione USB: Yun dispone di una porta USB host… più facile di così! 😉
Lo speravo, grazie
Giovanni
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.
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.
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
thanks a lot!,it work
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
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.
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!
ciao Gabriele,
mmm non ti vede assolutamente nulla che colleghi alla USB? Prova con un HID device (tastiera/mouse)…
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
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)
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
massimo rispetto per luca e questa pagina,
Luigi le logitec danno problemi…
ho trovato questa pagina
http://www.ideasonboard.org/uvc/
date un occhio.
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
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.
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
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
ciao Luca.
mi rimane appesa la scritta
Trying source module file….
e non esegue nulla….
Quale potrebbe essere la causa?
ho notato che non ho il file /dev/video0
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…
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
Ciao Angelo, puoi farlo con la Yun (non con Arduino normale) ma è un po’ uno “spreco”, una webcam IP ti costa sicuramente meno 😉
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
ciao giovanni, posta tutto l’output del comando fswebcam –no-banner –save photo.jpg
ho risolto
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!
Hi! Do you get any errors from fswebcam? Try using the -S switch to skip the first n frames
Buongiorno e grazie in anticipo.
Avrei bisogno di sapere quanto tempo ci mette a partire arduino yum dal momento dell’accensione.
Ciao Marco, circa 1 minuto il mio yun (con uhttpd, php…) da quando lo accendo a quando la parte web è visibile in rete (wifi).
perdona la domanda sciocca, ma dove trovo i pacchetti: kmod-video-uvc e fswebcam???
grazie paolo
Paolo, puoi installarli o tramite l’interfaccia web di Yun come spiegato nell’articolo, o in alternativa usando il comando opkg da shell.
Ahhh ora ho capito!!! grazie Luca faccio una prova e vedo se funziona.
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.
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)?
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.
Ciao luca,
che tu sappia, si puo catturare la foto con risoluzione 640×480??
perche viene ridimensionata a 252×288?
grazie mille
Paolo
Ciao Paolo! Sicuramente sì, prova a giocare con le varie opzioni di fswebcam, puoi forzare anche la risoluzione…
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
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
Ciao Vito, si normalmente quell’errore indica che Yun non ha riconosciuto la webcam e quindi fswebcam non riesce ad accedere al “file” corrispondente
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
Ciao Alessandro, nella seconda parte del tutorial è spiegato proprio come fare streaming…
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);}
}
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.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!
puoi fare uno script che usa il client ftp di linino per fare l’upload dopo aver chiamato fswebcam per acquisire l’immagine
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
Ciao Mattia, sembra che la tua webcam non sia riconosciuta da Linux, hai verificato nel logs di sistema come spiegato nell’articolo?
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
ciao, appena dopo aver collegato la webcam alla porta usb digita dmesg e copia le ultime righe…
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 ]