Pilot IR do Nikon’a, czyli tworzymy film poklatkowy

Pilot IR do Nikon’a, czyli tworzymy film poklatkowy

Projekt jest niezwykle prosty. Opiszę go, aby udowodnić jak niewiele potrzeba, aby wprowadzić własną elektronikę w życie w zaskakująco interesujący sposób. Chcę również pokazać jak cienka jest granica pomiędzy sztuką, a elektroniką, gdyż im wyższa kreatywność, tym ciekawsze efekty.

W aparacie jest czujnik podczerwieni, który odbiera z zewnątrz sygnał o odpowiednich parametrach i sekwencji. Po wykryciu takowego sygnału najzwyczajniej w świecie robi zdjęcie. Największą zagadką jest napisanie programu, który tak wysteruje zasilaniem diody IR, aby aparat odebrał go pozytywnie, jako naciśnięcie spustu migawki. Tym właśnie zajmiemy się w tym artykule.

Przygotowania

W tym artykule zamieszczę czysty projekt pilota na podczerwień do aparatu firmy Nikon. Dodam, że po przeczytaniu tego wpisu (i po znalezieniu odpowiednich dla swoich urządzeń schematów), każdy z łatwością zyska wiedzę, aby swobodnie napisać program generujący prawidłowy sygnał. Warto oswajać się z takimi schematami, ponieważ implementacja okazuje się bardzo prosta.

Projekt oczywiście można było wyposażyć w nieskończoną ilość bajerów takich jak wyświetlacze, dziesiątki diod kontrolnych i przełączników. Jednak nie to jest tematem artykułu.

Gdy kogoś najdzie ochota na dodanie wyświetlacza na opóźnienie pomiędzy zdjęciami (dotyczy ostatniego punktu z artykułu) to serdecznie polecam wpis: Zegar DS1307 , dokładnie pkt 4.

Potrzebujemy:

Analiza teoretyczna problemu:

Przeszukując Internet natknąłem się na taki schemat:

Sygnał odbierany przez aparat firmy Nikon, równoznaczny z naciśnięciem spustu migawki.
Sygnał odbierany przez aparat firmy Nikon, równoznaczny z naciśnięciem spustu migawki.

Z dopiskiemThe bursts are modulated on a 38 kHz carrier. This diagram shows the timing of one half of the command. The second half is exactly the same and is repeated 63.2 ms after the first command.

  • czarne paski ze schematu oznaczają sygnał prostokątny (puszczany na diodę) o częstotliwości 38 kHz,
  • przerwy między paskami – wygaszenie diody na odpowiedni czas,
  • daną sekwencję należy powtórzyć dwukrotnie z 63.2 ms opóźnieniem.

Kilka prostych matematycznych przekształceń:

T = 1/f   zatem przy częstotliwości (f) równej 38 kHz, okres używanego przebiegu wynosi w zaokrągleniu 26 mikrosekund.

Współczynnik wypełnienia = 0,5  , zatem czas trwania HIGH (oraz analogicznie LOW) na diodzie wynosi połowę okresu (13 mikrosekund). Definiujemy:

Podsumowując:

Czarne prostokąty to nie HIGH na diodzie, lecz aktywny sygnał niosący (tzw “carry”) o parametrach obliczonych powyżej. Bardzo łatwo można to zrozumieć na animacji (kliknij na obrazek poniżej), którą wykonałem w ogromnej skali. (Pokazanie tego w normalnej skali zamazałoby obrazek i wszystko stałoby się strasznie nieczytelne. )

Sygnał niosący (GIF)
Sygnał niosący (GIF)

Mamy już dokładnie opracowany temat ze strony teoretycznej, posiadamy wystarczająco informacji, aby zabrać się do pisania kodu i podłączenia elementów. Przy dobrym zrozumieniu zadania, podłączenie i oprogramowanie uC staje się formalnością.

 

 

Kod i układ

Schematy połączeń

Schemat pilota IR
Schemat podłączenia pilota IR
Schemat podłączenia zaimplementowanego wcześniej pilota na podczerwień
Schemat podłączenia naszego pilota na podczerwień
  • dioda niebieska – świeci się w trakcie zrobienia zdjęcia
  • dioda szara – dioda IR  (musi być skierowana na aparat)

