Browse Month: May 2012

Canon DSLR – daljinski (Android) okidač – Aplikacija

Kao što objasnih u ovom blogu, na izlaz stereo priključka je potrebno emitovati ton, a to će, ukoliko je fotoaparat povezan na telefon preko interfejsa, uzrokovati fokusiranje odnosno okidanje, u zavisnosti na koji kanal smo emitovali ton. Za generisanje tona, modifikovao sam i koristio klasu sa ove stranice: stackoverflow.com/ques…bud-left-or-right. Pomoću nje se može lako generisati pravougaoni signal određene frekvencije i dužine trajanja. Modifikovana verzija klase je ispod.
<.blockquote>

import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;

public class ToneGen {

    AudioTrack aTrack;
    byte[] buffer;
    int fps = 16000;
    int samplesPerFrame = 4;

    /**
    *@param frequency The frequency of the tone
    */    
    public ToneGen(int frequency)  {
        buffer = new byte[fps];
        int T = (int) fps / frequency ;
        int To2 = (int) T / 2;
        for ( int i=0; i<buffer.length; i+=T ) {
            for (int j = 0; j < To2; j++)
            {
                buffer[i+j] = (byte) 127;
                buffer[i+j+To2] = (byte) -127;
            }
        }
    }

    /*
    * @param duration Duration of sound in seconds
    * @param leftVolume Left volume 0.0f - silent, 1.0f full volume
    * @param rightVolume Right volume 0.0f - silent, 1.0f full volume
    */
    public void Play(float duration, float leftVolume, float rightVolume) throws Exception {
        int u = 1;
        if (duration < 1) {
            u = Math.round(1 / duration);
            if (u != 2 && u != 4 && u != 8 && u != 16 && u != 32 && u != 64 && u != 128) throw new Exception("Invalid exposure");
        }
        aTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
             fps/samplesPerFrame, AudioFormat.CHANNEL_OUT_STEREO,
             AudioFormat.ENCODING_PCM_16BIT,
             buffer.length/u, AudioTrack.MODE_STATIC);
        if (duration > 1) 
            aTrack.setLoopPoints(0, fps/samplesPerFrame, Math.round(duration)-1);

            aTrack.write(buffer, 0, buffer.length);
            aTrack.setStereoVolume(leftVolume, rightVolume);
            aTrack.play();                
    }

    public void Stop(){
        aTrack.stop();
    }

}

.
Klasu koristite tako što konstruktoru prosledite željen frekvenciju tona koji želite da generišete. Ja sam koristio frekvenciju od 500Hz i sa tim parametrima je interfejs opisan u prethodnom blogu radio kako treba. Kada želite da emitujete ton, potrebno je da pozovete metodu Play(). Njoj prosleđujete dužinu trajanja tona u sekundama i jačinu zvuka za levi odnosno desni kanal. Primer:
.

ToneGen tg = new ToneGen(500);
try { tg.Play(5.0f, 0.0f, 1.0f); } catch (Exception e) {}

.
Ovako pzvana metoda Play() će emitovati zvuk od 500Hz, trajanja pet sekundi, samo na desni kanal stereo priključka. To će prouzrokovati da, kada je aparat preko interfejsa povezan na telefon, aparat fokusira 🙂

Ukoliko želite da ekspozicija traje manje od jedne sekunde, potrebno je da emitujete ton kraći od jedne sekunde. Takav ton možete da generišete na sledeći način:

.

ToneGen tg = new ToneGen(500);
try { tg.Play(0.125f, 0.0f, 1.0f); } catch (Exception e) {}

.

Važno je da dužina trajanja tona koji želite da emitujete (dužina ekspozicije) bude jedna od sledećih vrednosti: 1/2, 1/4, 1/8, 1/16, 1/32, 1/64 ili 1/128 u decimalnom zapisu.

NAPOMENA: Canon fotoaparati, kada se fotografiše u BULB modu, u EXIF podacima dužine ekspozicije koje su manje od jedne sekunde zaokružuju na jednu sekundu!

Navigacija: Ideja Planiranje / Interfejs / [ Aplikacija ] / Praksa

