なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

iPhoneで一眼レフカメラのシャッターを制御する

Posted by arms22 on 2010年08月12日 0  0

iPhoneとArduinoとSoftModemインターフェースボードを使って、一眼レフカメラのシャッターを制御してみたよ。これはSoftModemインターフェースボードを使ったとっても実用的な作例の1つだね。まずは動画を見てみて(最初の1分は飛ばしてもいいよ)。



仕組みはいたって簡単。iPhoneからArduinoにシャッター制御のコマンドが送られ、Arduinoはコマンドを受けてシャッターを制御している。iPhoneとArduinoの通信にはSoftModemインターフェースボードを使い、カメラのシャッター制御は以前、実験した回路をそのまま使っている(フォトカプラを使ってリモートレリーズのスイッチを制御)。


Arduinoと周辺回路



リモートリリース /w Arduino

ミニブレッドボードにSoftModemインターフェースボードとフォトカプラを実装している。カメラとの接続は2.5Φのステレオフォンジャックを使う。


フォンジャックのピン配


release_plug_connect.jpg

真ん中(Right)と根元(Gnd)をショートさせると半押し(オートフォーカス)、先端(Left)と根元(Gnd)をショートさせると全押し(シャッターを切る)となる。


回路図


リモートリリース回路図

D4/D5にシャッター制御用のフォトカプラを、D3/D6/D7にSoftModemインターフェースボードを接続する。


ライブラリのインストール


次のURLからライブラリをダウンロードして、Arduinoのライブラリフォルダ(OSXの場合~/Documents/Arduino/libraries、Windowsの場合My Documents/Arduino/libraries)にコピーしてください。

SoftModem
http://code.google.com/p/arms22/downloads/list?can=2&q=SoftModem+label%3AFeatured


サンプルスケッチ


#include <SoftModem.h>

// SoftModemクラスのインスタンス
SoftModem modem;

const int pinAF = 5; // 半押しスイッチ制御用ピン
const int pinShutter = 4; // 全押しスイッチ制御用ピン
const int pinLED = 13; // Arduino基板上のLEDピン

// iPhoneからのシャッター制御コマンドの定義
#define MULTI_TRIGGER_SHUTTER_ON 0x01
#define MULTI_TRIGGER_SHUTTER_OFF 0x02
#define MULTI_TRIGGER_AF_ON 0x03
#define MULTI_TRIGGER_AF_OFF 0x04
#define MULTI_TRIGGER_SHOOT             0x05

void setup()
{
  // ポート入出力設定
  pinMode(pinShutter, OUTPUT);
  digitalWrite(pinShutter, LOW);

  pinMode(pinAF, OUTPUT);
  digitalWrite(pinAF, LOW);

  pinMode(pinLED, OUTPUT);
  digitalWrite(pinLED, LOW);

  // デバッグ用シリアル通信開始
  Serial.begin(57600);

  // SoftModem通信開始
  modem.begin();

  Serial.println("multi trigger");
}

void loop()
{
  // iPhoneから3byte以上データ受信したら
  while(modem.available() >= 3){
    int syn = modem.read();
    if(syn == 0xff){ // 1byte目同期用0off確認
      uint8_t cmd = modem.read(); // 2byte目コマンド
      uint8_t opt = modem.read(); // 3byte目オプション
      // コマンド毎の制御
      switch(cmd){
      case MULTI_TRIGGER_SHUTTER_ON:
        digitalWrite(pinShutter, HIGH);
        digitalWrite(pinLED, HIGH);
        Serial.println("shtter on");
        break;
      case MULTI_TRIGGER_SHUTTER_OFF:
        digitalWrite(pinShutter, LOW);
        digitalWrite(pinLED, LOW);
        Serial.println("shtter off");
        break;
      case MULTI_TRIGGER_AF_ON:
        digitalWrite(pinAF, HIGH);
        Serial.println("af on");
        break;
      case MULTI_TRIGGER_AF_OFF:
        digitalWrite(pinAF, LOW);
        Serial.println("af off");
        break;
      case MULTI_TRIGGER_SHOOT:
        digitalWrite(pinLED, HIGH);
        digitalWrite(pinShutter, HIGH);
        delay(200);
        digitalWrite(pinLED, LOW);
        digitalWrite(pinShutter, LOW);
        Serial.println("shoot!");
        break;
      default:
        Serial.println("unknow command");
        break;
      }
    }
    else{
      Serial.println("not sync");
    }
  }
}


iPhoneアプリ: MultiTrigger


MultiTriggerスクリーンショット

MultiTriggerはiPhone用カメラシャッター制御用アプリケーションです。現在の機能はマニュアル撮影とインターバル撮影に対応しています。もっと色々な機能を追加しようと計画中ですが、時間が足りません。。「俺がもっとクールで多機能なアプリ作ってやるよ!」という方はご連絡ください。色々サポートさせていただきます。

例によってAppStoreでは配布していません、すみません。。ソースコードをダウンロードしてご自身でビルド&インストールを行ってください。

MultiTrigger-001
http://code.google.com/p/arms22/downloads/detail?name=MultiTrigger-001.zip


関連URL


SoftModemインターフェースボード発売!
http://arms22.blog91.fc2.com/blog-entry-366.html

Arduinoで遊ぼう - 一眼レフカメラのシャッターを制御する
http://arms22.blog91.fc2.com/blog-entry-326.html


Arduinoをはじめようキット
スイッチサイエンス
売り上げランキング: 751


Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ
小林 茂
オライリージャパン
売り上げランキング: 5371



Ads by Google

Leave a reply






管理者にだけ表示を許可する

該当の記事は見つかりませんでした。