
Con Arduino è possibile controllare una fotocamera digitale tramite USB. Come far eseguire dei comandi alla propria fotocamera con Arduino, tipi di fotocamere supportate e istruzioni per realizzare il progetto.
Forse non tutti sanno che nelle fotocamere digitali moderne la porta USB oltre che per il trasferimento delle immagini al PC può essere utilizzata anche per l'invio di appositi comandi di controllo per la fotocamera stessa. Spesso è possibile inviare comandi quali "premere" il pulsante di scatto, modificare i valori di scatto e diaframma e così via, mentre alcune telecamere permettono persino di fare un controllo sulla messa a fuoco. Allo stesso tempo alcune nuove tecnologie come HDR e la messa a fuoco sovrapposta richiedono diversi settaggi in modo da modificare i vari parametri tra uno scatto e l'altro e non si prestano per tanto a questo tipo di progetto. Esistono cmunque nerose tecniche fotografiche che potrebbero beneficiare di qualche automatismo.
Controllare una fotocamera con Arduino via USB
Tuttavia i produttori di macchine fotografiche si dimostrano spesso molto lenti nell'introduzione di qualche novità interessante, ma non preoccupatevi perchè Arduino viene in nostro soccorso. Quello che vado a presentarvi è un nuovo codice sviluppato appositamente per Arduino USB Host che implementa alcune funzioni di controllo della fotocamera digitale tramite PTP. Alex Glushchenko, uno sviluppatore Russo, ha recentemente aderito al progetto per il controllo della fotocamera da remoto e il codice descritto in questo articolo è soprattutto frutto del suo lavoro.
Il codice lo trovate a questo link ma attenzione: la fonte è provvisoria ed anche il codice stesso verrà cambiato più volte prima che diventi stabile! E' inoltre previsto un ulteriore sviluppo in quanto diverse telecamere utilizzano dei comandi diversi e si sta cercando di dare supporto a quasi tutti i prodotti, anche se con alcune fotocamere non è possibile ottenere risultati concreti a causa delle risorse limitate offerte da parte di Arduino.
L'elenco delle telecamere supportate è attualmente molto limitato ma in futuro si spera di raggiungere un numero maggiore. Utilizzare una Fotocamera digitale come periferica USB è molto più complesso che utilizzare una qualsiasi tastiera standard. La complessità inizia ad livello inferiore, ovvero dalla configurazione del dispositivo. Molto spesso le diverse configurazioni supportate dai vari dispositivi sono differenti tra loto, risulta quindi difficile trovare una configurazione di default. Pertanto, il primo passo è naturalmente quello imparare a riconoscere la configurazione che supporta i comandi di controllo della telecamera che stiamo utilizzando.
Ci sono tre specifiche che descrivono il funzionamento di una fotocamera digitale USB: le specifiche USB richieste, i descrittori Endpoint, la struttura è descritta nel protocollo Media Transfer Protocol (MTP), ovvero quel protocollo meglio conosciuto con il nome "Picture Transfer Protocol (PTP).
Controllare una fotocamera con Arduino utilizzando il protocollo PTP
Parliamo brevemente di protocollo PTP analizzandone gli elementi principali. Uno scambio di informazioni all'interno del protocollo PTP è chiamato transazione. I comandi della fotocamera generano delle richieste e a tali richieste corrispondono delle risposte, entrambi i segnali possono essere identificati come transazioni. Spesso una singola richiesta comporta più di una risposta. Alcuni tipi di risposte hanno un significato specifico e vengono chiamati eventi. Spesso capita che si saltino dei comandi o delle richieste a causa della sequenza elevata di input da parte del utente, questo causa il blocco temporaneo della fotocamera che risulterà occupata (Busy).
Il documento più interessante che troviamo al suo interno è il "PIMA 15740-2000", che elenca i comandi supportati dalla classe della Camera. Tale documento è disponibile a pagamento da I3A, tuttavia facendo una veloce ricerca su google si trovano delle copie in pdf gratuite.
Nell'articolo originale sono presenti anche alcuni test e consigli per realizzare un prototipo simile a quello descritto. Sempre all'interno della fonte originale, dalla quale è tratto questo post, potete trovare le specifiche riferite ad alcune macchine fotografiche tra cui figura anche un iPhone.
La scheda Arduino disponibile da Farnell


