SonyのデジイチをM5StickC PLUSでリモート操作できるようにしてみた
Sonyのデジタルカメラα350を、M5StickC PLUSでリモート操作できるようにしてみました。
M5StickC PLUSは、Arduino互換機であるESP32 PICOをベースに、LCDやボタン、各種センサ、バッテリーなどを一つのケースにパッケージしたM5Stackシリーズ製品のひとつです。
▼ 半導体不足のため入手困難な場合は、ひとつ前のモデルのM5StickCも選択に入れてみてください。この記事では、M5StickC PLUSとフォトカプラを使って、デジイチのREMOTE端子をハック方法を紹介してます。内容はぜんぜん難しくないので、ぜひ覗いていってください。前半はフォトカプラの使い方を説明し、後半でSonyのα350をArduinoで制御する方法を紹介します。M5StickC PLUSの使い方は M5StickC PLUSでArduinoをはじめよう! をご覧ください。
フォトカプラとは
フォトカプラ(Photo Coupler)とは、パッケージの中に発光素子と受光素子が対になって収納された電子部品です。発光素子にはLED、受光素子にはフォトトランジスタが使用されます。
フォトカプラの使い方
- LEDに電流を流すとLEDが発光します。
- フォトトランジスタが光を受信すると、フォトトランジスタのコレクタ(4)・エミッタ(3)間が導通します。
- 光に応じて、つまり入力電流の大きさによって、コレクタ・エミッタ間の電流の流れやすさは制御されます。
実際のフォトカプラは、リレーのようなスイッチとしての使い方が多いように思われます。リレーと違って大電流を流すのは難しいですが、その代わり機械的な動作がない分、リレーよりも遥かに高速に動作させることができます。 また、図のように発光素子と受光素子は光で繋がっているだけです。なので、MOSFETの代わりに絶縁したい場所に使用できます。
ところで、エフェクター回路やアナログ音響機材などでは、受光素子にCdSを使ったアナログタイプを使用することが多いです。以前にフォトカプラを自作した記事を書いた。
M5StickC PLUSとフォトカプラの配線
今回使用したフォトカプラは、LTV4N35です。 LTV4N35のデータシート
なぜか6ピンのパッケージタイプですが、4ピンのフォトカプラと同様、実際使用するピンは4つだけです。なので皆さんはお好きなフォトカプラを使って下さい。ちなみに、フォトカプラはPC817が定番で人気なようですので、どのフォトカプラを買ったら良いかお悩みの方はこちらをおすすめします。 PC817のデータシート
さて、こちらがArduinoとフォトカプラの配線図例になります。
発光素子はLEDですので、__必ず抵抗をはさんで下さい。フォトカプラは、電流オーバーで簡単に壊れます。__ 抵抗の値は何を制御するかによります。フォトカプラLTV4N35に抵抗を介して3.3Vの電圧入力して、各部分を測定してみましたので次の表を参考にしてみて下さい。ちなみに、M5StickC PLUSのGPIO出力は3.3Vです。
入力抵抗(Ω) | 出力抵抗(Ω) | 消費電流(mA) |
---|---|---|
10k | 4.3k | 0.25 |
1k | 400 | 2.2 |
220 | 150 | 9.3 |
ArduinoやRaspberry PiなどのGPIOでは、それほど出力電流を出せませんので__小さくても220Ω程度__に留めておいた方が無難でしょう。
また、フォトトランジスタには方向があるため、__コレクタからエミッタは電流が流れやすくなりますが、エミッタからコレクタは流れにくい__ので、出力先に極性がある場合は注意してください。
SONYのデジイチα350をArduinoで制御
最後にフォトカプラを使った実践をしてみました。タイトルの通り、SONYのデジイチα350をArduinoで制御してみます。制御する対象となるのは、シャッターとフォーカスのみです。 実は、デジタル一眼レフを始めてみたくて最近ヤフオクでSONYのα350を安く手に入れました。α350は、2008年ごろに発売された古いカメラですが、初心者の私には十分すぎる性能です。 そんな中、このカメラには「REMOTE」という端子があり、専用のアダプタをつなぐと カメラを触らずにフォーカスとシャッターを操作できるのを知りました。そこで、この「REMOTE」端子をハックしてArduinoで操作してみたくなったのです。 さて、α350の「REMOTE」の仕様を調べた結果、海外のサイトでそのやり方を見つけることができました。__REMOTE端子のピンは3つなのですが、それぞれ、シャッター・フォーカス・コモンとなっており、単純にスイッチを使ってコモンとショートさせれば良いようです。__ 思いのほか簡単な仕組みで安心しました。
▼こちらの海外サイトも参考にしてみてください。 Make a Wired SONY ALPHA DSLR Remote (by Brad Justinen) Camera remote release pinout list
そういう訳で、フォトトランジスタの記事を書いたのもこれをやりたかったためでした。高度なことをやっているようです、ArduinoでLチカができれば誰でもできるような簡単なプログラムでカメラを制御できます。
こちらが、M5StickC PLUSとa350のREMOTE端子を配線した図になります。 配線図のとおり、フォトカプラを二つ使用してます。フォーカスを押す時は、あらかじめ__カメラ側のオートフォーカスをオン__にして下さい。 また、__フォーカスがHighの状態__でないとシャッターは切れません。 __配信図のREMOTE端子は、カメラ側の配列__になってますのでご注意ください。 プログラムは次の通りです。M5Stack以外のArduinoでやる場合は、M5の関数部分を書き換えて下さい。ちなみに、スイッチングが速すぎるとカメラが反応しなかったのでdelayでタイミングを調整してあります。
#include <M5StickCPlus.h>
#define FORCUS_PIN 0 // G0
#define SHUTTER_PIN 26 // G26
void setup() {
M5.begin();
M5.Axp.ScreenBreath(9);
M5.Lcd.fillScreen(WHITE);
M5.Lcd.setTextColor(BLACK);
M5.Lcd.setCursor(0, 10);
M5.Lcd.setTextSize(2);
M5.Lcd.println(" Forcus:");
M5.Lcd.println(" Press btnA");
M5.Lcd.println("");
M5.Lcd.println(" Shutter:");
M5.Lcd.println(" Press btnB");
pinMode(FORCUS_PIN, OUTPUT);
pinMode(SHUTTER_PIN, OUTPUT);
digitalWrite(FORCUS_PIN, LOW);
digitalWrite(SHUTTER_PIN, LOW);
}
void loop() {
M5.update();
digitalWrite(SHUTTER_PIN, LOW);
if (M5.BtnA.wasPressed()) {
Serial.println("Doing forcus");
digitalWrite(FORCUS_PIN, LOW);
delay(100);
digitalWrite(FORCUS_PIN, HIGH);
delay(300);
}
if (M5.BtnB.wasPressed()) {
Serial.println("Doing shutter");
digitalWrite(SHUTTER_PIN, HIGH);
delay(300);
digitalWrite(FORCUS_PIN, LOW);
}
}
実際の様子は下記の動画でご覧になれます。参考にしてみてください。
次は、ダイソーで買ったBluetoothリモートシャッターを使って、デジイチを制御してみたいですね。乞うご期待ください!