Canon DSLR – daljinski (Android) okidač – Interfejs

U predhodnom blogu sam se potrudio da na što jednostavniji način objasnim kako uređaj treba da funkcioniše i šta je primarna namena aplikacije koju pišemo za Android. Ovde su predstavljena neka od mogućih rešenja.

Interfejs

Na Wikipediji sam našao podatke o amplitudi izlaznog napona stereo priključka i ona iznosi ~2.2V. Signal na izlazu je naizmeničan, pa pomoću diode izdvajamo samo pozitivne delove signala. Treba obratiti pažnju da dioda stvara pad napona od 0.7V koliko joj je potrebno da provede signal. Sada nakon diode imamo (maksimum) 1.5V i to samo u trenucima kada ja signal na izlazu pozitivan i veći od 0.7V. Postavljanjem kondenzatora, signal ćemo ispeglati, pa sada nakon kondenzatora, imamo „koliko-toliko“ stabilan napon. Takav napon možemo iskoristiti kao pobudu za tranzistor koji ćemo spojiti da radi kao prekidač.

Kompletna šema okidaca
Kompletna šema

Vrednosti za komponente su date u sledećoj tabeli:

Naziv Oznaka Vrednost
Dioda D 1N4104
Kondenzator C  60µF, 50V
Otpornik R 1kΩ
Tranzistor T BC550
TRS, u telefon K1 3.5mm
TRS, u aparat K2 2.5mm

.

Date vrednosti su okvirne, tako da ukoliko ne možete da nađete diodu 1N4104, posao će raditi i 1N4148. Prodavac će vam sigurno pomoći prilikom određivanja zamene za problematičnu komponentu.

NAPOMENA: Ovo nije najjednostavniji interfejs koji možete napraviti, a da funkcioniše. Ovo je školski primer, koji je napravljen uz pomoć znanja. U praksi će verovatno sasvim OK raditi i neka od sledećih varijanti:

Šema bez kondenzatora
Šema bez kondenzatora

Šema bez diode
Šema bez diode

Šema bez otpornika
Šema bez otpornika

* Sebi lično sam napravio interfejs po šemi bez kondenzatora i radi kako treba 🙂

Navigacija: Ideja Planiranje / Interfejs ] / Aplikacija Praksa

Canon DSLR – daljinski (Android) okidač – Planiranje

Potrebno je napraviti interfejs preko kojeg će telefon i fotoaparat biti povezani. Na određenu komandu telefona, interfejs će odreagovati tako što će fotoaparatu poslati komandu za fokusiranje odnostno okidanje. Pošto je korišćenje USB porta na telefonu suviše komplikovano (a pritom nam nisu potrebne mogućnosti koje pruža), odlučio sam da iskoristim stereo izlaz za slušalice.

Male napomene:

  • Priključak na telefonu za slušalice je obično stereo priključak odnosno TRS koenktor dimenzija 3.5mm;
  • Priključak na Canon dSLR fotoaparatima (350D,400D, 40D…) je takođe TRS konektor, ali manjih dimenzija – 2.5mm;
  • Kako ručno kontrolisati fotoaparat preko TRS konektora, možete videti ovde.

Evo jedno šturo objašnjenje kako ovo treba da funkcioniše:

Kada se na telefonu pusti neki ton, na izlazu stereo priključka se javlja određeni signal. Nama treba elektronsko kolo, koje će za neki signal na svom ulazu, napraviti kratak spoj na svom izlazu. Tako postižemo da se kolo ponaša kao prekidač koji kontrolišemo pobudnim signalom. Ako prekidače A i B (iz prethodnog bloga) zamenimo takvim kolima (nazovimo ih sada kA i kB), aparat će kontrolisati signali koje dovedemo ulaz ta dva kola. Pošto imamo levi i desni kanal na stereo priključku, svakom dodelimo po jedno kolo: desni kanal ->kolo kA (fokusiranje), levi kanal -> kolo kB (okidanje). Na taj način, ukoliko na telefonu pustimo ton koji se emituje samo na desnom kanalu, fotoaparat će fokusirati 🙂