Kod

Cały proces zaimplementowałem w 4 funkcjach.

Pierwsza z nich opisuje zachowanie jednego “taktu” sygnału dochodzącego do diody o częstotliwości 38 kHz. Funkcje:

opisują stany wysokie i niskie z naszego wzorca.  Jako argumenty przyjmują liczby cykli przypadające na dany stan.

Z racji, że wszystko jest zaznaczone na schemacie, zatem odzwierciedlenie przebiegu będzie kwestią przepisania tych wartości do kodu. To właśnie zawiera końcowa funkcja:

 

Implementację kończymy charakterystycznymi dla Arduino funkcjami setup() i loop(), wraz z prostą komunikacja z użytkownikiem (spust z microswitch’a). Dodatkowo zostanie zapalona zwykła dioda LED w celu poinformowania w jakim momencie robione jest zdjęcie.

 

Efekt końcowy

Po podłączeniu i zaprogramowaniu efekt jest następujący:

 

Przepraszam za jakość.

 

Gdzie ta sztuka?

No właśnie. Przyda nam się trochę wcześniej wspomnianej kreatywności.

Robienie pojedynczych zdjęć nie prezentuje w całości potencjału projektu. Hmm. Urządzenia mają to do siebie, że nie narzekają na dużą ilość dokładnej roboty. Jakby to wykorzystać? Niech Arduino robi masę zdjęć w dokładnych odstępach czasu!
Tak jest! To jest to czego szukaliśmy:  Film poklatkowy. :)

Schemat działania filmu poklatkowego
Schemat działania filmu poklatkowego

Modyfikując zmienną “opoznienie“, ustalamy różnice w czasie pomiędzy zdjęciami z górnego wiersza. Im wyższy współczynnik opóźnienia, tym świat pokazany na zamontowanym filmie porusza się szybciej.

Za pomocą kilku prostych elementów zrobiliśmy urządzenie pozwalające nam tworzyć filmy “w przyspieszeniu”, czyli tzw filmy poklatkowe.

Drobna modyfikacja kodu:

Zrobione zdjęcia łączymy w film i gotowe.

 

Mój efekt:

Z góry przepraszam za jakość, nie specjalnie znam się na obróbce filmowej, zatem ze zdjęć w wysokiej rozdzielczości film powstał w nie do końca zadowalającej jakości.
Ale wyszło całkiem ciekawie :)

 

 

Mam nadzieję, że się podobało.

Dziękuję i pozdrawiam :)

Ocena: 4.8/5 (głosów: 105)

Podobne posty

