SonyのデジイチをM5StickC PLUSでリモート操作できるようにしてみた

SONY α350をArduinoで制御
SONY α350をArduinoで制御

Sonyのデジタルカメラα350を、M5StickC PLUSでリモート操作できるようにしてみました。

M5StickC PLUSは、Arduino互換機であるESP32 PICOをベースに、LCDやボタン、各種センサー、バッテリーなどを一つのケースにパッケージしたM5Stackシリーズ製品のひとつです。

この記事では、M5StickC PLUSとフォトカプラを使って、デジイチのREMOTE端子をハック方法を紹介しています。内容はぜんぜん難しくないので、ぜひ覗いていってください。前半はフォトカプラの使い方を説明し、後半でSonyのα350をArduinoで制御する方法を紹介します。M5StickC PLUSの使い方はM5StickC PLUSでArduinoをはじめよう!をご参考になさってみてください。

フォトカプラとは

フォトカプラの構造
フォトカプラの構造

フォトカプラ(Photo Coupler)とは、パッケージの中に発光素子と受光素子が対になって収納された電子部品です。発光素子にはLED、受光素子にはフォトトランジスタが使用されます。

フォトカプラの使い方

  1. LEDに電流を流すとLEDが発光します。
  2. フォトトランジスタが光を受信すると、フォトトランジスタのコレクタ(4)・エミッタ(3)間が導通します。
  3. 光に応じて、つまり入力電流の大きさによって、コレクタ・エミッタ間の電流の流れやすさは制御されます。

実際のフォトカプラは、リレーのようなスイッチとしての使い方が多いように思われます。リレーと違って大電流を流すのは難しいですが、その代わり機械的な動作がない分、リレーよりも遥かに高速に動作させることができます。

また、図のように発光素子と受光素子は光で繋がっているだけです。なので、MOSFETの代わりに絶縁したい場所に使用できます。

ところで、エフェクター回路やアナログ音響機材などでは、受光素子にCdSを使ったアナログタイプを使用することが多いです。以前にフォトカプラを自作した記事を書いたので、興味ある方はこちらをご参考になさってください。

M5StickC PLUSとフォトカプラの配線

今回使用したフォトカプラは、LTV4N35です。

なぜか6ピンのパッケージタイプですが、4ピンのフォトカプラと同様、実際使用するピンは4つだけです。なので皆さんはお好きなフォトカプラを使って下さい。ちなみに、フォトカプラはPC817が定番で人気なようですので、どのフォトカプラを買ったら良いかお悩みの方はこちらをオススメします。

Arduinoとフォトカプラの配線図例
Arduinoとフォトカプラの配線図例

さて、こちらがArduinoとフォトカプラの配線図例になります。

発光素子はLEDですので、必ず抵抗をはさんで下さい。フォトカプラは、電流オーバーでカンタンに壊れます。

抵抗の値は何を制御するかによります。フォトカプラLTV4N35に抵抗を介して3.3Vの電圧入力して、各部分を測定してみましたので次の表を参考にしてみて下さい。ちなみに、M5StickC PLUSのGPIO出力は3.3Vです。

入力抵抗(Ω)出力抵抗(Ω)消費電流(mA)
10k4.3k0.25
1k4002.2
2201509.3

ArduinoやRaspberry PiなどのGPIOでは、それほど出力電流を出せませんので小さくても220Ω程度に留めておいた方が無難でしょう。

また、フォトトランジスタには方向があるため、コレクタからエミッタは電流が流れやすくなりますが、エミッタからコレクタは流れにくいので、出力先に極性がある場合は注意してください。

SONYのデジイチα350をArduinoで制御

最後にフォトカプラを使った実践をしてみました。タイトルの通り、SONYのデジイチα350をArduinoで制御してみます。制御する対象となるのは、シャッターとフォーカスのみです。

実は、デジタル一眼レフを始めてみたくて最近ヤフオクでSONYのα350を安く手に入れました。α350は、2008年ごろに発売された古いカメラですが、初心者の私には十分すぎる性能です。

そんな中、このカメラには「REMOTE」という端子があり、専用のアダプタをつなぐとカメラを触らずにフォーカスとシャッターを操作できるのを知りました。そこで、この「REMOTE」端子をハックしてArduinoで操作してみたくなったのです。

さて、α350の「REMOTE」の仕様を調べた結果、海外のサイトでそのやり方を見つけることができました。REMOTE端子のピンは3つなのですが、それぞれ、シャッター・フォーカス・コモンとなっており、単純にスイッチを使ってコモンとショートさせれば良いようです。思いのほかカンタンな仕組みで安心しました。

▼こちらの海外サイトも参考にしてみてください。

そういう訳で、フォトトランジスタの記事を書いたのも、これをやりたかったためでした。高度なことをやっているように思えるかもしれませんが、ArduinoでLチカができれば誰でもできるようなカンタンなプログラムでカメラを制御できてしまいます。

M5StickC PLUSとa350のREMOTE端子の配線図
M5StickC PLUSとa350のREMOTE端子の配線図

こちらが、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);
    }

}

SONY α350をArduinoで制御
SONY α350をArduinoで制御

実際の様子はTwitterで動画投稿しましたので、こちらからご覧になれます。参考にしてみてください。

次は、ダイソーで買ったBluetoothリモートシャッターを使って、デジイチを制御してみたいですね。乞うご期待ください!

記事に関するご質問などがあればTwitterへお返事ください。
この記事で紹介した商品
M5Stackのオススメ参考書
M5Stack製品
M5StickCで使えるHat
関連記事