MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Návrh riadiaceho systému časozberného zariadenia pre digitálne fotografické prístroje BAKALÁRSKA PRÁCA Martin Bokša Brno, jar 2016 Prehlásenie Prehlasujem, že táto bakalárska práca je mojím pôvodným autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj. Martin Bokša Vedúci práce: prof. Ing. Václav Přenosil, CSc. i Poďakovanie Moje poďakovanie patrí prof. Ing. Václavovi Přenosilovi, CSc. za vedenie mojej bakalárskej práce, čas a ochotný prístup, ktorý mi venoval. Tiež RNDr. Zdeňkovi Matějovi, Ph.D. za prínosné konzultácie. Vďaka aj mojej rodine za podporu. iii Zhrnutie Táto práca sa zaoberá implementáciou softvéru na mobilné telefóny Android s verziou 4.3+ a softvérom na intervalometer založený na riadiacej jednotke Atmega328P-AU. Obsahom je aj analýza existujúcich riešení dostupných na trhu. iv Kľúčové slová intervalometer, Android, mobilná aplikácia, Atmega328P-AU, Java v Obsah 1 Úvod 1 2 Analýza existujúcich riešení 3 2.1 Timelapse+ 3 2.2 Michron 3 2.3 Riadian 2 4 2.4 Pulse 4 3 Technické vybavenie použité k realizácii 7 3.1 Android 7 3.2 Java 7 3.3 Bluetooth Low Energy 8 3.4 Arduino 8 3.5 Serial Peripheral Interface (SPI) 9 3.6 EAGLE 10 4 Realizácia 11 4.1 Hardvér 11 4.2 Softvér mobilnej aplikácii 12 4.2.1 Grafické používateľské rozhranie 13 4.2.2 Štruktúra aplikácie 13 4.2.3 Zvolenie zariadenia 14 4.2.4 Pripojenie do zariadenia 15 4.2.5 Nastavenia časozberu 17 4.2.6 Príkazy 18 4.2.7 Komunikačná trieda Bluetooth 19 4.3 Softvér v riadiacej jednotke ATmega328P-AU 19 4.4 Komunikácia Bluetooth 20 5 Testovanie funkčnosti 23 6 Problémy a návrhy na zlepšenie 25 7 Záver 27 Literatúra 29 vii A Prílohy 31 viii Zoznam tabuliek 4.1 Príkazy, ktoré odosiela aplikácia do intervalometra 17 4.2 Bluetooth príkazy na ktoré reaguje intervalometer 21 4.3 Vracajúce hodnoty pri zadaní príkazu INPUT 22 4.4 Vracajúce hodnoty pri zadaní príkazu STATE 22 ix Zoznam obrázkov 3.1 Zbernica SPI: Jedno zariadenie Master (vľavo) a jedno zariadenie Sláve (vpravo) 9 4.1 Koncept navrhovaného zariadenia 11 4.2 Schéma zapojenia navrhovaného zariadenia 12 4.3 2.5mm stereo konektor, ktorý sa pripája na strane zariadenia 12 4.4 Pripojenie sa do intervalometra 14 4.5 Zvolenie si intervalometra 15 4.6 Rozhranie mobilnej aplikácie, ktorým sa ovláda intervalometer 16 4.8 Nastaviteľné polia s tlačidlom odoslať nastavenia 18 4.7 Ukážka odosielania nastavení 18 4.9 Príkazové tlačidlá 19 4.10 Vzorec na vyrátanie dĺžky zaostrenia na fotoaparáte 20 5.1 Testovanie intervalometru v Brne, 18.5.2016 23 5.2 Fotografia intervalometra zo spodnej strany 24 5.3 Fotografia intervalometra s pohľadom na zapojenie 24 6.1 Timelapsové pole s predpokladaným časom dokončenia 25 xi 1 Úvod Inteligentné telefony sa stali bežnou súčasťou ľudských životov. Nazývajú sa inteligentné, pre ich funkčnosť, ktorú obsahujú. Zvládajú mnoho operácií zároveň, ktoré doteraz ľudia robili manuálne. Nahradzujú ich aplikácie, ktoré tieto činnosti automatizujú. Sú často krát kombináciou softvéru a hardvéru, kde softvérové aplikácie sa starajú o riadenie hardvérových komponentov alebo zariadení. Inteligentné telefóny natívne obsahujú operačný systém, ktorý je prostriedkom k ďalšiemu vývoju na zariadeniach. Zaužívané systémy na telefónoch sú Android, iOS a Windows Mobile. V práci bol môj cieľ sa pokúsiť vytvoriť riadiaci systém intervalometra (časozberné zariadenie) a riadiacu aplikáciu pre inteligentné telefóny. Casozber (angl. Timelapse) je technika, ktorá umožňuje zachytiť udalosť tak, že snímková frekvencia záznamu je omnoho rýchlejšia ako snímková frekvencia pri prehrávaní. Pri prehrávaní záznamu sa teda zdá, že sa hýbe omnoho rýchlejšie. Pre príklad, obraz scény môže byť zachytávaný raz za sekundu, ale neskôr pustený ako 30 snímkov za sekundu, tzn. výsledok sa zdá byť 30x rýchlejší. Časozberné zariadenia je externý spúšťač, ktorý pomocou externej spúšte na DSLR1 fotoaparáte vytvára casozber za pomoci vyslania 2 signálov (pomocou elektronických optočlenov viď. 4.1 kapitola), ktoré zachytia snímok. Mobilná riadiaca aplikácia bola implementovaná na telefóny s operačným systémom Android a verziou aspoň 4.3 - API 18. Aplikácia slúži ako intuitívna obsluha zariadenia, najmä pre začínajúcich fotografov časozberu. Riadiace systémy sú navrhnuté tak, aby vedeli medzi sebou navzájom komunikovať pomocou technológie BLE (Bluetooth low energy). Problémami časozberných zariadení sú vysoké ceny za kvalitné zariadenie, komplikované ovládanie pre začínajúcich fotografov, základná funkcionalita. Pri používaní displejov je to nízka výdrž batérie. Väčšina intervalometrov, po zaslaní príkazov do časozberu sa odpojí a tak prestane sledovať aktuálny stav zariadenia, potom pri prípadnom zlyhaní alebo ohlásení chyby ovládajúca komponenta nevie reagovať. Ďalšou chybou je nadbytočná kabeláž nutná k nastaveniu zariadenia. 1. Digital single-lens reflex - digitálny fotoaparát kombinujúci optiku a mechaniky zrkadlovky s jednou šošovkou 1 i . ÚVOD Niektoré produkty používajú okrem štandardného kábla do externej spúšte, kábel na prepojenie zariadenia a ovládajúcej komponenty. Kompatibilita so zariadeniami (fotoaparátu, alebo zariadení ovládajúcich intervalometer). Medzi hlavný problém patrí tiež rozmer zariadenia. Veľa produktov nemá vhodný rozmer a potom pri zachytávaní snímkov ich nie je možné uložiť do vhodného priestoru. Namiesto toho ich fotografi alternatívnymi spôsobmi upevňujú. V práci som sa snažil vytvoriť začínajúcim fotografom jednoduché prostredie v ktorom môžu zdokonaliť svoje zručnosti v časozbernom fotografovaní. Vytvoriť obsluhu, ktorá bude riešiť získavanie aktuálneho stavu v ktorom sa zariadenie nachádza a zobrazenie predpokladaného času dokončenia časozberu. Postupne sa venujem analýze existujúcich riešení dostupných na trhu a ich rozdielom a problémom. N a základe ktorých vysvetlím ako som sa rozhodoval. Ďalej popisujem samotný vývoj, prostriedky použité pri implementácii softvéru, hardvérové možnosti a obmedzenia. V realizácii zobrazujem samotné aplikačné prvky a ovládanie zariadenia. Na konci sa venujem samotnému testovaniu zariadenia a problémom, ktoré sa počas vývoja vyskytli. Sú tam popisované problémy spojenia BLE a telefóna, limity komunikačného protokolu a synchronizáciu časov medzi aplikáciou a zariadením. V závere je zhodnocovanie dosiahnutého výsledku. V svojej práci neriešim problémy týkajúce sa vonkajších vnemov, ktoré ovplyvňujú chod zariadenia, ale pre celkové pochopenie je dôležité ich spomenúť. Zahŕňa to fotenie v extrémnych teplotách. A k sa fotí v extrémnej zime alebo teple, obe negatívne vplývajú na zábery. Extrémne teplo môže spôsobiť prehriatie senzoru, ktorý zvyšuje digitálny šum. Naopak v extrémnom chlade môže baterka zlyhať a nebude môcť dokončiť celý časozber. Najbežnejší problém počas fotenia je blikanie obrazu. Mierne odchýlky vo svetle alebo expozícii môžu viesť k blikaniu. Tento problém sa väčšinou rieši dodatočným programom, ktorý odstráni túto chybu z videa, alebo je nutné použiť pomalšiu rýchlosť uzávierky fotoaparátu a vyhnúť sa scénam s príliš silným svetlom. Pre väčšinu začínajúcich fotografov platí, že sa u nich vyskytnú problémy s expozíciou. Najmä preto, že sa spoliehajú na automatické nastavenia, ktoré viditeľne znižujú kvalitu ich časozberu. K najlepším výsledkom je treba použiť manuálnu expozíciu. Detailnejšie popísané problémy sa dajú nájsť v knihe Time-lapse Photography [1]. 2 2 Analýza existujúcich riešení Kapitola obsahuje analýzu niektorých externých intervalometrov pre fotoaparáty dostupných na trhu. Ukazuje na základnú charakteristiku, cenu, výdrž batérie, ovládanie časozberu a funkcie. Hľadá rozdiely medzi nimi a nedostatky. V kapitole sú uvedené 4 produkty, ktoré považujem za moderné a obsahujú minimálne základnú funkcionalitu, nutnú k vytvoreniu časozberu. Na trhu je možné nájsť rôzne varianty intervalometrov. Vynechané boli tie, ktoré sa pohybujú v rádoch 10 000 czk a väčšinou sú kombináciou viacerých produktov. 2.1 Timelapse+ Timelapse+ je pokročilé časozberné zariadenie, ktoré bolo uvedené na trh 2012 [2]. Je to jedno zo starších zariadení, ktorému sa podarilo presadiť na trh pomocou získaných peňazí z Kickstarteru (internetová platforma pre financovanie). Je to malé zariadenie, ktoré je možné nasadiť do priestoru pre externý blesk. Nemusí sa pripájať s telefónom, lebo obsahuje jednoduchý L C D displej a 6 tlačidiel. Hlavným problémom Timelapse+ je výdrž batérie, ktorú výrobca udáva na 2h 30min, čo nestačí na zachytenie kratšieho časozberu. Intervalometer obsahuje mnoho pokročilých funkcií, ale pre začínajúceho fotografa je komplikované sa v nich zorientovať. Zobrazovanie na displeji nie je jednoznačné a chýbajú častokrát popisy, ktoré opisujú zobrazované čísla. Zariadenie sa pohybuje okolo ceny 220$, čo je približne 5178 českých korún. 2.2 Michron Michron vyšiel na trh 2014 v U S A a je to ďalší produkt, ktorému sa podarilo vyzbierať peniaze na Kickstarteri (vyzbieral sumu 234 316$ približne 5 515 00 459 českých korún). Michron je možné pripojiť do DSLR fotoaparátov pomocou kábla. Je kompatibilný s 13 značkami fotoaparátov. Ma malé rozmery a je ho možné pripevniť do priestoru pre externý blesk. Výrobca uvádza výdrž batérie 2000+ hodín. Hlavným problémom je nastavenie zariadenia a aktuálny stav časozberu. Zaria- 3 2. ANALÝZA EXISTUJÚCICH RIEŠENÍ denie sa nastavuje pomocou mobilnej aplikácie, ktorú treba pripojiť pomocou ďalšieho kábla do zariadenia. Pomocou Michron mobilnej aplikácie je potom možné nastaviť spustenie časozberu. Po spustení časozberu, telefón stratí prehľad o aktuálnom stave zariadenia. Prípadné zlyhanie, chybu nie je možné zistiť. Michron aplikácia je intuitívna a má moderný dizajn. Obsahuje možnosť zvoliť si rôzne situácie, podľa ktorých sa zariadenie automaticky nastaví. Je teda vhodné aj pre začínajúcich fotografov. Zariadenie obsahuje zopár pokročilých funkcií a jeho aktuálna cena sa pohybuje okolo 50$ približne 1 176 českých korún. Okrem toho je nutné si dokúpiť kábel na prepojenie medzi fotoaparátom a Michron, ktorý sa pohybuje okolo 15$ približne 353 czk. 2.3 Riadian2 Radián vyšiel v Decembri 2015 v U S A a je jedno z najmodernejších časozberných zariadení dostupných na trhu [3]. Okrem štandardného časozberu, obsahuje kruhovú otáčaciu podložku, ktorú je možné otáčať v 360° (v 20000+ polohách). Rozširuje to možnosti zachytávania záberov a pridáva ďalší efekt pri vytváraní videa. Ovládanie Radiánu je pomocou mobilnej aplikácie, ktorá sa spáruje a pripojí cez Bluetooth Low Enegergy do zariadenia. Mobilná aplikácia Radiánu je veľmi moderná a má prívetivý dizajn. Má mnoho pokročilých funkcií, čo môže byť problém pre začínajúceho fotografa. Pri aktívnom časozbere je možnosť si záber pozrieť v náhľade v aplikácii. Baterka je nabíjateľná pomocou USB rozhrania a vydrží 100+ hodín. Hlavným problémom je kompatibilita s fotoaparátmi, momentálne len s 2 značkami Nikon a Canon. Chýba tiež nejaký indikátor, ktorý by hlásil stav zariadenia, prípadne chybovosť. Problémy sa objavujú pri párovaní pomocou BLE s Radián. Cena Riadan 2 je 280$ približne 6 590czk, ale pre väčšiu stabilitu fotoaparátu a pri použití statívu je nutné si dokúpiť držiak v hodnote 30$ približne 706czk. 2.4 Pulse Pulse patrí medzi najnovšie časozberné zariadenia [4]. Aktuálne ešte nie je dostupný na trhu, ale je možné si ho pred-objednať za 89$ pri- 4 2. ANALÝZA EXISTUJÚCICH RIEŠENÍ blizne 2 092czk. Produkt vyzbieral peniaze na Kickstareri (sumu 1 110 820$ približne 26 1178905czk). Je ovládaný mobilnou aplikáciou bezdrôtovo pomocou BLE. Okolo tela má LED indikátor, ktorý hlási aktuálny stav zariadenia. Mobilná aplikácia má veľmi používateľsky prívetivé rozhranie a obsahuje základné funkcie. Produkt je vhodný pre začínajúcich fotografov. Počas vytvárania záberov je si možné pozrieť náhľady v aplikácii. Pre spojenie s fotoaparátom používa namiesto externej spúšte USB port, ktorý rozširuje možnosti práce. Hlavný problém je, že je kompatibilný len s niektorými značkami DLSR a podporuje len 3 modeli fotoaparátov. 5 3 Technické vybavenie použité k realizácii Aby sa predišlo možným komplikáciám, boli použité štandardné jazyky a známe programovacie prostredia. Kapitola popisuje aké spôsoby implementácie a typy technológii boli použité pri riešení práce. V podkapitolách je vysvetlené prečo sú využívané práve dané typy. 3.1 Android Android je otvorený operačný systém pre mobilné telefóny založený na jadre Linuxu. Telefóny s Android systémom sú označované za smartphony (inteligentné telefóny). Sú vyvíjané v programovacích jazykoch C (jadro), C++ a Java (user interface - používateľské rozhranie) [5]. Vyvíja ho Google a konzorciom Open Handset Alliance, ktoré je zoskupenie výrobcov mobilných telefónov, telekomunikačných operátorov a technologický firiem. Cieľom vývoja je tiež vyvíjanie platformy, pri ktorej počítajú s nižšou výdržou batérie, menšou kapacitou pamäte, bez ohľadu na čipovú sadu a veľkosť obrazovky. To dovoľuje vytvoriť z Androidu platformu, ktorú nájdeme aj inde ako na mobilných telefónoch. Pri prieskume IDC1 o podielu trhu používateľnosti mobilných operačných systémoch v druhom kvartáli 2015 Android obdržal podiel až 82,8%. Systém je voľne dostupný a je možné doňho vyvíjať aplikácie, alebo ovplyvňovať jeho chod. Aplikácie sú väčšinou vyvíjané v programátorskom prostredí Android Studio, ktoré je založené na IntelliJ IDEA. Prostredie je dostupné pre operačné systémy Windows, Mac OS X a Linux [6]. Obsahuje mnoho funkcií na vývoj vrátane mobilných emulátorov, ktoré vám povoľujú otestovať si nastavenia, prostredie alebo hardvérové kapacity bez vlastnenia mobilného zariadenia. Sú to dôvody, ktoré ovplyvnili prečo v tomto riešení bola mobilná aplikácia vyvíjaná na Android. 3.2 Java Java je objektový orientovaný programovací (oop) jazyk. Vyvíja ho spoločnosť Oracle a vychádza z programovacích jazykov C a C++. 1. http://www.idc.com/prodserv/smartphone-os-market-share.jsp 7 3- TECHNICKÉ VYBAVENIE POUŽITÉ K REALIZÁCII Zdrojové programy nie sú kompilované do strojového kódu ale do bytecode. To znamená, že Java nie je závislá od platformy. V tomto riešení bola použitá Java ako programovací jazyk pre mobilnú aplikáciu. 3.3 Bluetooth Low Energy Bluetooth Low Energy (alebo Bluetooth LE, BLE, Bluetooth Smart) je bezdrôtová komunikačná technológia, ktorá slúži na komunikáciu aspoň medzi 2 zariadeniami. Oproti bežnému Bluetoothu má nižšiu spotrebu pri zachovaní podobného komunikačného rozsahu. Vyvíjané hlavne pre zariadenia IoT (Internet of Things)2 . Hlavným problémom Bluetooth Low Energy je, že nie je spätne kompatibilný s "klasickým"Bluetoothom. Používajú rovnakú rádiovú frekvenciu 2.4GHz, ktorá povoľuje zdieľanie jednej rádiovej antény. Telefóny s Androidom natívne implementujú knižnicu na spravovaniu BLE od verzie 4.3 (API Level 18). K ovládaniu BLE v Androide je nutné používateľa oboznámiť o práci s metódami Bluetooth a vyžiadať si povolenia, ktoré sprístupnia knižnice. Ďalším problémom je neustále sa vyvíjaný Android, ktorý vo verzii 6 (API Level 23), dodal ďalšiu povinnosť o oboznámení používateľa pri priamom využívaní rozhrania [7]. 3.4 Arduino Arduino je open source platforma založená na mikrokontroléry (jednočipový mikropočítač) ATmega od firmy Atmel [8]. V bakalárskej práci bol používaný ako programátor pre mikrokontrolér ATmega328P-AU. Pomocou neho bol zavádzaný nový softvér do zariadenia. Vývojové prostredie Arduino IDE [9] je viac platformová aplikácia naprogramovaná v Jave. Je veľmi jednoduchý a intuitívny so základnými funkciami ako vyznačiť syntax, označenie zátvoriek alebo nahranie programu do Arduina na jedno tlačidlo. Programy sa píšu v programovacích jazykoch C alebo C++. Výhodou je, že IDE obsahuje knižnice funkcií, ktoré uľahčujú prácu s hardvérom. Užívateľ musí zadefinovať len 2 funkcie aby vytvoril spustitelný program. setupO - funkcia, ktorá sa spustí len raz na začiatku. Slúži 2. https://www.bluetooth.com/what-is-bluetooth-technology/bluetoothtechnology-basics /low-energy 8 3- TECHNICKÉ VYBAVENIE POUŽITÉ K REALIZÁCII k i n i c i a l i z á c i i parametrov a nastaveni. loopO - je opakujúca sa slučka, ktorá sa periodicky spúšta. Mikrokontroléry majú časť softvéru uloženú, ktorá umožňuje inštaláciu nového firmware pomocou externého programátora. Táto čast sa nazýva bootloader. V práci bol používaný práve Arduino bootloader. 3.5 Seriál Peripheral Interface (SPI) SPI je sériové periférne rozhranie. Používa sa na komunikáciu medzi mikrokontrolérmi s jedným alebo viacerými periférnymi zariadeniami pomocou master a sláve (v slovenčine riadiaci a podriadený, ale skôr je zaužívaný v angličtine) [10]. Master riadi komunikáciu pomocou hodinového signálu a určuje s ktorým sláve zariadením bude na zbernici komunikovať. Ilustrácia spojenia je na obrázku 3.1. SPI M A S T E R SCLK MOSI MIŠO SS SPI S L A V E CLK IOSI ISO SS Obr. 3.1: Zbernica SPI: Jedno zariadenie Master (vľavo) a jedno zariadenie Sláve (vpravo) 9 3- TECHNICKÉ VYBAVENIE POUŽITÉ K REALIZÁCII Vysvetlenie pojmov: SCLK (Seriál Clock) - Hodinové pulzy, ktoré synchronizujú prenos dát generované Mastrom. MOSI (Master Out Sláve Out) - Master linka, ktorá posiela dáta do periférií. MISO (Master In Sláve Out) - Sláve linka, ktorá posiela dáta do Mastra. SS (Sláve Select) - Pin, ktorý môže Master použiť na povolenie alebo zakázanie periféria. Rozhranie SPI bolo použité na nahrávanie programu do mikrokontroléru ATmega328P-AU. 3.6 EAGLE Eagle (Easily Applicable Graphical Layout Editor) je výkonný nástroj k navrhovaniu dosiek plošných spojov. Skladá sa z 3 základných modulov: editor spojov, editor schém a autorouter [11]. Doska bola navrhnutá práve v tomto programe. Schéma je ilustrovaná na 4.2. 10 4 Realizácia Kapitola popisuje realizáciu softvéru a vysvetľuje časť zapojenia hardvéru. Ďalej samostatnú komunikáciu medzi navrhovaným zariadením a ovládajúcou aplikáciou. V obrázku 4.1 je možné vidieť navrhovaný koncept zariadenia. Android zariadenie s Bluetooth Bluetooth Modul ^ n n n n n n r n O' o ATmega328P-AU O o U U U U U J Ľ U Obr. 4.1: Koncept navrhovaného zariadenia 4.1 Hardvér Atmega328P-AU je 8-bitový AVR RISC mikrokontrólér kombinovaný s 32KB flash pamäťou. Je hlavnou riadiacou jednotkou v zariadení, pomocou ktorého sú ovládané zvyšné komponenty zariadenia. Atmega328PA U môže byť napájaná z 1.8 až 5.5V a maximálnu operačnú frekvenciu znesie 20MHz [12]. V návrhu (4.2) je pripojený 8MHz kryštál'aby bolo možné znížiť napájacie napätie a predĺžiť tak výdrž batérie. Bluetooth modul je HM-11 BLE Module pracujúci na napätí 3.3V a frekvencii 2.4GHz [13]. Ovládanie a konfigurácia BLE prebieha pomocou AT príkazov. V stand-by režime je spotreba prúdu okolo 400 }iA - 800 }iA. Zariadenie pracuje v teplotách od -40°C až 65°C podľa parametrov udávaných vo výrobnom katalógu. Zachytávanie snímkov samotného časozberu prebieha pomocou 2 optočlenov a 2.5mm stereo konektora. Optočleny sú prepojené s konektorom a keď sa zopnú nechávajú prechádzať prúd cez konektor do fotoaparátu. Stredná časť konektoru 11 4- REALIZÁCIA VCC_2 VCC •wcc PBO-8 ^DO(RX)- ." MH1-U PD2PB2-10 PD3PB3(M05I)-11 PD4PB4(MISO)-12 PD5PB5(5CK)-13 PD6PB6(XTAL1) " PB7(XTAL2; 3ND_2 3ND_; ATMEGA32SP-AL Obr. 4.2: Schéma zapojenia navrhovaného zariadenia vyšle príkaz zaostrenia a pravá simuluje stlačenie spúšte. Ilustrácia štruktúry konektoru je na obrázku 4.3. Ground Zaostrenie Spúšť Obr. 4.3: 2.5mm stereo konektor, ktorý sa pripája na strane zariadenia 4.2 Softvér mobilnej aplikácii Podkapitola popisuje mobilnú aplikáciu vyvinutú na Android. Jej štruktúru a chovanie sa na udalosti. Hlavnými úlohami aplikácie sú 12 4- REALIZÁCIA poskytnúť grafické používateľské rozhranie pre fotografa, Bluetooth komunikáciu s intervalometrom, zistenie aktuálneho stavu v akom sa zariadenie nachádza a odoslanie parametrov do zariadenia. Texty mobilnej aplikácie sú napísané v angličtine. 4.2.1 Grafické používateľské rozhranie Grafické používateľské rozhranie (anglicky Graphical User Interface a skratka GUI) je rozhranie, ktoré dovoľuje používateľovi komunikovať s elektronickým zariadením pomocou grafických ikoniek a vizuálnych indikátorov. V Android Studio je navrhovanie GUI veľmi jednoduché a používa sa na to grafický editor, ktorý pomocou funkcie ťahaj a pusti (známej ako drag and drop) povoľuje pomerne jednoduchý návrh dizajnu [14]. Celý dizajn sa vytvára na pozadí pomocou značkovacieho jazyka xml. Pri použití komplexnejších vizuálnych prvkov sa mnoho krát nedá použiť grafické rozhranie a je nutné zasiahnuť k zmene v xml. Celý návrh mobilnej aplikácie bol navrhnutý práve v tomto editore. Ide o jednoduchý dizajn rozložený do obdĺžnikov, ktoré sú uložené pod sebou. Celá aplikácia ma zachované podobné rozloženie aby to bolo čo najintuitívnejšie pre používateľa. Takýto jednoduchý dizajn sa vie prispôsobiť rôznym mobilným rozlíšeniam a je ho možné použiť na rôznych Android telefónoch s rôznymi veľkosťami obrazoviek. 4.2.2 Štruktúra aplikácie Po zapnutí aplikácie sa zobrazí hlavné menu (obrázok 4.4), ktoré je rozdelené do 3 častí (obdĺžnikov). Vrchná časť obsahuje názov aplikácie a počas celého chodu sa nemení. Spodná časť zobrazuje možnosť nájdenia a zvolenia si intervalometra. Stredná časť ponúka možnosť sa pripojiť k zvolenému zariadeniu. Zároveň uvádza počet pokusov o pripojenie. V prvom použití aplikácie je nutné si najprv zvoliť zariadenie k u ktorému sa chceme pripojiť. V inom prípade aplikácia pripojenie nepovolí. Hlavné menu je volené ako domovská obrazovka a pri objavení chyby sa aplikácia snaží naspäť otvoriť toto okno. 13 4- REALIZÁCIA Timelapse ILast Device HMSoft 166 connections Settings Obr. 4.4: Pripojenie sa do intervalometra 4.2.3 Zvolenie zariadenia Po otvorení položky Select Device (slovensky zvoliť zaradenie) sa zobrazia dostupné Bluetooth Low Energy zariadenia v okolí (obrázok 4.5). V prípade, že telefón nemá zapnutý Bluetooth vyskočí dialógové okno, ktoré upozorní používateľa a ponúkne mu možnosť zapnúť ho. V prípade odmietnutia sa kontextové okno zatvorí a zobrazí sa hlavné menu. Ak je Bluetooth zapnutý aplikácia zobrazí upozornenia o začatí skenovania zariadení v okolí. A k sú dostupné tak sa zobrazujú vo forme zoznamu pod sebou. Pre jednoznačne rozlíšenie zariadení je okrem mena uvádzaná aj jeho natívna Bluetooth adresa. Po kliknutí na zariadenie si ho aplikácia nastaví ako aktuálne, uloží si ho do pamäte a zastaví vyhľadávanie. V prípade, že si používateľ nezvolí žiadne zariadenie, tak vyhľadávanie sa zastaví po 11 sekundách a upozorní ho na to. 14 4- REALIZÁCIA HMSoft 78:A5:04:85:B3:F2 Obr. 4.5: Zvolenie si intervalometra 4.2.4 Pripojenie do zariadenia Po kliknutí na Connect sa aplikácia pokúsi pripojiť k intervalometru. Otvorí sa nové okno s 8 poliami z toho 1 skrytým (obrázok 4.6). A k je Bluetooth vypnutý, tak sa aplikácia chová rovnako ako pri zvolení zariadenia (4.2.3). A k je Bluetooth zapnutý tak sa aplikácia zobrazuje nasledovne. • Vrchná časť je oranžové tlačidlo, ktoré po kliknutí sa od zariadenia odpojí alebo pripojí. Záleží na aktuálnom stave pripojenia. Tlačidlo má vždy opačný popis ako stav pripojenia. • Pod ním je biele pole, ktoré hovorí o aktuálnom zariadení. Je rozdelené do 4 častí v ktorých je uvedené nadpis poľa, meno zariadenia, adresa zariadenia a stav pripojenia. • Ďalšia časť zobrazuje aktuálny stav časozberu. Zobrazuje základné štatistiky o časozbere a jednotlivé časy dokončenia alebo spustenia. Pole je označené ako Timelapse. • Nasledujúca časť sú nastavenia časozberu (4.2.5). Je možné v ňom nastaviť si hodnoty a odoslať ich. 15 4- REALIZÁCIA Name: HMSoft Address: 78:A5:04:85:B3:F2 State: Connected Timelapse Photos: 4 Start in: Os Remaining: 1984s Finish at: 21:22:58 (0h:33m:4s) ^^^r^sl O Interval: O Shots: O Delay: 4h O I 4.4. 4 sec O 0 SJ9 (a) Horná polovica aplikácie Timelapse State Photos taken: 4 Interval: 4000ms Focus: 1000 Shutter: 200 Remaining delay: 0s Mode: Battery: 1/10 Interval: 4s Shots: 500 Delay: 0s Focus: 1000 shutter ?nn (b) Spodná polovica aplikácie Obr. 4.6: Rozhranie mobilnej aplikácie, ktorým sa ovláda intervalome- ter • V posledných 2 poliach sa nachádzajú údaje načítané z intervalometru. Vrchná časť ukazuje aktuálny stav v akom sa zariadenie nachádza. Spodná časť obsahuje vložené nastavenia v zariadení. Zobrazuje aké nastavenia sme odoslali, alebo aké boli v intervalometri uložené. V prípade, že aplikácia už bola v minulosti pripojená k nejakému zariadeniu, tak sa je k nemu možné pripojiť aj v prípade, že zariadenie nie je dostupné alebo nemá napájači zdroj. Aplikácia sa síce reálne nepřipojí, ale je možné si nastaviť nastavenia intervalometru vopred a po spustení zariadenia sa doňho pripojiť a odoslať ich. A k aplikácia nie je reálne pripojená, akciu tlačidiel blokuje upozornením "Connect to device"(slovensky pripojiť k zariadeniu) s výnimkou tlačidla na zobrazenie poľa s príkazmi. 16 4- REALIZÁCIA 4.2.5 Nastavenia časozberu Nastavenia časozberu sa skladajú z 5 nastaviteľných polí, tlačidla a nadpisu (obrázok 4.8). Prvé pole interval hovorí o časovom odstupe medzi zachytenými snímkami. Druhé pole shots uvádza počet záberov koľko sa má zachytiť. V prípade, že počet záberov je 0, fotoaparát bude zachytávať až kým nepríde k prerušeniu. Pole delay (slovensky oneskorenie) je časový úsek na začiatku, ktorý spustí časozber až po uplynutí nastaveného času v sekundách. Pole focus (slovensky zaostrenie) fotoaparátu sa uvádza v ms. Poslednou možnosťou je nastavenie dĺžky shutter (slovensky uzávierka), ktoré sa píše tiež v ms. V prípade, že shutter a focus nie sú nastavené intervalometer si ich nastaví sám. Vzorec dorátavania focusu je zobrazený na obrázku 4.10 a shutter nastaví východziu hodnotu na 200 ms. Pod nastaveniami je tlačidlo send settings (slovensky poslať nastavenia), ktoré po stlačení nastavené hodnoty odošle do intervalometra. Hodnoty nastavení odosiela postupne po jednej s časovým rozostupom 2,3 sekundy. Akcia je zobrazená na 4.7. Posiela 5 rôznych údajov vo formáte P:TYP:HODNOTA. Formáty jednotlivých nastavení v komunikácii sú v tabuľke 4.1. Názov Príkaz Interval P:I:Hodnota Shots P:N:Hodnota Delay P:D:Hodnota Shutter P:S:Hodnota Focus P:F:Hodnota Tabuľka 4.1: Príkazy, ktoré odosiela aplikácia do intervalometra A k je náhodou nejaký parameter zle nastavený, intervalometer pošle späť chybovú hlášku, ktorú následne aplikácia zobrazí. 17 4- REALIZÁCIA Settings O Interval: 4 sec O O Shots: 500 O O Delay: 0 s e c O O Shutter: 200 O O Focus: 0 Send settings Obr. 4.8: Nastavitelné polia s tlačidlom odoslať nastavenia Timelapse Sending your settings to device... Finish at: Obr. 4.7: Ukážka odosielania nastavení 4.2.6 Príkazy Príkazy, ktoré ovládajú časozber je možné zobraziť alebo skryť kliknutím na tlačidlo v spodnom pravom rohu označené ako show alebo hide. Zobrazí alebo skryje sa biele pole s príkazmi časozberu (obrázok 4.9). Pole obsahuje 5 príkazových tlačidiel a nadpis. Vysvetlenie príkazov: • Reset príkaz požiada zariadenie o nastavenie vychádzajúcich hodnôt. • Príkaz pause pozastaví aktuálnu činnosť časozberu. V prípade, že časozber neprebieha, nič sa nestane. • Príkaz stop zastaví časozber. A k časozber neprebieha, tak sa znova nestane nič. • Príkaz load data načíta aktuálne hodnoty zo zariadenia a zobrazí ich v posledných 2 poliach, kde sa nachádzajú práve informácie 18 4- REALIZÁCIA Commands Obr. 4.9: Príkazové tlačidlá o zariadení. A k časozber aktuálne prebieha, tak aplikácia si načíta aktuálne hodnoty a podľa nich nastaví aj príslušné pole Timelapse, ktoré zobrazuje informácie o časozbere. Posledný príkaz start vyžiada spustenie časozberu. Zariadenie skontroluje jeho aktuálne nastavenia a ak sú v poriadku spustí časozber. A k objaví chybu, pošle chybovú hlášku o chybe. 4.2.7 Komunikačná trieda Bluetooth BluetoothLeService je moja trieda v Androide, ktorá má na starosti komunikačný kanál Bluetooth na pozadí. Je to služba a reaguje na zmeny v Bluetooth stave. Ak sa zariadenie pripojí, odpojí alebo nastane prerušenie, služba na to reaguje a odosiela lokálny broadcast1 . Platí to o prijatých a odoslaných dátach. Iné aktivity zachytia broadcast a pomocou neho sa snažia predísť chybám v aplikácii. Základné príkazy, ktoré služba posiela sú uložené v triede Preferences. 4.3 Softvér v riadiacej jednotke ATmega328P-AU Softvér bol písaný v programovacom jazyku C. Základnou knižnicou je Arduino.h, ktorá obsahuje väčšinu použitých funkcií. Softvér je rozdelený do 3 modov. • Základný mód je MODE_READY, ktorý udržiava zariadenie v stave čakania. Zariadenie vtedy nevysiela žiadne signály do fotoaparátu. Po zapnutí sa zariadenie nastaví do tohto módu. Indikuje to modrá dióda, ktorá 2-krát po sebe bliká v intervaloch: 1. Trieda v Androide, ktorá vysiela oznámenia 19 4- REALIZÁCIA 413 v o i d automatic_focusO 414 { i f (FOCUS <= 0 || FOCUS > (INTERVAL-SHUTTER)) FOCUS = (INTE RVAL-SHUTTE R) < 2000? CINTERVAL-SHUTTER)/2 : 1000; 417 } 418 Obr. 4.10: Vzorec na vyrátanie dĺžky zaostrenia na fotoaparáte 300 ms zapnutá, 300 ms vypnutá, 300 ms zapnutá, 1000 ms vypnutá. • MODE_DELAY je mód, ktorý odpočítava čas do spustenia časozberu. Po uplynutí doby sa automaticky spustí. Zariadenie vtedy nijako nesvieti ani nebliká a vyzerá ako vypnuté. Rozpoznanie delay módu od vypnutého zariadenia je len pomocou načítania aktuálneho stavu zariadenia (tlačidlo load data v aplikácii). • MODE_TIMELAPSE je mód v ktorom zariadenie vysiela signály do fotoaparátu a vytvára časozber. Na zariadení bliká modrá led dióda v intervaloch. DÍžka svietenia záleží na dĺžke zaostrenia a intervalu. Rozsvieti sa po uplynutí doby zaostrenia a zhasne pri ukončení jedného intervalu. Do základných funkcií patrí časť kódu, ktorá neustále kontroluje dáta, ktoré prichádzajú cez Bluetooth. V prípade, že sú dostupné dáta, metóda readCommand() ich spracuje a vyhodnotí. Táto metóda riadi módy zariadenia, metódy a spúšťa časozber. Číselné parametre pre nastavenia sú v zariadení ukladané v type long bez znamienka a majú rozsah 0 až 2 3 2 — 1. 4.4 Komunikácia Bluetooth Zariadenie je možné ovládať nie len navrhnutou mobilnou aplikáciou ale aj vlastným riešením. Príkazy na ktoré zariadenie reaguje pomocou Bluetooth Low Energy sú zobrazené v tabuľke 4.2. Príkazy a hodnoty, ktoré vracia zariadenie sú vždy ukončené znakom prázdneho riadka \n. Intervalometer po zadaní príkazov INPUT a STATE posiela príkazy v rôznych formátoch. Príkaz INPUT postupne vracia maximálne 20 4- REALIZÁCIA Príkaz TLSTART TLPAUSE TLEND INPUT STATE RESET TLQUICK P:TYP:HODNOTA Popis zapne časozber pozastaví časozber ukončí časozber vráti aktuálne nastavenia zariadenia vráti aktuálny stav zariadenia nastaví zariadenie do východzieho stavu nastaví zariadenie do východzieho stavu a spustí časozber nastaví parameter (parametre sú popísané v Nastaveniach časozberu) Tabuľka 4.2: Bluetooth príkazy na ktoré reaguje intervalometer 2 nastavené hodnoty časozberu. K úplnému získaniu hodnôt je nutné zavolať príkaz 3-krát. Hodnoty z príkazu sú zobrazené v tabuľke 4.3. V príkaze STATE zariadenie postupne vracia maximálne 2 hodnoty. K úplnému výpisu je nutné ho zavolať 4-krát. Vracajúce hodnoty sú zobrazené v tabuľke 4.4. Niektoré hodnoty v STATE a INPUT sa opakujú. Pretože ak niektoré hodnoty neboli zadané, softvér sa ich snaží dorátať. Môže teda vzniknúť rozdiel medzi hodnotami zadanými na zariadení a reálnymi s ktorými sa zariadenie spustilo. Dôvod, prečo hodnoty sa posielajú postupne a nie na jeden príkaz, je limit komunikačného protokolu BLE, ktorý je obmedzený na veľkosť 20 bytov. Softvér si pamätá posledné hodnoty, ktoré odoslal a na základe nich posiela ďalšie. Zobrazenie hodnôt STATE a INPUT je možné si pozrieť v obrázku 4.6b. 21 4- REALIZÁCIA Hodnota Popis P M I: H O D N O T A vráti interval v ms N : H O D N O T A počet snímkov P M D:HODNOTA oneskorenie, kým začne časozber P M F: H O D N O T A hodnota zaostrenia S:HODNOTA hodnota uzávierky Tabuľka 4.3: Vracajúce hodnoty pri zadaní príkazu INPUT Hodnota Popis ST S:HODNOTA počet zachytených snímkov v aktuálnom časoz- bere L H O D N O T A dĺžka intervalu v ms ST F: H O D N O T A hodnota zaostrenia T: H O D N O T A hodnota uzávierky ST D:HODNOTA zostávajúci čas do spustenia časozberu M : H O D N O T A v akom móde sa zariadenie nachádza ST B:HODNOTA hodnota batérie v rozmedzí 0-10. Tabuľka 4.4: Vracajúce hodnoty pri zadaní príkazu STATE 22 5 Testovanie funkčnosti Intervalometer bol testovaný na fotoaparáte Sony A7s. Ako zdroj napájania pre intervalometer boli používané 2 x A A A batérie zapojené sériovo a napájanie 3.3 V z Arduina (bol testovaný viac krát). Mobilná aplikácia bola používaná na telefóne Samsung Galaxy S7 edge. Testovanie bolo úspešné a aplikácií sa plne podarilo ovládať zariadenie. Boli použité predvolené hodnoty intervalometru. Mobilná aplikácia vyslala príkaz štart, ktorý spustil fotenie časozberu. Spoločne sa zachytilo 20 snímkov s intervalom 5 sekúnd, ktoré boli prerušené príkazom stop. V testovaní chýbal kryt do ktorého by bolo možné umiestniť intervalometer a pripevniť do externej spúšte. Presnejší test s popisom a nastaveniami z Donovalov je popísaný v zázname z overenia funkčnosti zariadenia, priložený v prílohe. Obr. 5.1: Testovanie intervalometru v Brne, 18.5.2016 23 5- TESTOVANIE FUNKČNOSTI 6 Problémy a návrhy na zlepšenie Kapitola popisuje aktuálne problémy softvéru a navrhuje možné rie­ šenia. 1. Navrhnutý softvér má odchýlku pri vypočítavaní dokončenia časozberu v rozmedzí 8 až 16 sekúnd. Príčina je dlhé načítavanie aktuálneho stavu zariadenia cez Bluetooth. Postupné prijímanie údajov je dlhé (16 sekúnd) a softvér čaká na získanie potrebných údajov k dorátaniu hodnôt. Riešením by mohlo byť preprogramovanie BLE komunikačného protokolu, ktorý momentálne obmedzuje veľkosť správy na 20 bytov. Mohlo by to vyriešiť aj automatické načítanie stavu pri pripojení, ktoré momentálne je nutné si vyžiadať manuálne pomocou tlačidla. Timelapse Photos: 4 Start in: Os Remaining: 1984s Finish at: 21:22:58 (0h:33m:4s) Obr. 6.1: Timelapsové pole s predpokladaným časom dokončenia 2. Problém je pri volení si intervalometru (4.5). Aplikácia nerozlišuje medzi BLE zariadeniami a je možné sa pripojiť aj k inému. Čiastočným riešením by mohlo byť regulárnym výrazom obmedziť názvy zariadení, ktoré sa zobrazujú. 3. Ukladanie načítaných údajov prebieha na úrovni premenných a pri minimalizácii aplikácie sa údaje vymažú. To znamená pri opätovnom zapnutí je nutné sa znova pripojiť a dáta si načítať. Riešením by mohlo byť ukladanie dočasného stavu do pevného disku. 25 7 Záver Predkladaná bakalárska práca sa venovala realizácii softvéru pre mobilné zariadenia Android a softvéru pre intervalometer. V úvode boli zdôraznené softvérové a hardvérové problémy zariadení. Zároveň v prvej kapitole práca ponúka prehľad existujúcich riešení. Na základe týchto kapitol bol realizovaný riadiaci softvér pre zariadenie. K dosiahnutiu vytvorenia realizovaného softvéru bolo nutné si prehĺbiť znalosti z programovacích jazykov Java, C, pochopenie princípov komunikácie BLE a samotného fungovania hardvéru. Práca sa venuje softvérovej časti a nebolo jej cieľom riešiť problémy vonkajších vnemov a hardvéru. Bakalárska práca cieľ splnila. Intervalometer s mobilnou aplikáciou boli úspešne otestované a sú plne funkčné k použitiu. Nakoľko táto téma stále nebola riešená konštrukčne, je možné ju rozvinúť a dokončiť do finálnej podoby aj v takomto smere. Mobilná aplikácia tvorí jednoduché prostredie, ktoré zvládnu aj začínajúci fotografi a ponúka tlačidlo načítania aktuálneho stavu. Bolo by, ale vhodné ju stále vylepšiť, aby ponúkala rozširujúce možnosti nastavení, prípadne nové tlačidlá obsluhy. Zariadenie má implementovaný softvér, ktorý indikuje svoje stavy s modrou led diódou. Vhodnejšou alternatívou by bolo pridanie rozsvietenia ďalšej diódy, ktoré by urýchlilo a ujasnilo aktuálny stav intervalometru. Práca ponúka celkový prehľad o riešení a je jednoduché ho znova podľa nej zopakovať. Pri tejto práci som získal veľa hodnotných skúseností. Verím, že celková práca dostatočne splnila očakávané požiadavky. 27 Literatúra [1] Ryan A Chylinski. Time-lapse Photography: A Complete Introduction to Shooting, Processing and Rendering Time-lapse Movies with a DSLR Camera. Cedar Wings Creative, 2012. [2] Elijah Parker. The Timelapse+ Intervalometer. 2015. URL: http: // www.timelapseplus. com/ (Citovane 04/05/2016). [3] Antony Leather. Alpine Labs Michron And Radian Review: SmartphoneControlled DSLR Time Lapses. 2015. URL: http : / /www . f orbes . com/sites/antonyleather/2015/02/26/alpine-labs-michronand - radian - review - smartphone - controlled - d s l r - time lapses/ (Citovane 03/11/2016). [4] Alpine Labs L L C . PULSE \ Your camera, upgraded. 2016. URL: https : //alpinelaboratories . com/pages/pulse (Citovane 04/01/2016). [5] Ed Burnette. Hello, Android: Introducing Google's Mobile Development Platform. Vol. 4. Pragmatic Bookshelf, 2015. [6] Inc. Google. Meet Android Studio. 2016. URL: https: //developer. android, com/studio/intro/index.html (Citovane03/25/2016). [7] Robin Heydon. Bluetooth Low Energy: The Developer's Handbook. Prentice Hall, 2012. [8] Arduino. What is Arduino? 2016. URL: https : / /www . arduino . cc/en/guide/introduction (Citovane 04/01/2016). [9] Arduino. Arduino Software (IDE). 2016. URL: https: //www. arduino. cc/en/Guide/Environment (Citovane 04/01/2016). [10] P G . Davis, Q.B. Huynh, and J.C. Peck. Serial peripheral interface. US Patent 8,589,717. Nov. 2013. URL: https : //www. google. com/ patents/US8589717. [11] E L C A D v.o.s. Informace o programu EAGLE. 2014. URL: http: // eagle, cz/inf o.htm (Citovane 03/29/2016). [12] Atmel. ATmega48A/PA/88A/PA/168A/PA/328/P. 2015. URL: http: //www.atmel.com/Images/Atmel-8271-8-bit-AVR-Microcontroller- ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_ Summary.pdf (Citovane 04/15/2016). [13] JNHuaMao Technology Company. Bluetooth 4.0 BLE module. 2014. URL: https : / / www . seeedstudio . com / wiki / images / c / cd / Bluetooth4_en.pdf (Citovane 03/10/2016). 29 LITERATÚRA [14] Inc. Google. User Interface. 2016. URL: https : //developer. android. com/guide/topics/ui/index.html (Citované 05/15/2016). 30 A Prílohy Táto bakalárska práca obsahuje nasledujúce prílohy. protokol. pdf - Záznam z overenia funkčnosti zariadenia. Timelapse-Intervalometer. zip - obsahuje zdrojový kód aplikácie pre zariadenie. Timelapse-Android-App. zip - obsahuje zdrojový kód aplikácie pre Android telefón. 31