Yún – colleghiamo una webcam (1)

luca 15/11/2013 57

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:

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 »

Questo sito usa i cookie per poterti offrire una migliore esperienza di navigazione 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