Tempo fa, chiaccherando della nostra schedina venne fuori questa funzione “particolare”, decisi così di scrivere una semplice guida. Queso progettino consiste nel comandare una macchina fotografica USB tramite il raspberry. Può sembrare una funzione banale ma, se abbinata ad altri progetti o sistemi può svolgere funzioni molto interessanti.
In fondo ho messo come esempio uno script che permette di scattare una foto ogni 10 secondi e renderla immediatamente accessibile in rete.
Bando alle ciancie incominciamo:
Abbiamo bisogno di:
- RaspberryPi (qualunque modello)
- Raspian installato
- Una macchina fotografica con cavo usb (vedi sotto)
Prima di iniziare la parte software chiarisco che non tutte le macchine fotografiche sono supportate da questo sistema, anzi, molte non vengono riconosciute, ma… Posso dirvi che ho testato il tutto con:
- Canon eos 500d
- Agfa ePhoto CL 18
Con tutte e due le macchine fotografiche il test è risultato positivo.
Installazione software necessario e utilizzo generale
Installiamo aptitude sul nostro raspberry (se è già installato fa niente) con:
sudo apt-get install aptitude
Installiamo ora il nostro sotfware con:
aptitude install gphoto2
Dopo aver completato questa brevissima installazione colleghiamo la fotocamera (accesa) al raspberry tramite un cavo USB e digitiamo:
lsusb
Nel risultato dovremmo trovare anche una riga con la marca o il modello della fotocamera
Se attacco la canon io visualizzo:
1 |
Bus 001 Device 009: ID 04a9:31cf Canon, Inc. |
Andiamo ora ad eseguire l’autodetect di gphoto con il comando:
gphoto2 --auto-detect
Se la cam viene correttamente riconosciuto visualizzarete:
1 2 3 |
Modello Porta ---------------------------------------------------------- Canon EOS 500D usb:001,010 |
Dopo l’autodetect vediamo come come scattare la prima foto:
Il comando da dare è:
gphoto2 --capture-image-and-download
Se diamo questo comando sentiremo la macchina che mette a fuoco e scatta e se andremo su /home/pi/ troveremo la nostra bella foto appena scattata.
Con questo potrei aver finito ma prima voglio vedere assieme a voi uno script:
Per esempio io voglio che ogni 10 secondi la macchina scatti una foto e me la metta online sul mio webserver
eseguiamo i seguenti comandi:
cd
sudo nano foto.sh
Incolliamo tutto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/bash for i in $( ls ); do gphoto2 --capture-image-and-download --force-overwrite echo "" echo "" echo "" echo "foto scattata!!!" echo "" echo "" echo "" echo "" cp capt0000.jpg /var/www/html/webcam #Sostituire con nome foto e posizione dove la si vuole mettere sleep 7 #secondi di stacco tra una foto e l'altra. done |
dove capt0000.jpg sta per la foto che mi scatta in /home/pi/ e /var/www/html/webcam sta per la posizione della cartella dove vorrei mettere la foto.
Nella cartella webcam io ho messo un semplicissimo index.html strutturato così:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<html> <head> <title>Foto!</title> <script language="JavaScript"> function doRefresh() { // refresh della pagina corrente document.location.reload(); } // imposto il timeout per il prossimo refresh // espresso in millisecondi (9000 = 9 secondi) window.setTimeout("doRefresh();" , 9000); </script> </head> <body> <div align="center"> <h2>Foto aggiornata ogni 10 secondi</h2> <img src="capt0000.jpg" width="600" height="399" />;</div> </body> </html> |
Presto altri utili script…
GabrieleToselli