Imaginary Code

from kougaku-navi.net

Arduino + XBee WiFiでTHETAのシャッターを切る

前回、ProcessingからTHETAのシャッターを切るのが作れた時点で半ば勝利は確信していたのですが、ArduinoXBee WiFiを使ってシャッターを切るのにも成功しました。これでモバイルでのインターバル撮影はもちろん、各種電子工作と連携した全天球撮影が可能となり、かなり創作の幅が広がります。


使用する道具

単純にXBee WiFiを搭載したXBeeシールドをArduinoに挿すだけです。Arduino Fioを使うのでもいいですね。XBeeの設定にはXBeeエクスプローラUSBを使用しました。

XBee WiFiの設定

重要なのはXBee WiFiの設定です。X-CTUなどを使って以下の項目の設定を行ってください。

  • Network type: INFRASTRUCTURE
  • SSID: 【THETAのSSID
  • IP Protocol: TCP
  • IP Addressing Mode: DHCP
  • Destination IP Address: 192.168.1.1
  • Source Port: 3D7C
  • Destination Port: 3D7C
  • Encryption Enable: WPA2 (AES) SECURITY
  • Passphrase: 【THETAのWiFiのパスワード】
  • IP Address of gateway: 192.168.1.1 ←自動的に決まるので空欄でOK
  • IP Address Mask: 255.255.255.0 ←自動的に決まるので空欄でOK
  • Module IP Address: 192.168.1.5 ←自動的に決まるので空欄でOK

Arduinoのコード

以下は、5秒おきにTHETAのシャッターを切るプログラムになっています。マイコンからインターバル撮影!

unsigned char cmd_init[28] = { 28, 0, 0, 0, 1, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 0, 0, 0 };
unsigned char cmd_open[22] = { 22, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 2, 16, 0, 0, 0, 0, 1, 0, 0, 0 };
unsigned char cmd_capture[26] = { 26, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 14, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.write( cmd_init, sizeof(cmd_init) );
  Serial.write( cmd_open, sizeof(cmd_open) );
  Serial.write( cmd_capture, sizeof(cmd_capture) );
  delay(5000);
}

初期化、セッションのオープン、シャッターコマンドの3つを毎回送っています。前者2つは本来何度もやる必要はないと思いますが、WiFiの接続が確立するタイミングがいつになるか不確定なので、あえて毎回やっています。ATコマンドで接続確認するなど対処法はあると思いますが、とりあえずいちばん簡単なコードということで。


RICOH デジタルカメラ RICOH THETA 全天球 360°カメラ 0175760

RICOH デジタルカメラ RICOH THETA 全天球 360°カメラ 0175760