micro:bit DSLR remote control
Régóta vonz a fotózás de a tükörreflexes gépek világába csak nemrég csöppentem bele. Hamar rájöttem, hogy a tökéletes fotó elkészítéséhez a természet adta lehetőségeken, egy jó kompozíción és állványon kívül szükségem lesz egy távkioldóra is. Természetesen alkalmazható a fényképezőgép beépített időzítője is, amelyet magam is sokat használtam mielőtt beruháztam volna egy vezetékes DSLR kontrollerre.
Az általam használt váz: Olympus E520
Távkioldóhoz használt interface: RM-UC1
Pár hónapja megszületett az elhatározás és beruháztam egy vezetékes kontrollerre, amely JJC SO2 névre hallgat, és nem tud mást csupán az alap funkciókat: fókuszálás és exponálás vezérlése.
Már kisgyerekként is érdekelt az, ami a motorháztető alatt rejtőzködik, így a vásárlás után 1 nappal már szét is szedtem az eszközt és meglepődve tapasztaltam, hogy egy faék egyszerű szerkezettel állok szembe.
Az RM-UC1-es kommunikáció 3 vezetékből áll:
- Váz földelése
- fókusz kivezetése (kb 1.3 V-on lebeg)
- exponálás kivezetése (kb 1.3 V-on lebeg)
A rendszer működése a következő:
1. Fókusz kivezetés leföldelése esetén a gép elkezdi a fókuszálást (manuális fókusz esetén természetesen semmit sem csinál).
2. Ha a fókusz kivezetés le van földelve és az exponálás kivezetést is leföldeljük, a gép egészen addig készíti a képeket, amíg ez az állapot fennáll (a fókusz leföldelése akkor is feltétel, ha a gép manuális fókuszra van állítva). Akár az exponálás, akár a fókuszálás elengedése esetén az adott kivezetés újra az eredeti lebegő 1.3 V-os feszültségre kerül, a gép felfüggeszti a képek készítését (célom a teljes default állapot elérése volt: mindkét kivezetést egyszerre engedem el, hogy visszanyerjék a kiinduló 1.3 V-os feszültségüket). Maga a gyári távvezérlő is ezen az elven működik, tehát először a fókuszáló lapkát érintjük a földeléshez, majd az exponálást:
A képen a legfelső lemez a földelés. Ha a gombot lenyomjuk az első ütközésig, akkor a fókuszt vezérlő lemezhez ér hozzá, ha a második kattanásig nyomjuk, akkor a leföldelt fókusz hozzáér az exponáló lemezhez, leföldelve ezzel mindkét vezetéket. Elengedés esetén természetsen fordított sorrendben áll vissza mindkét vezeték az eredeti 1.3 V-os feszültségre.
Ezt a funkcionalitást micro:bit segítségével is könnyen megvalósíthatjuk. Ez azonban számomra nem volt elég. Elhatároztam, hogy a micro:bit-et Bluetooth-on keresztül egy okostelefonnal fogom vezérelni, miközben az megvalósítja a DSLR távirányítót. Ezzel a megoldással kapásból egy tetszőlegesen programozható vezeték nélküli távkioldót kapok.
A vezérlő kábel távirányítóhoz kapcsolódó része egy 2.5mm-es jack csatlakozó. Sajnos 2.5 mm-es lengő csatlakozót sehol sem kaptam, ezért egy 2.5mm -3.5mm JACK átalakítóval kötöttem egy lengő 3.5mm-es csatlakozóra, amelynek a kivezetéseit közvetlenül a micro:bit-re forrasztottam.
A rendszerterv:
- micro:bit P0 - fókusz vezérlése
- micro:bit P1 - exponálás vezérlése
- Bluetooth-on átküldött "0" -> fókuszálás aktiválása
- Bluetooth-on átküldött "1" -> exponálás abban az esetben ha a fókuszálás már aktív
- Bluetooth-on átküldött "2" -> fókuszálás és exponálás addig, míg egy újabb parancs nem érkezik (sorozatfelvétel készítése a STOP feltételig).
- a micro:bit jelezze, ha a telefon sikeresen kapcsolódott hozzá Bluetooth-on
- a micro:bit jelezze, ha a telefon sikeresen lekapcsolódott róla
Az elkészített JACK csatlakozás:
A megvalósított szoftver BlockEditor segítségével:
A szoftver induláskor a P0 és P1 pinek le/felhúzó ellenállását kikapcsolja. Erre azért van szükség, mert a fókusz és az exponáló lábakat a leföldelés után el kell engedni, különben a gép a végtelenségig készíti a képeket ha a lehúzó ellenállás aktív. Amennyiben a felhúzó ellenállás aktív - a lebegő 1.3 V helyett a micro:bit tápfeszültséget kapcsolja a kivezetésekre, ami 3.3 V. Ez az érték zavart okozhat a gép működésében.
Engedélyezni kell a bluetooth uart szolgáltatást, hiszen az okostelefonon egy egyszerű bluetooth-uart terminált fogunk futtatni a parancsok küldésekor. Meg kell hívni a bluetooth advertise UID brick-et, így a micro:bit elkezdi hirdetni magát induláskor Bluetooth-on. Ez ahhoz kell, hogy a telefon lássa az eszközt.
Ha nem kapcsolódott a micro:bithez senki, akkor ezt egy négyzet kirajzolásával jelezzük.
Ha az okostelefon sikeresen kapcsolódott a micro:bit-hez, kirajzol egy kitöltött négyzetet.
A Bluetooth kapcsolat megszakadása, vagy tudatos lecsatlakozás esetén az eredeti ábrát rajzolja ki a micro:bit.
A P0 és P1 kivezetésekre véletlenül kapcsolt tápfeszültséget 100ms-enként leválasztja ha nem tudatos digital vagy analog write segítségével húztuk az adott lábat tápfeszültségre.
Minden Bluetooth-on átküldött parancs végét sortöréssel jelezzük. Figyelni kell arra is, hogy az érkezett üzenet egy karakter, amit logikai felhasználás előtt integer típusra kell castolni (parse to integer).
Ha "0" karakter érkezett: aktiváljuk a fókuszt.
Ha "1" karakter érkezett és a fókusz már aktív - exponálunk.
Ha a fókusz aktív, de nem "1" érkezett - a parancs értelmezhetetlen.
Ha "2" érkezett, aktiváljuk a fókuszt és az exponálást is (ez a mód kezeli a sorozatkészítést).
Ha értelmezhetetlen parancs érkezett - IDLE állapotba állítjuk a DSLR_state változót.
500us várakozás. Ez elegendő ahhoz, hogy a fókusz és az exponálás aktiválása után a gép érzékelje a P0 és P1 földelését, de nem túl sok ahhoz, hogy többször is képet készítsen (ez a késleltetés erősen gépfüggő).
Ha letelt az 500us és a DSLR_state 0-ba állításával jeleztük, hogy IDLE állapotot kérünk - elengedjük a P0 és P1 kivezetések földelését, hogy azok újra az 1.3V-os feszültséget vehessék fel.
FIGYELEM! A "2"-es parancs elküldésekor látható, hogy az állapotgép DSLR_state = 2 lesz. Ez biztosítja azt, hogy az utolsó, P0 és P1 kivezetéseket elengedő "if" feltétele nem teljesül. Egy újbóli "2" érkezésekor viszont a DSLR_state = 0 kerül beállításra. Ezzel a megoldással biztosítja a szoftver a folyamatos képkészítést a 2 db "2"-es parancs között!
FONTOS! A micro:bit-en lévő Nordic chip bluetooth-uart szolgáltatását elég nehéz beüzemelni a default "párosítás" opcióval, ezért a legegyszerűbb, ha ezt kikapcsoljuk:
Link a publikált BlockEditor projekthez:
Android applikáció:
Serial Bluetooth Terminal-t javaslom, de működik a micro:bit UART Terminal nevű applikációval is! Kapcsolódás a micro:bit-hez Bluetooth-on a Serial Bluetooth Terminalt használva.
Parancsok tesztelése:
"0" - fókuszálás aktiválása
"1" - exponálás aktiválása
majd 500 us elteltével DSLR IDLE állítása.
"2" parancs küldése
- fókuszálás
- exponálás
- ismétlés egészen addig, míg újabb "2" nem érkezik.
Új "2" parancs hatására DSLR IDLE állítása.
"5" parancs küldése:
- nem implementált, ismeretlen parancs, hibaüzenet fogadása a micro:bit-től:
- "DSLR unknown command"
!FIGYELEM! A tükörreflexes gépek eltérő interface-t használnak a távkioldókhoz. Mielőtt megépíted a részletezett projektet - informálódj, nézd meg, hogy a te géped milyen csatlakozást igényel. Csak ennek tudatában kapcsolj a fényképeződre bármilyen áramkört!