この記事は M5Stack Advent Calendar 2020 の19日目の記事です。
以前、M5Stackをカメラの有線リモコン化する実験を行った。
今回、(ブレッドボードではなく)プロトモジュールを使った実装と、簡単なタイマーリモコンとして使うためのプログラムを組んだので紹介したい。
続きを読むこの記事は M5Stack Advent Calendar 2020 の19日目の記事です。
以前、M5Stackをカメラの有線リモコン化する実験を行った。
今回、(ブレッドボードではなく)プロトモジュールを使った実装と、簡単なタイマーリモコンとして使うためのプログラムを組んだので紹介したい。
続きを読むCanon 製の一部の一眼レフカメラ/ミラーレスカメラには赤外線センサーがついていて、純正もしくは互換品の赤外線リモコンを買うとカメラに触れずにシャッターが押せる。(エントリーモデルの安い機種だと赤外線センサーがついていなかったりするので注意)
純正品のリモコンとしては Canon RC-6 が販売されている。Amazonとかを覗くと、 RC-6 互換のリモコンが山ほど売られている。
動作モードとしては、以下の二つがあり、リモコン側で切り替えられる。
有線のリモートスイッチと違って、赤外線リモコンを使うには、カメラ側の動作モードをリモコンモードにしなければいけない。
この赤外線リモコンが送る信号は割と単純で、以下のページで解析されている。
www.doc-diy.net :: Canon RC-1 remote control reverse engineered
AVRとかのマイコンと赤外線LEDを組み合わせれば、自作の赤外線リモコンを作ることもできる。上記のWebサイトにも作例がある。
www.doc-diy.net :: DIY Canon RC-1 IR remote control clone
というわけで赤外線リモコンを自作しようかと思ったが、既製品で良さそうなのを見つけたのでそれを買ってしまった。赤外線が結構強力で、2.5mmステレオケーブルを繋げば有線リモコンとしても使える。欠点があるとすれば、電池がやや特殊なことか。
Raspberry Pi (Arch Linux インストール済み)に一眼レフをUSBで繋いで制御してみよう。
# 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 を参照。)
設定を変えた後は再起動が必要かもしれない。
gPhoto2 で写真を撮ってみる:
$ gphoto2 --capture-image
写真を撮影&ダウンロード:
$ gphoto2 --capture-image-and-download
頑張れば露出とかシャッター速度とかいろいろ設定できそうだが、そういうのはまた今度。
gPhoto2は別にRaspberry Piじゃなくても普通のLinuxとかあるいはOS Xでも動くのだが、お節介なリッチなデスクトップ環境とかが入っていると、そっちの方にカメラの制御権(?)を奪われてしまう場合があるので注意しよう。
デジカメで撮った写真の転送については先の記事に書いた。この記事では、撮影時の連携について書く。デジカメと書いているが、ここに書くような連携に対応しているのはほとんどがデジタル一眼レフカメラだと思う。
デジタル一眼レフとパソコンを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 DSLRやNexRemoteがある。どちらも、カメラの方は複数のメーカーに対応しているが、端末の方はシャープのみである。
シャープ以外の携帯電話メーカーが赤外線に関するAPIを公開しているという話は聞かないので、シャープ以外の端末向けにこのようなアプリを作ることはできなさそうだ。古き良きフィーチャーフォン(ガラケー)はキャリアごとにその辺の仕様が決まっていたので、フィーチャーフォン向けのアプリでカメラ用のリモコンアプリを作ることは一応可能だろうが、実際にそういうアプリが存在するのかは筆者は知らない。
携帯端末本体に赤外線通信機能がなくても、イヤホンジャックなどを使って赤外線LEDを外付けすることはできる。イヤホンジャックに付けた赤外線LED向けのリモコンアプリを作ることは一応可能だろうが、あるのかどうかは筆者は知らない。
デジタル一眼レフのリモコンとしては、赤外線リモコン以外に有線リモコンもある。しかし、有線リモコン用の端子は大抵メーカー独自なので、出来合いのケーブルを使って携帯端末と繋ぐことはできない。
ただ、もちろん電気的にはとても単純だと考えられるので、頑張ればスマートフォンなどのイヤホンジャックなどにつなげるケーブルを作ることはできるだろう。健闘を祈る。
SmartTriggerという製品があって、iPhoneからデジタル一眼レフカメラのシャッターを押せるらしい。iPhoneとSmartTriggerの間はBluetooth LEで繋ぎ、SmartTriggerとデジタル一眼レフカメラは有線リモコンの端子、または赤外線で繋ぐようだ。
理想を言えば、カメラ自身がWi-FiまたはBluetoothに対応して、余分な機器なしに携帯端末と連携できるようになると良い。実際、最近の一部のカメラはWi-Fiに対応しており、スマートフォンと連携できるようである(参考)。
外出先で撮った写真をSNSなどにアップロードしたいとき、皆さんはどうしているだろうか。おそらく、ほとんどの人がスマートフォンやタブレット内蔵のカメラを使って写真を撮っていることだと思う。しかし、スマートフォンやタブレットのような携帯端末のカメラが貧弱なので、デジタルカメラで撮った写真をアップロードしたいという場合はどうだろうか。そういう時に使える方法をこの記事でいくつか紹介してみたい。この記事は個々の製品のレビューではないので、製品ジャンルの紹介と一般的なメリット、デメリットの列挙にとどめる。
カメラ本体がWi-Fi対応していれば多分最強なのだろうが、そういうカメラはまだ多くはない。なので、以下ではカメラに依存しない方法を見ていく。
携帯端末が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を使って転送するものを見ていこう。
SDカードにWi-Fiのアンテナから何やら組み込んで、SDカードに保存した写真をWi-Fi越しにアクセスできるようにした製品がある。Eye-Fiが代表的だが、東芝のFlashAirやTranscendのWi-Fi SDのような他社の類似製品も登場している。PQI Air Cardという、microSD-SD変換アダプターとして働く製品もある。
こういうSDカードには、SDカード自身がアクセスポイントとして働くものと、既存のアクセスポイント(モバイルルーターなど)に接続するものがある。両方のモードで動作する製品もある。スマートフォンからのアクセスには、大抵はメーカーから専用アプリが提供されているのでそれが使える。これらのSDカードは大抵はWebサーバーを搭載しているので、PCからの無線でのアクセスにはWebインターフェースが使える。個々の製品の情報についてはメーカーのWebサイトやWeb上の具体的な製品のレビューに譲る。
モノによっては、Webインターフェースや、起動時の動作をカスタマイズできるものもあるようだ。Flash Airはなんだか知らないがAPIが公開されている。PQI Air Cardは起動時にシェルスクリプトを走らせられるらしい。
この方法のメリットは、
という点である。デメリットは、
などが挙げられる。
筆者はこのうち、TranscendのWi-Fi SDカードを使っている。SDカード自身がアクセスポイントとして働くモード(ダイレクトシェアモード)のほか、既存のアクセスポイントを3つまで登録することができる(インターネットモード)。既存のアクセスポイントにつながらなかった場合はダイレクトシェアモードになる。遭遇した問題点は
などである。こういった相性問題が他社の類似製品でも起こるのかは筆者は知らない。
AirStashが代表的だが、最近は他社の類似製品もいろいろ出てきた。筆者が耳にしたことがあるのはPQIのAir Drive、SonyのWG-C10,WG-C20、プリンストンのToaster Pro、TAXANのMeoBank SD Plusなどであるが、探せば他にもあるだろう。
これらの製品群(Wi-Fiストレージとかポータブルワイヤレスサーバーとか呼ばれるようだ)は、ただのWi-Fiカードリーダーとしての機能ではなくて、付加機能を搭載していることが多い。具体的にどういう付加機能があるかはもちろん製品に依存するが、例としては
などがある。どうせならSIMカードを差し込んでモバイルルーターとして使える製品があってもいい気がするが、残念ながら聞いたことがない。
メリットは、
である。デメリットは、
という点である。
筆者はこのジャンルの製品を持っていないので、個々の製品についてあまり突っ込んだことは書けない。