SSブログ

ソニーのデジカメ NEX のリモート撮影 (ATtiny13A 版) [Arduino]

NEC形式のリモコンを ATtiny13A を使ってつくりましたが、今回はSONYのリモコン(SIRC形式)です。
対象はうちのデジカメ NEX-5N です。

nex5n_ir.jpg

まずはデータの解析です。専用のリモコンを購入すればいいのですが、もったいないので 「マルチリモコン iRemo2」 という iモードのアプリが作ったデータをもとにしています。

マルチリモコン iアプリ iRemo2 « FUTABA WEB
http://www.256byte.com/i-remo/

<解析結果>
■SHUTTER
||||_||_|_||_||_|_||_|_|_||_|_||_||_||_|_|_|_||_||_||_||_
Binary : (LSB) 1011010-0101110001111 (MSB)
 Data : 0x2D (7bit)
 Adr. : 0x1E3A (13bit)

■2SEC
||||_||_||_||_|_||_||_|_|_||_|_||_||_||_|_|_|_||_||_||_||_
Binary : (LSB) 1110110-0101110001111 (MSB)
 Data  : 0x37 (7bit)
 Adr.  : 0x1E3A (13bit)

■MOVIE
||||_|_|_|_||_|_|_||_|_||_|_||_||_||_|_|_|_||_||_||_||_
Binary : (LSB) 0001001-0101110001111 (MSB)
 Data  : 0x48 (7bit)
 Adr.  : 0x1E3A (13bit)

コマンドのデータ 7 ビットに、機種の識別コード 13 ビットの計 20 ビットでした。
これを踏まえて、先日のスケッチを少しいじって完成です。
// PWMで40kHzをつくる赤外線リモコン (ATtiny13A (1.2MHz), SIRC版)
#include <util/delay_basic.h>
#include "wiring_private.h"

void setup() {    // OC0B (Arduino的には1番ピン(PB1)) を 40kHz PWM 出力にする。 
  DDRB |= B00000010;
  TCCR0A = (0<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (1<<WGM00); 
  TCCR0B = (1<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00);
  OCR0A = 29;  // (( 1.2MHz / 40kHz ) / 1(分周) ) - 1 = 29
  OCR0B = 10;  // duty比を1/3にする ( 1.2MHz / 40kHz ) / 3 = 10
  TIMSK0 = 0;  // タイマー割り込みの不許可 (Arduinoの時間系関数と競合するのでつぶす)
}

void loop() {
  sendIrSIRC1M2Hz( 0x2D | (uint32_t) 0x1E3A << 7, 20 );    // SONY alpha Shutter
  sendIrSIRC1M2Hz( 0x2D | (uint32_t) 0x1E3A << 7, 20 );    //  2回送ってみる。
  delayDeciseconds1M2Hz( 49 );                             // 5秒のdelay
}

void sendIrSIRC1M2Hz( uint32_t d , uint8_t len ) {  // T = 0.60msec = 180 loops @ 1.2MHz
    // リーダ
  sbi(TCCR0A, COM0B1);  _delay_loop_2(  720 );    // リーダ ON  (4T)
  cbi(TCCR0A, COM0B1);  _delay_loop_2(  180 );    // リーダ OFF (1T)
    // データ (コマンド+アドレス)
  for(uint8_t i = 0; i < len; i++) {
    sbi(TCCR0A, COM0B1);  _delay_loop_2( (d>>i) % 2 ? 360 : 180 ); // データ ON (0:1T/1:2T)
    cbi(TCCR0A, COM0B1);  _delay_loop_2( 180 );   // データ OFF (1T)
  }
    // トレーラ OFF 全長75T:( 75T - 5T(リーダ) - (2.5T(平均T) * ビット数) ) * 180 loops 
  _delay_loop_2( 12600 - 450 * len );  // トレーラ OFF (おおよその時間) 
}

void delayDeciseconds1M2Hz( uint16_t ds ) {    // 1.2MHz動作時 0.1sec単位のdelay
  while( ds-- )  _delay_loop_2( 30000 );           // 1MHzなら 25000
}

PB0 のピン はPWM出力以外なら使うことはできるみたいです。
リセットピンを除くと4本残り、これをインターバル撮影の間隔の指定に使えそうです。

SONY デジタル一眼カメラ α NEX-5N ダブルレンズキット ホワイト NEX-5ND/W

SONY デジタル一眼カメラ α NEX-5N ダブルレンズキット ホワイト NEX-5ND/W

  • 出版社/メーカー: ソニー
  • メディア: エレクトロニクス

ソニー リモートコマンダー RMT-DSLR1

ソニー リモートコマンダー RMT-DSLR1

  • 出版社/メーカー: ソニー
  • メディア: エレクトロニクス


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。