M5Stackでカメラのタイマーリモコン(タイマーレリーズ)を作ってみた

この記事は M5Stack Advent Calendar 2020 の19日目の記事です。


以前、M5Stackをカメラの有線リモコン化する実験を行った。

今回、(ブレッドボードではなく)プロトモジュールを使った実装と、簡単なタイマーリモコンとして使うためのプログラムを組んだので紹介したい。

目次

作りたいもの

よくあるタイマーリモコンはこんな感じ:

タイマーリモコンはカメラメーカーが純正品を出しているが、Amazonとかを探せば安い互換品がたくさん出てくる。筆者が持っているのもそういうものの一つだ。

タイマーリモコンとして必要な機能は

  • ディレイ(セルフタイマー)
  • シャッタースピード(押下時間)
  • インターバル
  • 回数

の4項目の調整と、それをスタート・ストップできることである。

これらの4項目と、実際にシャッターが押下されるタイミングの関係は次のようになる:

このほか、普通の有線リモコン(レリーズ)にある

  • シャッターの押下
  • シャッターの押しっぱなし(ロック、バルブ)

も欲しい。

M5StackにはLCDディスプレイが備わっているので、設定項目の表示は問題ない。一方、操作用のボタンは3つだけでは心許ない。そこで、独自にレバースイッチを実装することにした。

完成品

出来上がったハードウェアはこちら

M5Stackと積み重ねた様子は以下のようになる:

カメラとの接続には、別途2.5mmステレオ端子のついたケーブルを使う。カメラ側も2.5mmステレオ端子であれば

のような汎用品が使えるし、そうでなければAmazonでそれっぽいケーブルを入手できる。以下の写真の右上が2.5mmステレオケーブルで、左下は、オリンパスのRM-UC1互換ケーブルだ。

カメラに接続した様子は以下のようになる:

Canon製一眼レフに繋いだ様子
オリンパスのコンデジに繋いだ様子

動作の様子を簡単な動画にしてみた:

以下、実装について。

プロトモジュールを使った実装

今回は試作ということで、公式のプロトモジュールを使って実装することにした。

まず、有線リモコンとして使うために

  • 2.5mmステレオジャック
    • aitendoで買った表面実装用のものを使用。数年前に購入したもので、型番はよくわからない
  • フォトカプラ(2回路)
    • 数年前に購入したTLP621(生産終了)を使用
  • フォトカプラ用の(電流制限)抵抗×2
    • 手持ちの200Ωを使用

は最低限実装する必要がある。この他、操作用のインターフェースがボタン3つだけでは心許ないので、追加の操作インターフェースとして

を実装した。

回路図は

という感じになる。

当初、シャッター制御用のピンに19番と23番を使っていたが、それはMISO/MOSIで使用されるピンで、LCDの制御と干渉してしまった。その場のノリで適当に配線したらダメですね。

タイマーリモコン化プログラム

やっつけで書いたので、かなり汚いコードになっている(せめてコメントを書け)。

今後の方向性

タイマーリモコンとしての機能は揃ったが、ここで留まって良いものか。否である。「最強のカメラリモコン」を作るためにできることはまだまだある。

まず、せっかくESP32の載ったM5Stackを使っているのだから、Wi-Fiを使ってスマホからの操作を可能にしたい。これはプログラム次第でできるだろう。

関連研究:

次に、M5Stackを手持ちしたりカメラからぶら下げるのではなく、カメラのアクセサリーシューに装着できると良さそうである。これはアクリル板等で適当に工作すればできそうだ。

カメラを制御する方法には今回使った有線(3極)以外にもいくつかある。具体的には赤外線、USB、Wi-Fi/Bluetoothだ。

このうち、(プロトコルが広く知られているという意味で)扱いが楽そうなのは赤外線だ。今回作ったモジュールに赤外線LEDをつけて無線リモコンとして使えるようにすると「最強のカメラリモコン」に一歩近づけるだろう。

(USBはソフトウェア的に大変そうな気がするし、Wi-Fi/Bluetoothはごく最近のカメラじゃないと搭載されていない&解析の必要があるという欠点がある。)

関連: