タグ別アーカイブ: camera

Raspberry Pi と gPhoto2 で一眼レフを叩く

Raspberry Pi (Arch Linux インストール済み)に一眼レフをUSBで繋いで制御してみよう。

gPhoto2のインストール

# pacman -S gphoto2

違うディストリ/パッケージマネージャーでも、何かしら gphoto2 みたいなパッケージはあると思う。

簡単な使い方

接続されたデバイスの一覧を見る:

$ gphoto2 --list-ports
Devices found: 3
Path                             Description
--------------------------------------------------------------
ptpip:                           PTP/IP Connection               
usb:001,005                      Universal Serial Bus            
usb:001,003                      Universal Serial Bus            

機種名を表示:

$ gphoto2 --auto-detect
Model                          Port
----------------------------------------------------------
Canon EOS 600D                 usb:001,005

EOS 600DというのはEOS Kiss X5のことで、同じ製品でも日本と海外で名前が違うとかいうアレだ。

パーミッションの罠

では、 gphoto2 --summary でもっと詳しい情報を取得してみよう。

$ gphoto2 --summary

*** Error ***
An error occurred in the io-library ('I/O problem'): No error description available
*** Error (-7: 'I/O problem') ***

For debugging messages, please use the --debug option.
Debugging messages may help finding a solution to your problem.
If you intend to send any error or debug messages to the gphoto
developer mailing list <gphoto-devel@lists.sourceforge.net>, please run
gphoto2 as follows:

env LANG=C gphoto2 --debug --debug-logfile=my-logfile.txt --summary

Please make sure there is sufficient quoting around the arguments.

なんかエラーが出た。

しかし、このエラーはハードウエアの問題とかgPhoto2の問題ということとも限らない。なぜなら、

$ sudo gphoto2 --summary

としてみたり、

$ lsusb | grep Canon
Bus 001 Device 005: ID 04a9:3218 Canon, Inc. EOS 600D / Rebel T3i (ptp)
$ ls -l /dev/bus/usb/001/005
crw-rw-r-- 1 root root 189, 4 Feb 14 18:23 /dev/bus/usb/001/005
$ sudo chgrp users /dev/bus/usb/001/005
$ gphoto2 --summary

みたいな感じで /dev/bus/usb/ほにゃらら/ほにゃらら のグループを変えてやるとうまくいく。つまり、USBデバイスのパーミッション的な問題だということだ。

そこで、 udev の設定をいじる。Arch WikiのDigital Camerasのページを参考にして、

# groupadd camera
# /usr/lib/libgphoto2/print-camera-list udev-rules version 175 group camera > /etc/udev/rules.d/40-gphoto.rules
# usermod -a -G camera (自分)

みたいなことをやったらうまくいった。(自分の環境だと 40-gphoto.rules というファイルは /usr/lib/udev/rules.d/40-gphoto.rules に既に存在したが、/etc/udev/rules.d/ に同名のファイルを置くとそっちの方が優先される。この辺は man udev を参照。)

設定を変えた後は再起動が必要かもしれない。

簡単な使い方その2

gPhoto2 で写真を撮ってみる:

$ gphoto2 --capture-image

写真を撮影&ダウンロード:

$ gphoto2 --capture-image-and-download

頑張れば露出とかシャッター速度とかいろいろ設定できそうだが、そういうのはまた今度。

Raspberry Pi じゃなくても

gPhoto2は別にRaspberry Piじゃなくても普通のLinuxとかあるいはOS Xでも動くのだが、お節介なリッチなデスクトップ環境とかが入っていると、そっちの方にカメラの制御権(?)を奪われてしまう場合があるので注意しよう。

デジタル一眼レフカメラとスマートフォン、タブレットの連携

デジカメで撮った写真の転送については先の記事に書いた。この記事では、撮影時の連携について書く。デジカメと書いているが、ここに書くような連携に対応しているのはほとんどがデジタル一眼レフカメラだと思う。

携帯端末で詳細な設定をしながら撮影する(携帯端末にUSBホスト機能がある場合)

デジタル一眼レフとパソコンをUSBで繋いで連携させる話は知っているだろうか。デジタル一眼レフに繋いだパソコンでライブビューができたり、パソコンで設定をいじって撮影できたりするアレだ。もしも携帯端末がUSBホストに対応していれば、携帯端末で同じことができる。

USBホスト付きAndroid端末でデジタル一眼レフを制御する例はググるといくつか見つかったが、iPadでそれをしたという情報は見当たらなかった。iPadでは技術的に不可能なのか、それともAppleの制限が厳しくて許可されていないのか、あるいは単に誰もアプリを作っていないのかは知らない。ここでは、USBホストを搭載したAndroid端末での話をする。

Android端末に搭載されているのはmicroUSBポートなので、適切な変換ケーブルを介してデジタル一眼レフに繋ぐことになる。この用途に使えるAndroid側のアプリとしては、Canon製一眼レフ向けではDSLR Controller (BETA)(有償)というのが定番のようだ。他社製一眼レフカメラについては、少なくともNikon向けのものはアプリがあるようだ(Helicon RemoteはCanon製カメラと一部のNikon製カメラに対応。アプリは無料だが全ての機能を使うには有償のライセンスが必要)。

携帯端末を赤外線リモコンとして使う(携帯端末が赤外線通信に対応している場合)

多くのデジタル一眼レフカメラはワイヤレスリモコンに対応している。別途発売されている専用ワイヤレスリモコンを使えば、ワイヤレスでシャッターを押せるというわけだ。このワイヤレスリモコンは赤外線を使っているので、もしお手持ちの携帯電話が赤外線通信に対応していれば、わざわざ専用のワイヤレスリモコンを買わなくても携帯電話をワイヤレスリモコンとして使える可能性がある。

iPhoneが赤外線通信に対応していないのは周知の通りである。ではAndroid端末はどうかというと、赤外線通信に関するAPIはAndroid標準ではなくメーカーの独自機能になっている。シャープは赤外線通信・リモコンに関するAPIを公開(ここから参照)しているので、赤外線機能のついたシャープ製端末についてはアプリを作ることで端末を赤外線リモコンとして使えるようになる。

そのようなアプリはもうすでにあって、IRリモコン for DSLRNexRemoteがある。どちらも、カメラの方は複数のメーカーに対応しているが、端末の方はシャープのみである。

シャープ以外の携帯電話メーカーが赤外線に関するAPIを公開しているという話は聞かないので、シャープ以外の端末向けにこのようなアプリを作ることはできなさそうだ。古き良きフィーチャーフォン(ガラケー)はキャリアごとにその辺の仕様が決まっていたので、フィーチャーフォン向けのアプリでカメラ用のリモコンアプリを作ることは一応可能だろうが、実際にそういうアプリが存在するのかは筆者は知らない。

携帯端末本体に赤外線通信機能がなくても、イヤホンジャックなどを使って赤外線LEDを外付けすることはできる。イヤホンジャックに付けた赤外線LED向けのリモコンアプリを作ることは一応可能だろうが、あるのかどうかは筆者は知らない。

有線リモコンとして使う(…?)

デジタル一眼レフのリモコンとしては、赤外線リモコン以外に有線リモコンもある。しかし、有線リモコン用の端子は大抵メーカー独自なので、出来合いのケーブルを使って携帯端末と繋ぐことはできない。

ただ、もちろん電気的にはとても単純だと考えられるので、頑張ればスマートフォンなどのイヤホンジャックなどにつなげるケーブルを作ることはできるだろう。健闘を祈る。

その他

SmartTriggerという製品があって、iPhoneからデジタル一眼レフカメラのシャッターを押せるらしい。iPhoneとSmartTriggerの間はBluetooth LEで繋ぎ、SmartTriggerとデジタル一眼レフカメラは有線リモコンの端子、または赤外線で繋ぐようだ。

理想を言えば、カメラ自身がWi-FiまたはBluetoothに対応して、余分な機器なしに携帯端末と連携できるようになると良い。実際、最近の一部のカメラはWi-Fiに対応しており、スマートフォンと連携できるようである(参考)。

デジカメで撮った写真を外出先でスマートフォンに転送する方法まとめ

外出先で撮った写真をSNSなどにアップロードしたいとき、皆さんはどうしているだろうか。おそらく、ほとんどの人がスマートフォンやタブレット内蔵のカメラを使って写真を撮っていることだと思う。しかし、スマートフォンやタブレットのような携帯端末のカメラが貧弱なので、デジタルカメラで撮った写真をアップロードしたいという場合はどうだろうか。そういう時に使える方法をこの記事でいくつか紹介してみたい。この記事は個々の製品のレビューではないので、製品ジャンルの紹介と一般的なメリット、デメリットの列挙にとどめる。

カメラ本体がWi-Fi対応していれば多分最強なのだろうが、そういうカメラはまだ多くはない。なので、以下ではカメラに依存しない方法を見ていく。

タブレットや一部のAndroid端末の場合(携帯端末の種類に依存する方法)

携帯端末がUSBホスト機能を持っていれば話は楽だ。携帯端末にSDカードリーダーをつないでSDカードから読むか、カメラを直接USBでつないで写真を読み込める。パソコンに写真を取り込むのと一緒だ。

この方法が使えるのはiOSではiPadの仲間に限られる(iPhoneやiPod touchでは使えない)。Android端末では、タブレットは基本的に対応していると思う(例外はあるかもしれない)が、スマートフォンは機種に依存する。

iPadの場合は、30pin Dockの場合(初代~第3世代iPad)は純正のCamera Connection Kit、あるいはサードパーティーの類似製品(カードリーダーに加えてUSBコネクタを備えているもの、SDカード以外のメモリーカードにも対応したものを見かけた)がある。iPad mini、あるいは第4世代以降のiPadの場合は純正のLightning – SDカードカメラリーダーLightning – USBカメラアダプタが販売されている。Lightningコネクタに繋がるサードパーティー品はまだ見たことがない(秋葉原の路地裏で売られていた怪しげな品を除けば)。純正品はいずれも3000円程度である。写真を取り込む際は、カードリーダーにSDカードを差し込む、あるいはUSBでカメラを接続すると自動的に「写真」アプリが立ち上がり、写真を取り込むことができる。

Android端末の場合はスマホ対応を謳ったカードリーダーや変換ケーブルが販売されている。量販店で見かけたことのある人もいるだろう。安いものだと1000円を切っているものもある。AndroidにはSDカードやカメラから写真を取り込むアプリは(少なくともNexus 7の場合は)標準では付属しないようだ。Nexus Media Importerというアプリ(有償;Nexus Photo Viewerというアプリがお試しとして使えるようだ)がどうやら定番のようなので、筆者はそれを購入した。

この方法のメリットは、

  • 既存のメモリーカードを活かせる
  • カメラのバッテリー消費量は変わらない
  • 安価に済む

である。デメリットは、

  • メモリーカードを抜き差しする手間がかかる
  • 持ち歩く機器が増える
  • スマートフォンで使えるとは限らない

などが挙げられる。

それ以外の大多数の場合(携帯端末の種類に依存しない方法)

携帯端末がUSBホスト機能を持っていない場合はどうだろう。携帯端末と外の機器をつなぐ方法というのはそんなに多くなくて、広く普及していると言えるのはせいぜいWi-FiとBluetoothぐらいだろう。Bluetoothを使ってカメラから写真を転送するというのはあまり聞かないので、Wi-Fiを使って転送するものを見ていこう。

Wi-Fi内蔵のSDカードを使う

SDカードにWi-Fiのアンテナから何やら組み込んで、SDカードに保存した写真をWi-Fi越しにアクセスできるようにした製品がある。Eye-Fiが代表的だが、東芝のFlashAirTranscendのWi-Fi SDのような他社の類似製品も登場している。PQI Air Cardという、microSD-SD変換アダプターとして働く製品もある。

こういうSDカードには、SDカード自身がアクセスポイントとして働くものと、既存のアクセスポイント(モバイルルーターなど)に接続するものがある。両方のモードで動作する製品もある。スマートフォンからのアクセスには、大抵はメーカーから専用アプリが提供されているのでそれが使える。これらのSDカードは大抵はWebサーバーを搭載しているので、PCからの無線でのアクセスにはWebインターフェースが使える。個々の製品の情報についてはメーカーのWebサイトやWeb上の具体的な製品のレビューに譲る。

モノによっては、Webインターフェースや、起動時の動作をカスタマイズできるものもあるようだ。Flash Airはなんだか知らないがAPIが公開されている。PQI Air Cardは起動時にシェルスクリプトを走らせられるらしい。

この方法のメリットは、

  • カメラ+SDカードとスマートフォンの他に特別な機器を持ち歩く必要がない
  • 転送時にカメラからSDカードを抜き差しする必要がない

という点である。デメリットは、

  • 既存のSDカードを生かせない
  • カメラのバッテリー消費量が増える
  • SDカードがアクセスポイントとなる場合は携帯端末側のWi-Fi接続先を切り替える必要がある
  • 容量のバリエーションが少ない

などが挙げられる。

筆者はこのうち、TranscendのWi-Fi SDカードを使っている。SDカード自身がアクセスポイントとして働くモード(ダイレクトシェアモード)のほか、既存のアクセスポイントを3つまで登録することができる(インターネットモード)。既存のアクセスポイントにつながらなかった場合はダイレクトシェアモードになる。遭遇した問題点は

  • 買った当初は、Wi-Fi接続が1回でうまくいかないというかなり使い勝手に関わる問題があった(その後のファームウェアアップデートで解消された)
  • おそらく(PC側OS/カードリーダーとの)相性の問題だろうが、特定のカードリーダーで読み込みが異様に遅い場合がある
  • これも相性だろうが、Pocket Wifi (GL02P)に繋がってくれない(自宅の回線には繋がった)

などである。こういった相性問題が他社の類似製品でも起こるのかは筆者は知らない。

Wi-Fi接続のできるカードリーダーを使う

AirStashが代表的だが、最近は他社の類似製品もいろいろ出てきた。筆者が耳にしたことがあるのはPQIのAir Drive、SonyのWG-C10,WG-C20、プリンストンのToaster Pro、TAXANのMeoBank SD Plusなどであるが、探せば他にもあるだろう。

これらの製品群(Wi-Fiストレージとかポータブルワイヤレスサーバーとか呼ばれるようだ)は、ただのWi-Fiカードリーダーとしての機能ではなくて、付加機能を搭載していることが多い。具体的にどういう付加機能があるかはもちろん製品に依存するが、例としては

  • Wi-Fiアクセスポイントとして働くか、既存のアクセスポイントに繋がるか
    • Wi-Fiアクセスポイントになる場合、ホテルなどの有線LANを無線化できる
  • USBを使ってパソコンにつなぐ(PC用カードリーダーとして動作)
  • SDカード以外のメモリーカードへの対応
  • USBホスト(USBメモリなどを接続できる)
  • モバイルバッテリー

などがある。どうせならSIMカードを差し込んでモバイルルーターとして使える製品があってもいい気がするが、残念ながら聞いたことがない。

メリットは、

  • 既存のメモリーカードを活かせる
  • カメラのバッテリー消費量は変わらない

である。デメリットは、

  • メモリーカードを抜き差しする手間がかかる
  • カードリーダーがアクセスポイントの場合、接続先を切り替える手間がかかる
  • 持ち歩く&充電を気にする機器が増える

という点である。

筆者はこのジャンルの製品を持っていないので、個々の製品についてあまり突っ込んだことは書けない。