Yún – How to connect a webcam (1)

luca 15/11/2013 57

Today’s tutorial, split in two parts, will explain how to use a webcam with your Arduino Yun.

Choose the webcam

The Linux distribution (Linino) running on the Yun supports the webcams using the UVC driver: the complete list of the compatible webcams is available on its official page.

It is not actually supported the Gspca driver; support for that is planned and will be available soon.

I chose – after having read positive tests by other users – the Microsoft LifeCam HD-3000 webcam, available for about 20 euros:

Install the software

Before connecting the webcam, you must install some software packages on your Arduino Yun. The installation can be performed from the command line (using an SSH connection) or via GUI… for this tutorial I chose the latter.

Arduino Yun must be connected to your network and able to surf on the Internet.

With your favorite browser, connect to the Arduino’s web interface and, after having inserted its password, click on Configure, then advanced configuration panel:

From the top menu, choose System, Software:

Click on Update lists to update the list of the available packages:

Find the kmod-video-uvc package, then select the Available packages tab and install it:

Do the same for the fswebcam packet:

Now connect the webcam to the USB port of your Yun. To be sure that Linino detected and installed it, inspect the system log:

The last lines of the logs should say that the webcam was correctly installed:

Shoot a picture

Now connect to your Yun via SSH: you’re going to use the fswebcam tool to shoot a picture and save it on the SD card, to make it visible using a web browser.

Move to the SD card (cd /www/sd) and type the command

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

With this command fswebcam will capture a picture from the webcam and save it, without adding any text (–no-banner), with the name photo.jpg:

Now you can display the saved picture from the web browser:

57 Comments »

  1. Giovanni 18/02/2014 at 19:31 - Reply

    Ciao

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

    Giovanni

    • luca 18/02/2014 at 20:10 - Reply

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

  2. Giovanni 18/02/2014 at 22:04 - Reply

    Lo speravo, grazie

    Giovanni

  3. pietro 19/02/2014 at 14:53 - Reply

    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.

    • luca 19/02/2014 at 21:17 - Reply

      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.

  4. davide 01/04/2014 at 16:05 - Reply

    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

  5. robert 25/05/2014 at 18:12 - Reply

    thanks a lot!,it work

  6. Oscar 29/05/2014 at 10:26 - Reply

    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

    • luca 05/06/2014 at 20:48 - Reply

      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.

  7. Gabriele 06/07/2014 at 14:24 - Reply

    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!

    • luca 08/07/2014 at 08:12 - Reply

      ciao Gabriele,

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

  8. pete 14/08/2014 at 12:40 - Reply

    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

    • luca 15/08/2014 at 14:04 - Reply

      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)

  9. Luigi 09/09/2014 at 16:47 - Reply

    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

  10. piero 06/10/2014 at 14:49 - Reply

    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

    • luca 08/10/2014 at 12:44 - Reply

      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.

  11. piero 10/10/2014 at 09:27 - Reply

    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

  12. piero 10/10/2014 at 10:04 - Reply

    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

  13. Leo 25/10/2014 at 12:24 - Reply

    ciao Luca.

    mi rimane appesa la scritta

    Trying source module file….

    e non esegue nulla….

    Quale potrebbe essere la causa?

  14. Leo 25/10/2014 at 12:41 - Reply

    ho notato che non ho il file /dev/video0

    • luca 25/10/2014 at 13:14 - Reply

      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…

  15. Angelo 30/10/2014 at 16:01 - Reply

    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

    • luca 31/10/2014 at 15:07 - Reply

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

  16. giovanni 28/11/2014 at 19:06 - Reply

    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

    • luca 28/11/2014 at 20:36 - Reply

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

  17. giovanni 28/11/2014 at 22:27 - Reply

    ho risolto

  18. lovely 01/01/2015 at 14:58 - Reply

    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!

    • luca 08/01/2015 at 09:46 - Reply

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

  19. Marco 08/07/2015 at 07:15 - Reply

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

    • luca 09/07/2015 at 17:11 - Reply

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

  20. paolo 19/07/2015 at 20:54 - Reply

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

    • luca 20/07/2015 at 07:45 - Reply

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

      • paolo 20/07/2015 at 07:51 - Reply

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

        • paolo 20/07/2015 at 08:13 - Reply

          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.

  21. ale 19/01/2016 at 01:03 - Reply

    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)?

    • luca 19/01/2016 at 08:51 - Reply

      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.

  22. Paolo 21/03/2016 at 20:36 - Reply

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

    • luca 21/03/2016 at 21:02 - Reply

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

  23. Paolo 22/03/2016 at 07:34 - Reply

    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

  24. Vito 05/04/2016 at 17:00 - Reply

    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

    • luca 06/04/2016 at 12:34 - Reply

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

  25. Alessandro 05/04/2016 at 22:34 - Reply

    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

    • luca 06/04/2016 at 12:35 - Reply

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

  26. Nicola C 13/05/2016 at 23:41 - Reply

    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);}
    }

    • luca 16/05/2016 at 07:49 - Reply

      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.

  27. Nicola C 17/05/2016 at 23:05 - Reply

    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!

    • luca 18/05/2016 at 09:06 - Reply

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

  28. Mattia 10/06/2016 at 14:38 - Reply

    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

    • luca 13/06/2016 at 08:30 - Reply

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

  29. Mattia 15/06/2016 at 16:21 - Reply

    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

    • luca 16/06/2016 at 08:50 - Reply

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

  30. Mattia 20/06/2016 at 12:05 - Reply

    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 ]

Leave A Response »

This website uses cookies to ensure you get the best experience on our website maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi