Home
Accesso / Registrazione
 di 

Remote Shooter BT 1.0: Controllo Bluetooth di macchine fotografiche per Android

main foto2

Dopo la realizzazione di Remote Shooter 1.0, la soluzione per il controllo remoto dello scatto di macchine fotografiche digitali con funzioni di Time Lapse e ad eventi, trasferiamo l'interfaccia grafica e le sue funzioni su dispositivi Android utilizzando App Inventor.

L'idea nasce dalla curiosità di sperimentare su Android con App Inventor e dalla necessità pratica di espandere l'interfaccia grafica del Remote Shooter 1.0 per rendere al contempo più semplice e rapido l'inserimento dei parametri di Time Lapse o di future funzioni allo studio.

Nel caso infatti sia necessario inserire grandi intervalli di tempo o numero di scatti, ci siamo resi conto che poteva essere complicato e forse anche tedioso, usare solo i tasti up/down sulla board.

Per chi non conoscesse il progetto Remote Shooter 1.0, è sostanzialmente un sofisticato telecomando per lo scatto remoto (ma non solo) di macchine fotografiche digitali tramite la porta USB, molti modelli infatti di compatte e  DSLR, Nikon e Canon ad esempio, sono compatibili in PTP mode con la scheda USB PIC-AP-BOARD (PIC Auto Programming Board) ed il firmware RemShoot 1.0 (Remote Shooter).
La possibilità di attivare remotamente molte funzioni (prima di tutto lo scatto) sulle macchine fotografiche digitali, rende possibile realizzare fotografie a volte impossibili o almeno difficili da realizzare con il metodo tradizionale a causa dei tempi di reazione umani.

Il protocollo PTP e applicazioni nella fotografia.

Gran parte delle macchine fotografiche digitali di fascia medio alta mettono a disposizione un set di comandi PTP per il loro controllo remoto, o semplicemente per il trasferimento delle immagini su un pc.

Utilizzando gli opportuni comandi e proprietà l’appassionato di fotografia potrà:

1) Remotizzare il pulsante di scatto (shutter),
2) Realizzare un Intervallometro (Time Lapse)
3) Scattare foto automatiche sulla base di eventi rilevati da sensori di luce e suono.
Fare scatti nel mondo della fotografia ad alta velocita’ (caduta di una goccia d’acqua o altro liquido, esplosioni di palloncini etc) o fare scatti a intervalli regolari (anche di molte ore) con la funzione Time Lapse (ad esempio per registrare lo sbocciare di un fiore o lo schiudersi di un uovo) e’ facilmente realizzabile abbinando a questo sistema opportuni sensori di movimento, luce o suono.

Per verificare se la tua fotocamera può essere controllata da RemShoot 1.0 o RemShoot BT 1.0 si consiglia di eseguire il test di compatibilità con l’applicazione per windows (XP e Seven):

http://goo.gl/2BVMg

Una volta effettuato il download estraete il file, lanciate l’eseguibile PTPControlCheck.exe e seguite le istruzioni.

Interessante caratteristica di RemShoot BT 1.0 è che Il firmware è aggiornabile tramite una chiavetta USB, altre funzioni potranno quindi essere aggiunte in futuro mediante aggiornamento del firmware che pubblicheremo sul sito.

Va evidenziato che molti comandi sono strettamente dipendenti dalle caratteristiche e dal subset di comandi specifici della propria fotocamera.

Riportiamo alcuni operation codes standard PTP, dove il comando 0x100E determina lo scatto di una foto.

/* Operation Codes */

#define PTP_OC_Undefined                0x1000
#define PTP_OC_GetDeviceInfo            0x1001
#define PTP_OC_OpenSession              0x1002
#define PTP_OC_CloseSession             0x1003
#define PTP_OC_GetStorageIDs            0x1004
#define PTP_OC_GetStorageInfo           0x1005
#define PTP_OC_GetNumObjects            0x1006
#define PTP_OC_GetObjectHandles         0x1007
#define PTP_OC_GetObjectInfo            0x1008
#define PTP_OC_GetObject                0x1009
#define PTP_OC_GetThumb                 0x100A
#define PTP_OC_DeleteObject             0x100B
#define PTP_OC_SendObjectInfo           0x100C
#define PTP_OC_SendObject               0x100D
#define PTP_OC_InitiateCapture          0x100E
#define PTP_OC_FormatStore              0x100F
#define PTP_OC_ResetDevice              0x1010
#define PTP_OC_SelfTest                 0x1011
#define PTP_OC_SetObjectProtection      0x1012
#define PTP_OC_PowerDown                0x1013
#define PTP_OC_GetDevicePropDesc        0x1014
#define PTP_OC_GetDevicePropValue       0x1015
#define PTP_OC_SetDevicePropValue       0x1016
#define PTP_OC_ResetDevicePropValue     0x1017

Il firmware Remshoot 1.0
RemShoot 1.0 gestisce lo scatto delle macchine fotografiche in due diverse modalità contemporaneamente utilizzabili:
   1) Tramite il protocollo PTP, utilizzando la connessione USB della fotocamera.
   2) Tramite porta di comando di un flash esterno. (consigliato uso della posa B e in ambiente oscurato)

Per scatti in alta velocità, per quanto veloce, il protocollo USB può in alcuni casi non essere  idoneo.
Le funzioni attualmente disponibili sono:
   1) Remotizzazione del pulsante di scatto (shutter),

Attenzione: il comando di scatto remoto utilizzato è quello previsto per il Generic PTP, utilizzato dalla gran parte delle macchine fotografiche DSLR e compatte che dichiarano di supportare il protocollo PTP ed il controllo remoto.

   2) Intervallometro (Time Lapse)
       Parametri:

  •     frequenza di scatto in secondi
  •     numero di scatti

   3) Scatto comandato da sensori di luce e suono in base ad eventi esterni.
       Parametri:

  •     sensore abilitato/disabilitato
  •     delay in microsecondi (necessario per poter sincronizzare al meglio lo scatto con la posizione dell'oggetto in movimento intercettato dai sensori utilizzati)

 

Il nuovo firmware Remshoot BT 1.0

RemShoot BT 1.0 è una evoluzione del precedente che sfruttando un modulo Bluetooth seriale (low cost) trasferisce il menu grafico su una app realizzata in OpenSource per Android, migliorandone radicalmente la usabilità.

Per mezzo di semplici comandi seriali appositamente implementati tra board e device Android si è di fatto svincolato il sottosistema di controllo PTP dall'interfaccia utente che era necessariamente limitata dall'uso di un piccolo display e 3 pulsanti.

Con App Inventor l'interfaccia grafica è ora modificabile da chiunque, così come sarà semplice aggiungere altre funzioni, correlare lo scatto di una foto con i sensori del dispositivo (accelerometro, GPS, bussola magnetica etc), comandi vocali o trigger esterni (es SMS, comandi da web etc), gettando così le basi per future implementazioni per tutte le esigenze, limitate solo dalla fantasia dello sviluppatore.

http://www.glptech.blogspot.it/Elenchiamo il set di comandi previsti per questa prima versione:

N.b: Tutti i comandi terminano sempre con un punto.

 

Comando                  Azione      
SHOOT.                    Scatto immediato

TIMERIP=nnnnn.       Setta numero di scatti da 1 a 32768
TIMERIP?.                Legge num scatti configurati
TIMEINT=nnnnn.       Setta secondi di intervallo tra ogni     scatto (da 1 a 32768)

TIMEINT?                  Legge i secondi di intervallo
ENTIMER=1.             Abilita Time Lapse

ENTIMER=0.             Disattiva Time Lapse
ENTIMER?.               Legge stato Time Lapse (attivo/disattivo  
DELAYSENS=nnnnn. Setta delay sensore in microsecondi (da 0 a 32768)
DELAYSENS?.          Legge valore delay impostato
ENSENS=1.              Abilita Sensore

ENSENS=0.              Disabilita Sensore
ENSENS?.                Legge stato sensore (attivo/Disattivo)

Il progetto software della APP è riassunto in questo schema (Block Editor) dove sono definite azioni, eventi e proprietà di ogni componente.

Per la gestione del client Bluetooth, l'app si basa su un template di uno sviluppatore  Mike Schoenborn che ha realizzato diversi progetti molto interessanti in connubio tra Android e Arduino.

 

Per dare l'idea della programmazione visuale a "Puzzle" di APP Inventor riporto il dettaglio della costruzione dei tre comandi che saranno inviati alla board al click del bottone associato, nell'ordine:

1)  Scatto immediato (SHOOT.)

2)  Impostazione intervallo (in secondi) tra uno scatto e l'altro nel Time Lapse (es TIMEINT=10.)

3)  Abilitazione sensore (ENSENS=1.)

 

 

Il Pannello di APP Inventor dove viene definito il design dell'app selezionando bottoni textbox etc dalla palette dei componenti a sx.

L'app è stata ottimizzata per schermi da 3"- 3,5" , testata su diversi device LG e Samsung e su un tablet Archos101.

Da notare che per un bug dello stack Bluetooth della Broadcomm, alcuni device come il Samsung Galaxy Ace non riconoscono il profilo BT SPP (Serial Port Profile), mappato su molte periferiche con COD (Class of Device  = 0×00), di conseguenza il modulo (con nome HC-05) non viene individuato e quindi neanche associato. Ho personalmente sperimentato una app gratuita (Bluetooth Class zero) reperibile sul Google Market che ne consente l'associazione e quindi l'utilizzo con la nostra app. 

 

L'hardware

 

Alla nostra USB PIC-AP-BOARD è stato collegato in seriale un modulo Bluetooth dual role Master/Slave alimentato a 3.3Volt. Il modulo scelto è molto economico (poco più di 5 euro su Ebay) ma estremamente potente, controllabile anche via I2C e USB ed ha una serie di pin di IO configurabili.

 

La PIC-AP-BOARD

 

Dettaglio del modulo BT, per il funzionamento sono richiesti solo 4 pin: 3.3Volt, GND, RX e TX. In basso il layout del modulo e la descrizione dei pin

 

 

 

 

 

 

 

 

Vista d'insieme dell'hardware.

 

 

Le specifiche del modulo Bluetooth

Bluetooth protocol    Bluetooth Specification v2.0+EDR
USB protocol         USB v1.1/2.0
Frequency        2.4GHz ISM band
Modulation       GFSK(Gaussian Frequency Shift Keying)
Transmit power         ≤4dBm, Class 2
Sensitivity            ≤-84dBm at 0.1% BER
Rate                  Asynchronous: 2.1Mbps(Max) / 160 kbps
                    Synchronous: 1Mbps/1Mbps
Security features         Authentication and encryption
Support profiles          Bluetooth serial port (master & slave)
Power Supply       +3.3VDC 50mA
Working temperature   –5 ~ +45 Centigrade

 

Alcuni esempi di scatti realizzati in combinazione con un modulo sensore suono con diversi valori del parametro delaysens.

      

 

Stiamo preparando una versione 2.0 del firmware Remshoot BT sulla PIC-AP-BOARD (sempre aggiornabile da key usb), con la quale si potranno inviare dalla app sviluppata a piacere, comandi sperimentali, leggere o settare proprietà PTP, in modo da rendere ancora più estese e creative le funzioni ed il controllo della macchina fotografica.

Riferimenti:

Remote Shooter 1.0: sistema di controllo remoto USB per macchine fotografiche

Controllare una fotocamera digitale tramite porta USB in modalità PTP 1/2

Controllare una fotocamera digitale tramite porta USB in modalità PTP 2/2

App Inventor for Android di Google Labs diventerà presto Open Source.

 

 

Il progetto software dell'app BT per Android che si interfaccia con la scheda PIC-AP-BOARD è stato realizzato da Telegiangi61 e Agosillo, e viene rilasciato in Open Source.

Per successivi approfondimenti o evoluzioni http://glptech.blogspot.it/

Per limiti di spazio, l'app è scaricabile da qui

o direttamente dal cellulare tramite il qrcode

 

 

 

 

 

 

I sorgenti della APP per le modifiche su App Inventor sono nella sezione allegato.

Il firmware Remshoot BT 1.0 sarà inviato a chi acquista la PIC-AP-BOARD.

AllegatoDimensione
BlueRemShootBT_1.zip39.55 KB
Manual(EN).pdf614.08 KB

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di Giusep

Veramente interessante.

Veramente interessante. Complimenti

ritratto di telegiangi61

Grazie

Grazie per il commento Giusep,

il progetto ha molte possibilità di evoluzione sia lato Interfaccia Android che lato core del firmware. In realtà con un sistema così modulare è possibile estendere il controllo remoto anche di altri sistemi, si può fare ad esempio domotica come illustrato in un altro progetto del contest molto interessante, sistemi di automazione, autenticazione, apertura porte e configurazioni wireless di centraline per svariati usi.

Tornando al campo della fotografia, le possibilità sono limitate solo dalla fantasia e dalla necessaria sperimentazione dei comandi compatibili sui diversi modelli e marche.

ritratto di raoul

richiesta

Ciao mi chiam o Raoul sono uno studente di ingegneria elettronica e sto facendo la mia tesi di bachelor.

Sono rimasto molto colpito da questo lavoro, e volevo choederti gentilmente se potresti mandarmi al mio indirizzo e-mail una foto migliore del programma che hai sviluppato in appinventor, poiché sto provando anche io ad interfacciarmi con un dispositivo bluetooth di mia creazione.

saresti molto gentile.

buona giornata

ritratto di Emanuele

Ciao Raoul, dovresti fare la

Ciao Raoul,
dovresti fare la registrazione al sito, così l'autore potrà contattarti direttamente senza visualizzazioni di email. Semmai avvisa con un commento. Grazie

ritratto di telegiangi61

Disponibile.

Ciao Raoul, contattami quando ti sei registrato, sono disponibile per fornirti le info richieste.

ritratto di Rabum21

UUID

Ho scaricato l'applicazione che hai creato con app inventor, e volevo chiederti che potevi spiegarmi cosa é UUID, quel codice che hai inverito da stringa numerica dove lo hai trovato?

ritratto di Rabum21

activity starter

Inoltre non riesco a capiere perché nel progetto hai incluso degli activity starter che da quello che vedo non vengono utilizzati?

ti ringraio anticipatamente per l'aiuto

ritratto di telegiangi61

UUID

Ciao Rabum21,

il codice UUID 00001101-0000-1000-8000-00805f9b34fb è il valore che nello stack Bluetooth per l'apertura di un socket rappresenta la "classe", o meglio il profilo BT, del device SPP (Serial Port Profile) cioè la seriale via BT che in questo caso viene utilizzata per la chat tra due apparati BT (il Remote Shooter e lo smartphone Android).

In realtà le uniche cifre che distinguono due profili di device sono solo le ultime 4 cifre del primo ottetto, ad esempio per gli auricolari BT UUID=00001108-0000-1000-8000-00805F9B34FB.

maggiori dettagli puoi trovarli qui:

http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html

http://en.wikipedia.org/wiki/Bluetooth_profile

http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Bth_FAQ....

Quanto all'uso dell'activity starter, io non lo uso, faceva parte del template di chat su BT dalla quale sono partito, credo si possano tranquillamente eliminare.

ritratto di Rabum21

UUID

Grazie mille per le informazioni che mi hai dato.

Un ultima domanda, io sto usando un modulo bluetooth della ditta BLUEGIGA, pensi che loro mi possono fornire UUID del dispositivo?

ritratto di Rabum21

UUID

scusami telegiangi61,
ma per utilizzare la tua applicazione devo avere i permessi di bluetooth sul mio cellulare? devo attivare il bluetooth esternamente all'app o posso semplicemente far partire lìapplicazio e cercare il dispositivo per connettermi?

grazie mille del tuo aiuto

ritratto di telegiangi61

Bluegiga

Ciao Rabum21, il codice UUID è abbastanza standard, come dicevo prima definisce il profilo SPP, se il modulo Bluegiga lo supporta (immagino proprio di si) usa quello presente nella mia app. La cosa più importante è che il modulo sia configurato come Slave (è il default su quello che uso io).

La comunicazione tra due device si ottiene quando un dispositivo (slave) instaura una trasmissione con un altro (detto master in quanto offre un servizio di comunicazione) secondo un determinato profilo.

A grandi linee le fasi sono:

1) Lo slave fa una ricerca dei dispositivi presenti nel suo raggio di azione (device discovering);
2) I dispositivi rilevati rispondono con il proprio indirizzo fisico (MAC address) a 6 byte;
3) Lo slave interroga il dispositivo selezionato per conoscere i suoi profili disponibili ( service discovering o SDP);
4) Il master fornirà i codici dei servizi per i quali è abilitato;
5) Lo slave chiede l’attivazione del collegamento dati relativo al servizio prescelto (qui usiamo SPP, se usassimo il profilo OBEX (object exchange) potremmo trasferire un file, immagina ad esempio una webcam che trasmetta una immagine via bluetooth.
6) Dopo aver instaurato la comunicazione con il profilo prescelto , si possono scambiare i dati.

Per l'associazione il procedimento è manuale ed esterno all'app, io ho attivato manualmente il Bluetooth e associato la prima volta il RemShoot BT. DA quel momento ogni volta che avvio l'app, vado su Find devices, seleziono il mio modulo e clicco su Connect BT per scatenare lo scambio di dati necessari ad instaurare la connessione in SPP.

ritratto di Ezio56

comandi aggiuntivi

e' possibile gestire completamente una macchina come la Nikon 600d unicamente con una scheda remote shooter, ad esempio aggiungendo altri comandi come l'accensione della macchina fotografica, dello start stop filmati, l'entrata dei menu ecc. ? e' indispensabile utilizzare il supporto dello smartfone?

ritratto di telegiangi61

Ciao Ezio56, tardo a risponderti perchè non ho trovato nessun ri

Ciao Ezio56, tardo a risponderti perchè non ho trovato nessun riferimento alla esistenza di una Nikon 600d, ti riferivi forse alla Canon EOS 600D?. Comunque in ogni caso in linea di massima, a patto di conoscere quelli specifici (che a parte un subset comune, spesso differiscono da macchina a macchina) la scheda Remote Shooter potrebbe impartire molti altri comandi. La nostra scelta di limitare (per ora) l'utilizzo al solo controllo dello scatto è perchè il sistema è in continuo sviluppo, l'obbiettivo primario del Remote Shooter è quello di offrire un sistema HW e SW che possa controllare il maggior numero di apparecchi fotografici, se poi ci fossero necessità specifiche si potrebbe approfondire il tema sviluppando comandi ad hoc in maniera verticale come quelli che tu citavi. Utilizzando solo 3 tasti ed un LCD a 2 righe x 8 caratteri, Il menu ed i comandi devono essere necessariamente limitati. Spostando l'interfaccia su uno Smartphone le possibilità di estendere il controllo con altri comandi è decisamente più facile e flessibile, customizzando così l'app per seguire le proprie esigenze. Nel prossimo periodo pensiamo appunto di rendere disponibili dei comandi generici che si possano integrare nell'app in modo che sia possibile costruirsi il proprio menu con i comandi specifici (una volta verificati) per la propria fotocamera. Ciao Ezio56, tardo a risponderti perchè non ho trovato nessun riferimento alla esistenza di una Nikon 600d, ti riferivi forse alla Canon EOS 600D?. Comunque in ogni caso in linea di massima, a patto di conoscere quelli specifici (che a parte un subset comune, spesso differiscono da macchina a macchina) la scheda Remote Shooter potrebbe impartire molti altri comandi. La nostra scelta di limitare (per ora) l'utilizzo al solo controllo dello scatto è perchè il sistema è in continuo sviluppo, l'obbiettivo primario del Remote Shooter è quello di offrire un sistema HW e SW che possa controllare il maggior numero di apparecchi fotografici, se poi ci fossero necessità specifiche si potrebbe approfondire il tema sviluppando comandi ad hoc in maniera verticale come quelli che tu citavi. Utilizzando solo 3 tasti ed un LCD a 2 righe x 8 caratteri, Il menu ed i comandi devono essere necessariamente limitati. Spostando l'interfaccia su uno Smartphone le possibilità di estendere il controllo con altri comandi è decisamente più facile e flessibile, customizzando così l'app per seguire le proprie esigenze. Nel prossimo periodo pensiamo appunto di rendere disponibili dei comandi generici che si possano integrare nell'app in modo che sia possibile costruirsi il proprio menu con i comandi specifici (una volta verificati) per la propria fotocamera. Ciao Ezio56, tardo a risponderti perchè non ho trovato nessun riferimento alla esistenza di una Nikon 600d, ti riferivi forse alla Canon EOS 600D?. Comunque in ogni caso in linea di massima, a patto di conoscere quelli specifici (che a parte un subset comune, spesso differiscono da macchina a macchina) la scheda Remote Shooter potrebbe impartire molti altri comandi. La nostra scelta di limitare (per ora) l'utilizzo al solo controllo dello scatto è perchè il sistema è in continuo sviluppo, l'obbiettivo primario del Remote Shooter è quello di offrire un sistema HW e SW che possa controllare il maggior numero di apparecchi fotografici, se poi ci fossero necessità specifiche si potrebbe approfondire il tema sviluppando comandi ad hoc in maniera verticale come quelli che tu citavi. Utilizzando solo 3 tasti ed un LCD a 2 righe x 8 caratteri, Il menu ed i comandi devono essere necessariamente limitati. Spostando l'interfaccia su uno Smartphone le possibilità di estendere il controllo con altri comandi è decisamente più facile e flessibile, customizzando così l'app per seguire le proprie esigenze. Nel prossimo periodo pensiamo appunto di rendere disponibili dei comandi generici che si possano integrare nell'app in modo che sia possibile costruirsi il proprio menu con i comandi specifici (una volta verificati) per la propria fotocamera. Ciao Ezio56, tardo a risponderti perchè non ho trovato nessun riferimento alla esistenza di una Nikon 600d, ti riferivi forse alla Canon EOS 600D?. Comunque in ogni caso in linea di massima, a patto di conoscere quelli specifici (che a parte un subset comune, spesso differiscono da macchina a macchina) la scheda Remote Shooter potrebbe impartire molti altri comandi. La nostra scelta di limitare (per ora) l'utilizzo al solo controllo dello scatto è perchè il sistema è in continuo sviluppo, l'obbiettivo primario del Remote Shooter è quello di offrire un sistema HW e SW che possa controllare il maggior numero di apparecchi fotografici, se poi ci fossero necessità specifiche si potrebbe approfondire il tema sviluppando comandi ad hoc in maniera verticale come quelli che tu citavi. Utilizzando solo 3 tasti ed un LCD a 2 righe x 8 caratteri, Il menu ed i comandi devono essere necessariamente limitati. Spostando l'interfaccia su uno Smartphone le possibilità di estendere il controllo con altri comandi è decisamente più facile e flessibile, customizzando così l'app per seguire le proprie esigenze. Nel prossimo periodo pensiamo appunto di rendere disponibili dei comandi generici che si possano integrare nell'app in modo che sia possibile costruirsi il proprio menu con i comandi specifici (una volta verificati) per la propria fotocamera. ⬇ Drag and drop your images here to upload them. Attach Connect withTwitter Facebook Google Disqus or pick a name: What's Disqus? DISQUS is a conversation networkDisqus never moderates or censors. The rules on this community are its own.Your email is safe with us. It's only used for moderation and optional notificationsDon't be a jerk or do anything illegal. Everything is easier that way.Read full terms & conditions Register with Disqus Use this to preserve your comment history and be notified of replies. PostNext

ritratto di telegiangi61

Aggiornamento versione 3.0

Un aggiornamento per chi avesse interesse sul progetto, visti i costi di sviluppo, da alcuni giorni stiamo promuovendo con una campagna di crowdfunding, su Indiegogo.com, la versione 3.0. Oltre al time-lapse, il controllo dei tempi, dell'apertura del diaframma e della sensibilità ISO, lo scatto a distanza sarà attivato anche sfruttando i sensori di uno smartphone android, ad esempio un suono captato dal suo microfono o il semplice scuotimento del cellulare rilevato dall'accelerometro.

Tutti i dettagli sul sito http://igg.me/at/remshoot30 o http://www.pic-ap-board.blogspot.it

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ultimi Commenti