Per un’appasionata di fotografia come me questo articolo non poteva che essere super interessante. Non pensavo che arduino potesse svolgere una funzionalità del genere…e visto che sono molto attratta dalla possibilità di poter impostare svariate funzioni alla mia macchina fotografica con Arduino, spero vivamente di riuscire a vincelo al termine di questo concorso.Mi metterò d’impegno.
articolo, vediamo gli sviluppi successivi se è realmente realizzabile o meno, visto che è una versione provvisoria e non ancora testata, speriamo che funzioni con tutte le macchine fotografiche digitali.
Mi sembra molto utile anche e modulabile sopratutto perche è possibile tramite il protocollo ptp scattare foto e pilotare la fotocamera dal proprio pc.
Personalmente non conosco Arduino ma il massimo sarebbe controllare il dispositivo e la fotocamera via web magari applicando un modulo wifi per le alte distanze
E’ una trovata molto accattivante in quanto quest’accoppiata Arduino-Fotocamera Digitale può risolvere i problemi relativi ad esempio all’ambito lavorativo di un fotografo e non solo permettendo un’elevato grado di versatilità e allo stesso tempo compattezza
per le macchine fotografiche canon è disponibile da diversi anni il firmware chdk
http://chdk.wikia.com/wiki/CHDK
è un firmware che può essere adoperato installandolo in maniera provvisoria o definitiva solo su alcuni modelli di macchine fotografiche canon. è programmabile tramite degli script, e inclusi ci sono esempi di lettore di file di testo, e giochetti come tetris e qualcun altro. In genere questi firmware sono molto potenti e permettono di fare cose molto avanzate, come ad esempio rilevare lo stato delle porte della macchina fotografica, abilitare o disabilitare le fuzioni più intime della macchina, e addirittura permettono il salvataggio dell’immagine in formato RAW! questa cosa è consentita di default solo a macchine di livelli molto alti. Quindi se uno vuole orientarsi a macchine fotografiche canon, probabilmente prima di cimentarsi a interpretare protocolli, e quant’altro, dovrebbe come minimo dare un’occhiata a questo firmware. davvero bello… poi magari è possibile che non permetta di fare tutte le cose che si fanno da usb, ma per molti problemi è la soluzione più facile
qualcuno sa come è fatta l’architettura di una fotocamera? ..mi è salita la curiosità…
in effetti è una bella domanda, per la logica tutto standard: processore specifico per macchine fotografiche, memoria, bus, solita solfa. La parte interessante è l’ottica… attualmente ci sono parecchie novità che escono fuori come funghi. Non è per fare pubblicità, ma seguo quotidianamente il feed RSS di hardware upgrade, danno sempre una bella panoramica delle novità
La parte più interessante del progetto viene dopo secondo me. E riguarda il fatto di controllare, con arduino e magari, lo zigbee, la fotocamera da remoto. Connetterla tramite usb è difficoltoso ma direi che le applicazioni pratiche sono ridotte. Avere un controllo wireless è decisamente più complesso, e non può essere separato dal precedente controllo con usb, ma è decisamente più utile, dato che permette di usarla la macchina da remoto..
E qui si aprono un migliaio di utilizzi pratici =)
Certo che, con questo arduino si fa davvero di tutto..
Definire il progetto presentato nell’articolo interessante sarebbe riduttivo! Innanzitutto ignoravo l’esistenza del protocollo PTP con il quale è possibile interfacciarsi ad una fotocamera digitale tramite porta USB e tramite il quale è possibile riuscire ad impartire alla medesima fotocamera digitale una serie di comandi o controlli utili per il funzionamento della stessa. Può sembrare un qualcosa di difficilmente realizzabile, ma da quanto si è potuto evincere dall’articolo, anche questa volta Arduino ce l’ha fatta nell’impresa di servirsi come hardware in supporto dell’intera realizzazione del progetto. Non ho ancora consultato il protocollo e non so benissimo in cosa consiste, ma trattandosi di un protocollo di comunicazione può andare dalla semplice sequenza dei comandi in chiaro ad un qualcosa di più complesso come l’aggiunta di algoritmi di cifratura (anche se non ne vedrei la necessità) o di controllo di integrità del dato trasmesso(CRC o checksum). Sicuramente un’applicazione di questo tipo può tornare utilissima se corrediamo il nostro progetto di un ricevitore radio (xbee, ad esempio) riuscendo a gestire a la nostra fotocamera tramite un’altra scheda simile ad un telecomando o un controller. Potrebbe essere questa una bellissima uitlity di cui i fotografi potrebbero non farne a meno (si pensi ad esempio ai servizi fotografici complessi in cui è necessario scattare foto del medesimo soggetto in contemporanea è da angolazioni differenti). Un’altra applicazione interessante potrebbe vedere il progetto dell’articolo collocato in contesti di gare sportive, dove ad esempio una fotocamera digitale è chiamata scattare una foto dell’atleta mentre si ritrova a tagliare traguardo. Anche in questo caso non sarebbe necessario un sistema wireless ma basterebbe semplicemente un sensore di pressione posto sotto il tappeto in corrispondenza del traguardo oppure una fotocellula posizionata nel medesimo punto. Insomma, anche se questo applicativo non dovesse avere dei riscontri di interesse nella vita quotidiana, è comunque un buon esempio di programmazione e gestione di un protocollo di comunicazione seriale tramite Arduino. Da ingegneri non si sa mai cosa, nel nostro seguito lavorativo, ci può essere commissionato come progetto, e sapere di tutto e di più sulla tecnologia che ci pervade penso che sia una forma di maturità professionale oltre che di profonda passione.
Quello che non ho capito leggendo l’articolo è se la comunicazione USB utile ad Arduino ad interfacciarsi alla fotocamera sia quella nativa della scheda oppure, come si osserva dalla foto, è necessario utilizzare una shield apposita. Sicuramente la prima ipotesi la vedo quasi errata perché mi sembra strano che si possa creare un ponte tra fotocamera e Arduino tramite un FTDI. La seconda ipotesi, al contrario, mi sembrerebbe la più plausibile.
Concludo il commento dicendo che all’inizio che ho avuto tra le mani Arduino mi sono chiesto cosa si poteva arrivare a realizzare con un hardware didattico (lo vedevo didattico) come quello…ne sottovalutavo le capacità e alla fine mi sono dovuto ricredere. È tutt’altro che didattico, ha un carattere sicuramente professionale data la moltitudine di applicazioni che si riescono a realizzare con questa schedina di progettazione italiana. Dobbiamo essere fieri, almeno per questo, di disporre in Italia di menti che riescono a portare il nome del nostro Stato in tutto il mondo.
Molto interessante questo progetto
Ah ok, ritiro il dubbio che io stesso avevo avanzato…mi ero concentrato così tanto sull’idea di poter creare un’interfacciamento software via USB tra Arduino e la mia fotocamera digitale (mentre leggevo proiettavo la mia idea verso un progetto da realizzare immediatamente) e non mi sono accorto che già nel titolo è riportato che è necessario utilizzare una shield apposita…eliminati tutti i dubbi! 😉
La mia fidanzata è un’appassionata di foto ai livelli assurdi, mentre l’elettronica non la entusiasma come fa con me. Appena le ho detto che con Arduino (sa di cosa si tratta perchè dopo aver vinto Arduino2009 con il concorso di febbraio, le ho fatto una testa così su quelle che possono essere le potenzialità di questa scheda…)si può realizzare un controllo automatico della propria macchina fotografica mi ha pregato subito di realizzarle il progetto…poi le ho detto che potrebbe gestire la fotocamera a distanza per la gioia sua e delle sue amiche che amano farsi gli autoscatti, e ancora una volta, con voce più convincente e implorante mi ripete: “ti prego, lo voglio assulatamente!”…cosa bisogna fare per amore!!! 😀
Per chi volesse avere un’idea di quali possano essere delle possibili altre realizzazioni di progetto, consiglio di visionare il seguente link:
http://www.circuitsathome.com/
ne dubito fortemente, i diversi produttori, non so perchè ma sono molto difficili nel mettere degli standard di comunicazione comuni sui loro dispositivi
scusa, ma non è più facile a questo punto usare una telecamera ad ip con un web server integrato, che inoltr è controllabile a distanza anche quando non sei a casa?
La parte fondamentale in una macchina fotografica digitale è il sensore che trasforma la luce in segnali elettrici.
Il sensore è un rettangolo di materiale siliceo con tante file di minuscoli elementi sensibili. Le file sono collocate una accanto all’altra per formare formare un reticolo di punti sensibili, esattamente come una scacchiera per i giochi. Il numero di elementi sensibili che si trova sulla fila, moltiplicato per il numero delle file esistenti, fornisce il famoso valore dei mega pixel tanto amati, infatti, quella sui megapixel sembra essere davvero la domanda di fondo prima di ogni acquisto di fotocamera digitale: quanti mega pixel? Anche se in realtà molti non ne capiscono il significato.
Al momento attuale tutte le case produttrici di macchine fotografiche digitali, dal punto di vista dei sensori, sembrano aver ormai diviso il mercato in due aree principali: quella del sensore pieno, con un formato di 24 per 36 mm, e quella del sensore più piccolo (che viene detto formato APS), che misura circa 23 per 15 mm (delle misure non sono sicuro ^_^)
La differenza principale per gli utilizzatori delle fotocamere risiede nel fatto che il cosiddetto sensore pieno non va a modificare la lunghezza focale degli obiettivi utilizzati, mentre l’APS la aumenta di circa un 50%. Questo discorso vale ovviamente solo per le fotocamere reflex e non ha invece alcuna rilevanza per le compatte.
Che significa affermare che un sensore APS modifica la focale di un obiettivo? Se utilizzate un 50mm su una fotocamera reflex digitale con sensore pieno (ossia un sensore grande come la pellicola) esso resterà un 50mm. La porzione di realtà che vedreste usandolo su una normale reflex a pellicola è esattamente quella che vedrete usandolo su una fotocamera reflex digitale a sensore pieno.
è un progetto molto interessante, insomma un controllo di una fotocamera direttamente dall’usb non si era mai fatto, ma credo che comunque di Arduino se ne potrebbe fare un utilizzo migliore, insomma l’autoscatto ormai è implementato in tutte le fotocamere digitali moderne, a che scopo fare un temporizzatore con Arduino, Il controllo a distanza, per fare cosa la foto con il telecomando?!, o anche il controllo tramite rete, sinceramente farei prima a comprare una telecamera ad ip e controllarla tramite rete, che mi assicura anche un controllo da un altra parte del mondo. è bello il fatto che si possono creare dei mezzi di comunicazione con i dispositivi che usiamo tutti i giorni dandogli dei semplici comandi, ma credo che sia uno spreco mettere un Arduino al controllo di una semplice fotocamera per un autoscatto.
Trovo molto interessante questo progetto per chi impiega una scheda aggiuntiva sua Arduino che permette di essere anche USB Host a differenza di essere solo cliente come siano abituato a vedere , questo potrebbe essere interessante per sviluppare la comunicazione tra due schede Arduino usando come via il cavo USB , o per memorizzare dati su una chiavetta USB che potrebbero provenire da sensori ,
L’ articoloio trovo abbastanza interessante soprattutto alla possibilità di controllare una fotocamera attraverso la sua Porta USB era una cosa che non sapevo che era possibile , Una cosa interessantesarebbe di sapere se è possibile da questa comunicazione estrarre il contatto del flash , perché spesso volentieri le macchine moderne non hanno la possibilità di connettere un flash esterno in certe situazioni sarebbe necessario averne uno visto che quelli montati sono piccoli .
ma comunque sia uno dei problemi fondamentali e che tutti fabbricanti non vogliono mettersi d’accordo sul protocollo da impiegare visto questo problema il progetto può diventare velocemente irrealizzabile per tutte le macchine fotografiche del mercato ,
semplicemente perché essendo Arduino dotato di una quantità esigua di memoria è non può contenere tutte le specifiche dei protocolli delle macchine fotografiche del mercato .
sono d’accordo con tutto, vorrei solo precisare quanto hai detto riguardo il fatto che la porta usb non è mai stata utilizzata per controllare le fotocamere.
Un pò di anni fa, quando ancora utilizzavo windows, c’era un programmino della canon che gestiva la fotocamera e permetteva anche di comandare lo scatto tramite usb. In realtà non credo sia una gran cosa, tant’è vero che praticamente nessuno si mette a dare comandi tramite usb a una macchina fotografica… Gli unici casi in cui potrebbe fare comodo è per automatizzare lo scatto in modo da reagire a un certo evento… mi spiego meglio: i fotografi che devono fotografare i fulmini posizionano un rilevatore di luce, e fanno in modo da cominicare alla macchina fotografica di scattare non appena arriva il bagliore di un fulmine.
oppure le tipiche foto scattate dai fotografi per immortalare un particolare movimento di un animale (ho visto farlo ad un’amica veterinaria con attrezzatura che a suo dire verrebbe a costare anche cenetinaia e centinaia di euro, quando con questo circuito e un sensore ad effetto PIR, ad esempio, avrebbe risolto il problema con una semplice fotocamera digitale commerciale…no chiedetemi quale sia lo scopo del fotografare un’aquila, ad esempio, mentre apre le ali o un falco che sta per spiccare il volo…) oppure in ambito sportivo, per fotografare l’arrivo dell’atleta non appena taglia il traguardo…insomma, con un pò di fantasia le applicazioni escono di certo, bisogna solo pensarci…magari, per un qualcosa che a noi può sembrare stupido,con un circuito munito di Arduino si arriva a risparmiare un bel pò di quattrini
puo esser possibile o no pero e una buona idea
Ma i link dove li trovo ?
https://www.circuitsathome.com/camera-control/digital-camera-control-using-arduino-usb-host-shield-part-1-basics
https://github.com/felis/Arduino_Camera_Control