カメラのシャッターを一定時間ごとに切っていく撮影方法をインターバル撮影といいます。微速度撮影やタイムラプス撮影という呼び方もあります。この方法で動きのある被写体を撮ると、時間が速く進む動画を作ることができます。
今回はArduinoを使ってソニーのミラーレス一眼レフカメラNEXシリーズ用プログラマブル赤外線リモコンを作り、インターバル撮影に挑戦します。リモコンのタイマー設定はiPhoneを通じて行なうことにして、作りやすさと操作性を両立させました。プログラムしだいで、インターバル撮影以外の用途にも使えるでしょう。
Arduinoについては、過去の記事を参考にしてください。2012年6月の記事がまとめになっています。
赤外線リモコンを作るときに不可欠なパーツが赤外線LEDです。形も使い方も普通のLEDと変わりませんが、動作を肉眼で確認することはできません。デジカメのレンズを通して観察すると青白く点灯して見えるので、動作チェックをしたいときはそうしてください。
赤外線リモコンは一種のデジタル送信機です。決められた通信プロトコルで赤外線を発射し、対象となる機器をコントロールします。ほとんどのメーカーはそのプロトコルを公開していないので、自作にあたっては、自分で正規のリモコンを用意してそれが発する赤外線を解析するか、有志の解析結果を活用することになります。
ありがたいことに、ソニーのデジタルカメラについては、Sebastian SetzさんがArduino用のライブラリを公開してくれているので、わずか数行のプログラム(Arduinoではスケッチといいます)を書くだけで、リモコンの自作が可能です。まず、このページから、ライブラリ(multiCameraIrControl_1-7.zip)をダウンロードしてください。
zipファイルなので、展開してからフォルダごとArduinoのlibrariesフォルダへコピーしましょう。
今回はもう1つライブラリを導入します。
iPhoneとArduinoの間を普通のオーディオケーブルでつないで通信するのに必要な“SoftModem”のライブラリです。作者のarms22さんは、このページでライブラリ、iPhoneアプリ、回路図といった必要なすべての情報を公開しています。
このページからSoftModem-004.zipをダウンロードして、先ほどと同様にlibrariesへコピーしてください。
Arduinoに書き込むスケッチは我々が用意しました。ここからzipファイルをダウンロードし、解凍してできたフォルダをArduinoのスケッチが保管されているフォルダにコピーすると、Arduino IDEから開くことができます(コピー後、IDEを再起動する必要があります)。
Arduino IDEのバージョンは1.0.1でテストしました。ボードはArduino Unoを使いましたが、他の互換機でも動作すると思います。
動作チェックに使用したカメラはNEX-5NとNEX-7です。他の赤外線リモコンに対応するソニー製カメラにも使えるでしょう。
なお、SetzさんのmultiCameraIrControlライブラリは、ソニー以外のカメラにも対応しています。キヤノン、ニコン、オリンパス、ペンタックスについては作者によるテストが済んでいるようです。我々のスケッチをほんの少し改造するだけで、使えるはずなので、ライブラリを調べてぜひトライしてみてください。
複雑な処理はArduinoとiPhoneが吸収してくれるので、付け加える必要がある部品はわずかです。
この回路は2つに分けることができ、1つは赤外線LEDの発光部(回路図中のピンク色の部分)、もう1つはiPhoneからのオーディオ信号を受信するSoftModem部(ピンク以外の部分すべて)です。
赤外線LEDは、電流をしっかり流すためにFETを使って駆動しています。2N7000の代わりに2SC1815などのトランジスタを使ってもいいでしょう。
SoftModem部はオーディオ信号を整えてArduinoに入力するのが役目です。半固定抵抗(VR1)は、オーディオ信号を読み取る際の基準となる電圧をArduinoに与えるのが仕事で、あらかじめ適切な電圧を発生するよう調整しておく必要があります。
テスターを用意し、Arduinoの電源を入れた状態で、D7端子とGNDの間の電圧を測りながらVR1を調整して、電圧が2.7Vとなるようにします(3.3V電源のArduinoを使用する場合は1.95Vが目安です)。
まずブレッドボード上に組んでみました。赤外線LEDは対象の機器に向けたほうがいいので、横向きに取り付けてあります |
Arduino Unoは9V電池1個でも動作するので、簡単にカメラの前へ持っていけます |
撮影を始める前にiPhoneを使ってインターバル(秒数)を設定する必要があり、そのためにarms22さんが公開している専用のアプリを使用します。App Storeで「音響電文」というアプリを検索し、インストールしてください。無料です。
音響電文は一種のターミナルソフトウエアで、入力した文字をオーディオに変換して出力します。そのときに重要なのは、iPhoneのボリュームを最大にしておくこと。試しに、ヘッドフォン端子に何も繋がない状態で何かメッセージを入力し、Sendボタンを押してください。すると「ピギッ!」という耳障りな音が聞こえるはずです。これが正常な状態。ファクシミリのピーギョロギョロという音と同じように、デジタルデータを可聴域の周波数変化に変換した結果です。
1回、ピギッ! を確認したら、オーディオケーブルをヘッドフォン端子につなぎ、その一端をArduinoにつないで、念のためArduinoをリセットし、音響電文に「15.」と入力してSendボタンを押してください。これで「15秒間隔でシャッターを切る」という指示が行なわれました。そのとおり周期的にカシャッとシャッター音が聞こえますか? 反応がないときは、カメラのメニューで赤外線リモコンが有効になっていることを確認してください。赤外線LEDとカメラの距離は1m程度、カメラの赤外線受光部の前に遮るものがないこともチェックしましょう。
間隔を100秒に設定したいときは「100.」と入力します。「.」が文末を意味しています。超ロングインターバルで撮影したい場合、おそらく30,000秒くらいまでは有効ですが、4桁以上の値はテストしていません。短い方は8秒まで大丈夫でした。スケッチは1秒間隔まで対応しているのですが、NEX-7は8秒より短く設定しても信号を無視します。処理を終えて撮影可能状態に戻るまで一定の時間がかかるためでしょう。
カメラ側の設定変更は、リモコンモードに切り替える以外は、とくに必要ありません。通常の撮影と同じです。最初のテストはプログラムオートにセットしておけばいいでしょう。
【動画】車内と湖畔で撮った写真を1本の動画にまとめたものです。撮影インターバルは8秒。2時間近く、バッテリの交換もせずに撮り続けることができました。テストのために行き当たりばったりで出かけた結果できあがった動画ですが、撮った本人たちにとっては「ある1日の記録」として、思いのほか楽しく見ることができる映像となりました |
今回はソニーのカメラだけを対象にしましたが、Arduino赤外線リモコンで制御可能な機械は他にもいろいろあります。TV用のライブラリを公開している人もいるようです。自分で信号を解析する労を厭わなければ、エアコン等の白物家電の制御も可能でしょう。
また、SoftModemは双方向の通信に対応しています。今回は、iPhoneからArduinoへ送信する方向だけを利用しましたが、逆向きの通信も、わずかな部品を追加するだけで可能になります。専用基板を用いるキットも用意されているので、手早く実装したい人は検討してみるといいかもしれません。
最後に我々が現在開発中の不思議デバイスを紹介します。LilyPad Arduinoをベースに、今回紹介したものと同じ回路を構築しました |
スマホにサクッと挿してリモコン化できます |