28 komentarzy do “Pilot IR do Nikon’a, czyli tworzymy film poklatkowy

  • Wreszcie artykuł na wysokim poziomie. Jak możesz dodaj jeszcze parę słów o tym, czym jest ta “nośna” (carrier), bo nie każdy może wiedzieć.
    Piąteczka.

    Odpowiedz
    • Postaram się jak najszybciej uzupełnić te informacje, mam już nawet fajny pomysł. Myślę, że dziś się jeszcze pokażą.
      Bardzo dziękuję za dobre słowa. :)

      Odpowiedz
  • W pełni zasłużona piąteczka! Temat bardzo fajny, opisany rzeczowo – nic dodać, nic ująć :)

    Zmieniłbym tylko jedno – ikonę wpisu (tą wyświetlaną na stronie głównej). Jak byś tam dał jakieś zdjęcie np. Nikona razem z Twoim układem, z pewnością będzie bardziej przyciągać wzrok czytelników :)

    Odpowiedz
  • A ja nie napiszę więcej niż Łukasz i Cube. Po prostu gratuluję. Fachowe podejście do tematu i oby tak dalej :D Oczywiście 5 :)

    P.S.
    Smaka zrobiłeś na film poklatkowy ;P

    Odpowiedz
    • Bardzo mi miło :)
      Zachęcam do zrobienia filmu, zachęcam :), tylko zanim zaczniesz to jeszcze lekko poczytaj o używaniu kodeków, bo ja to zrobiłem dość spontanicznie i z dobrych zdj wyszła średnia jakość.

      Odpowiedz
  • Niesamowicie wysoki poziom tego artykułu zbił mnie na kolana i niżej. Jestem pod wrażeniem jak niewiele trzeba, by było o wiele więcej lub coś w tym stylu. Pilot na podczerwień dla aparatu brzmi nieco fantastycznie, jednak dla samego smaku bycia twórcą elektroniki, warto spróbować swoich sił i stworzyć tego pilota. Właśnie dzięki takim poradnikom, ludzie przekonują się step-by-step, że to wcale nie jest takie trudne jak się wydaje. Imponujące, pozdrawiam :)

    Odpowiedz
  • Fajne ciekawe na pewno się przyda.
    Tylko jedna rzecz: To jest lustrzanka, a jak wiadomo lustrzanki mają dużą, choć ograniczoną liczbę zrobienia zdjęć (pada migawka). Do filmów poklatkowych lepiej jednak zmodyfikować oprogramowanie aparatu :)

    A zaprezentowane tu rozwiązanie lepiej sprawdzi się np. przy alarmach, albo przy opisanym tu sposobie otwierania drzwi pinem – niepoprawna kombinacja, robimy zdjęcie :)

    Odpowiedz
  • No właśnie pisałem o tym na samym początku, D3100 nie posiada opcji podczerwieni (nie ma odbiornika). Wybór serii zdjęć lub pojedyńczego odbywa się za pomocą suwaka przy pokrętle wyboru trybów. A propo seria zdjęć może być tylko robiona przy wciśniętym przycisku, brakuje opcji robienia zdjęć np. co sekundę. Zastanawia mnie czy można wgrać jakiś inny soft do nikona :)

    Odpowiedz
    • Zapewne można wgrać. Teraz większość aparatów ma opcję aktualizowania softu. Problemem może być znalezienie jakiegoś alternatywnego firmware :) Ja długo szukałem jakiegoś innego softu do mojego Coolpixa P300, bo w oryginalnym sofcie przy głośniejszych dźwiękach w czasie nagrywania filmów mikrofon sam się wycisza, co mnie potwornie wkurza…

      Odpowiedz
  • Brawo – świetna robota :)
    Jako że zaczynam zabawę z Arduino, przeczesywałem internet pod kątem sterowania lustrzankami/aparatami pod kątem obsługi z poziomu USB. Okazuje się, że przez USB można nie tylko wyzwalać migawkę, ale zmieniać bardzo dużo innych parametrów. Dzięki temu z połączenia Arduino + Shield USB + dolly slider sterowany servo można by było zrobić solidny time laps i to w dodatku HDR :) Taka myśl nasunęła mi się po obejrzeniu tego: http://vimeo.com/29950141

    Odpowiedz
  • Fajny pomysł. Właśnie przetestowałem na moim D90 i wszystko gra i buczy. Muszę zrobić jakiś test i może zamknę to w formę pilota DIY z funkcją zdjęć seryjnych.

    Odpowiedz
  • Super projekt!
    Ja również zaczynam zabawę z Arduino i niestety nie ogarniam jeszcze wszystkiego tak, jak bym chciał, chętnie jednak zrobię taki “pilot” dla żonki, która jest zapalonym fotografem. Jak dostosować Twój projekt do aparatu Cannon EOS6D? Nie bardzo rozumiem sprawę tych wypełnień ale czy muszę znaleźć w internecie “wypełnienia” dla Cannona?

    Odpowiedz
  • Chciałbym zapytać autora o czas przerwy pomiędzy pierwszą, a drugą sekwencją.
    “daną sekwencję należy powtórzyć dwukrotnie z 63.2 ms opóźnieniem”.
    Wg. szkicu:

    stan_0(2423*2);

    tymczasem 63,2ms to ok. 2403 cykli

    Nie rozumiem skąd wobec tego 2423 cykle (w dodatku x2).

    Serdecznie pozdrawiam i gratuluję świetnego projektu.

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?