Pored interfejsa, potrebno je napisati i aplikaciju za Android, koja će emitovati ton određene frekvencije na levi odnosno desni kanal stereo izlaza. Aplikacija treba da podržava više načina funkcionisanja, za rasličite potrebe: HDR fotografija (tri ili više različitih ekspozicija), Time-Lapse (više istih ekspozicija, sa određenim vremenskim razmakom), Shoot OnTime (okidanje u datom trenutku), a takođe se može napraviti da aplikacija reaguje na spoljnje događaje, koji se mogu meriti sa nekim od ugrađenih senzora u telefonu (promena intenziteta zvuka/svetla u okolini, promena položaja telefona, osetljivost na vibracije itd.).

Navigacija: Ideja / [ Planiranje ] / Interfejs Aplikacija Praksa

Analogna fotografija?

Ako devojke mogu da izvlace stare krpice iz maminih ormana i od toga prave modu, mozemo i mi geekovi da izvucemo nesto staro sa tatine police. Proslog leta sam tako naleteo na zbirku tatinih starih fotoaparata: Zenit, beirette i Smena 8.

Zenit, beirette, Smena 8
Stari analogni fotoaparati Zenit, beirette i Smena 8

Nije da ranije nisam znao da ti aparati postoje u nasoj kuci, ali mi nikada nije palo na pamet da ih iskoristim. Nego, bas kada sam naleteo na te stvarcice, ja sam se ustvari pakovao na put. I sto da ne? Ponecu jedan sa sobom, pa ajd da vidimo sta moze da uradi 😉

Poneo sam Zenit sa sobom, iz razloga sto je jedini koji je imao ugradjen svetlomer. To mi je dosta pomoglo, jer nikada ranije nisam morao da razmisljam ‘toliko’ o ekspoziciji i blendi, na raspolaganju imam samo 36 fotografija i rezultat cu videti tek kada razvijem film 😛

Nego evo kako su ‘ispale’ fotografije:

NationDeejays, Limun
Limun

Pas, Crna Gora, Ozrinici
Pas

sestrin mali :)
Ilija

Pogledaj ostale fotografije

Sto se mene tice, ove fotografije imaju mnogo vise ‘duse’ od mnogih drugih koje sam napravio. Znatno vise razmisljanja i truda ulozeno u svaku od njih, pa su mi valjda zbog toga i draze.

Na kraju, pokusajte i Vi. Vredi probati 😉

Canon DSLR – daljinski (Android) okidač – Ideja

Ideja. Rodi se baš kada treba da spavam, a ujutru treba rano da ustanem. Elem, ideja je da pomoću telefona koji pokreće Android OS, kontrolišem okidanje Canon dSLR fotoaparata. Nekada je potrebno napraviti ekspozicije mnogo duže od 30 sekundi, a BULB mod okidanja na fotoaparatu mi baš ne pomaže kada dugme za okidanje (shutter button) moram da držim rukom.

Pravio sam ranije neka jednostavnija rešenja, što bi rekli čista mehanika, koja mi služe i danas, ali želim nešto bolje, nešto što će mi pružiti više mogućnosti. Nešto što će barem donekle nadoknaditi moj nedostatak talenta za fotografiju 😛

To ranije rešenje je izgledalo ovako:

Daljinski okidač za Canon dSLR
Šema TRS konektora kao daljinskog okidača za Canon dSLR fotoaparate

Kada se strujno kolo zatvori preko prekidača A, aparat fokusira. Prekidač B sluzi za ‘okidanje’.

E sada, kada se to zakomplikuje uz malo elektronike, verujem da se fokusiranje i okidanje može kontrolisati pomoću telefona. Na taj način više ne bi bilo potrebno meriti vreme ekspozicije pomocu štoperice, a snimanje Time-Lapse fotografija bi bilo znatno olakšano.

Eto toliko za sada, čisto da mogu na miru da zaspim. Više o ovom projektu u narednom postu 😉

Navigacija: [ Ideja / Planiranje / Interfejs / Aplikacija / Praksa