Controllare una fotocamera digitale utilizzando un Arduino USB Host Shield

Arduino USB Host Shield

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

21 Comments

  1. samusamu 5 giugno 2011
  2. Francesco12-92 30 marzo 2011
  3. Francesco12-92 30 marzo 2011
  4. Francesco12-92 30 marzo 2011
  5. Francesco12-92 30 marzo 2011
  6. Fabrizio87 30 marzo 2011
  7. Giovanni Giomini Figliozzi 30 marzo 2011
  8. Alex87ai 30 marzo 2011
  9. pinkchow 29 marzo 2011
  10. linus 29 marzo 2011
  11. piosa 29 marzo 2011
  12. Casciana17 29 marzo 2011
  13. Giovanni Giomini Figliozzi 29 marzo 2011
  14. Antonio Mangiardi 29 marzo 2011
  15. Giovanni Giomini Figliozzi 29 marzo 2011
  16. FlyTeo 29 marzo 2011
  17. Alex87ai 29 marzo 2011
  18. Andres Reyes 29 marzo 2011
  19. Alex87ai 29 marzo 2011
  20. Alex87ai 29 marzo 2011
  21. Alex87ai 29 marzo 2011

Leave a Reply