この記事は M5Stack Advent Calendar 2020 の19日目の記事です。
以前、M5Stackをカメラの有線リモコン化する実験を行った。
今回、(ブレッドボードではなく)プロトモジュールを使った実装と、簡単なタイマーリモコンとして使うためのプログラムを組んだので紹介したい。
目次
作りたいもの
よくあるタイマーリモコンはこんな感じ:
タイマーリモコンはカメラメーカーが純正品を出しているが、Amazonとかを探せば安い互換品がたくさん出てくる。筆者が持っているのもそういうものの一つだ。
タイマーリモコンとして必要な機能は
- ディレイ(セルフタイマー)
- シャッタースピード(押下時間)
- インターバル
- 回数
の4項目の調整と、それをスタート・ストップできることである。
これらの4項目と、実際にシャッターが押下されるタイミングの関係は次のようになる:
このほか、普通の有線リモコン(レリーズ)にある
- シャッターの押下
- シャッターの押しっぱなし(ロック、バルブ)
も欲しい。
M5StackにはLCDディスプレイが備わっているので、設定項目の表示は問題ない。一方、操作用のボタンは3つだけでは心許ない。そこで、独自にレバースイッチを実装することにした。
完成品
出来上がったハードウェアはこちら
M5Stackと積み重ねた様子は以下のようになる:
カメラとの接続には、別途2.5mmステレオ端子のついたケーブルを使う。カメラ側も2.5mmステレオ端子であれば
のような汎用品が使えるし、そうでなければAmazonでそれっぽいケーブルを入手できる。以下の写真の右上が2.5mmステレオケーブルで、左下は、オリンパスのRM-UC1互換ケーブルだ。
カメラに接続した様子は以下のようになる:
動作の様子を簡単な動画にしてみた:
以下、実装について。
プロトモジュールを使った実装
今回は試作ということで、公式のプロトモジュールを使って実装することにした。
まず、有線リモコンとして使うために
- 2.5mmステレオジャック
- aitendoで買った表面実装用のものを使用。数年前に購入したもので、型番はよくわからない
- フォトカプラ(2回路)
- 数年前に購入したTLP621(生産終了)を使用
- フォトカプラ用の(電流制限)抵抗×2
- 手持ちの200Ωを使用
は最低限実装する必要がある。この他、操作用のインターフェースがボタン3つだけでは心許ないので、追加の操作インターフェースとして
- レバースイッチ:上下と押下
- レバースイッチ用のプルアップ抵抗×3
- 手持ちの100kΩを使用
を実装した。
回路図は
という感じになる。
当初、シャッター制御用のピンに19番と23番を使っていたが、それはMISO/MOSIで使用されるピンで、LCDの制御と干渉してしまった。その場のノリで適当に配線したらダメですね。
タイマーリモコン化プログラム
やっつけで書いたので、かなり汚いコードになっている(せめてコメントを書け)。
今後の方向性
タイマーリモコンとしての機能は揃ったが、ここで留まって良いものか。否である。「最強のカメラリモコン」を作るためにできることはまだまだある。
まず、せっかくESP32の載ったM5Stackを使っているのだから、Wi-Fiを使ってスマホからの操作を可能にしたい。これはプログラム次第でできるだろう。
関連研究:
次に、M5Stackを手持ちしたりカメラからぶら下げるのではなく、カメラのアクセサリーシューに装着できると良さそうである。これはアクリル板等で適当に工作すればできそうだ。
カメラを制御する方法には今回使った有線(3極)以外にもいくつかある。具体的には赤外線、USB、Wi-Fi/Bluetoothだ。
このうち、(プロトコルが広く知られているという意味で)扱いが楽そうなのは赤外線だ。今回作ったモジュールに赤外線LEDをつけて無線リモコンとして使えるようにすると「最強のカメラリモコン」に一歩近づけるだろう。
(USBはソフトウェア的に大変そうな気がするし、Wi-Fi/Bluetoothはごく最近のカメラじゃないと搭載されていない&解析の必要があるという欠点がある。)
関連: