PR

ESP32でiPhoneのカメラのリモートシャッターを自作してみた

iphone-camera-teke-picture-bluetooth-esp32-eyecatch

休日はもっぱら電子工作したりマイコンをいじっているホビーハッピーです。

今回は、iPhoneの制御をESP32でやってみようというお話です。
制御と言ってもそんなに大そうなものではなく、
以前記事にしたBluetoothキーボードの機能を使うだけです。

イメージとしては、ESP32搭載のマイコンボードをバッテリーで駆動。
その状態で、iPhoneとESP32搭載のマイコンボードをBluetoothで無線接続する。
無事無線接続が完了したら、ESP32搭載のマイコンボードからシャッターを切る。

こんな流れになります。
もちろん、人間のタイミングでシャッターを切りたいので、
ESP32搭載のマイコンボード側にはタクトスイッチをつけておきます。
いわゆる物理スイッチですね。そのスイッチを人間が押したら、
シャッターが切れるようにする。
つまりiPhoneのシャッターを切るトリガーは物理スイッチということです。

前置きはこれくらいにして早速紹介していきましょう!

この記事を読むことでわかること

ESP32を使ってiPhoneの無線リモートシャッターを作る方法がわかる。

自己紹介

サラリーマンしてます。

主に工場(生産現場)で使用する検査装置のアプリケーション開発してます。

ヒトの作業を自動化して簡略化するアプリケーションを日々開発中。

2022年5月に転職。現役バリバリの技術者です。
現在は超大手企業の新規事業分野で装置の研究・開発をしています。

Youtubeチャンネルにさまざまな動画を上げています

↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓

注意

本ブログはアフィリエイトを用いた広告を掲載しています。

完成形はどんな感じになるか動画で解説。

esp32で、iphoneのシャッターを切ってみる。
実際に完成形の状態でiPhoneのシャッターを切っている動画。

ご覧いただければわかりますが、
もうほんとに純正品かと思うくらいレスポンスは最高です。

バッテリー等でESP32に電源供給できれば、
どこでも使えます。ちょっとしたケースに入れれば、
旅行先なんかでも十分使えると思いますね。

さすがにブレッドボードむき出しはちょっと外では使いたくないですが….

まずは何が必要か?道具の紹介。

必要な道具は、こちらです。
代用可能なものもありますが、とりあえずこれだけあればできる。
という道具を紹介しておきます。

ESP32でiPhoneのリモートシャッターを作るために必要な道具たち
  • ESP32搭載のマイコンボード
  • iPhone
  • ブレッドボード
  • ジャンパーワイヤー
  • タクトスイッチ
  • バッテリー

バッテリーは、今回はESP32搭載のマイコンボードに
直接電源供給できるLiPoバッテリーで紹介しますが、
USBを使ったモバイルバッテリーでも代用可能ですのでご安心ください。

必要なもの①:ESP32搭載のマイコンボード

これが無いとちょっと今回のお話は何もできない…
もうお持ちであれば新たに購入する必要はありませんが、
お持ちでない場合は、購入してください。

マイコンボードなんてどこで売ってるんだよ。

なんて思ってもご安心ください。
イマドキはAmazonなど大手通販サイトで購入が可能です。
しかも1個1,000円程度で購入可能ですから、
ちょっとした趣味としても最適なんです。
消耗品でもないので、頻繁に購入する必要もありません。

ただ、一つ買うと、他のマイコンボードはどうなんだろう…
なんて始まり、私みたいにマイコンボードだけの
おもちゃボックスが出来上がるので注意です。

ちなみに今回使用したのは、以前から登場している、
LolinD32というモデルです。

当然ですが、わたしはAmazonで購入しました。
こんなの電気屋さんで売っているの見たことない….

今確認したところ、Amazonだと欠品になってますね…
代替品としてはESP32が載っているマイコンボードなら基本なんでもOKです。

ピン配置が若干変わりますが、それは読み替えてください。

↑ESP32搭載のマイコンボードの一例を載せておきます。
こちらを購入しても同じことが可能ですのでご安心ください。

必要なもの②:iPhone

つぎに制御対象となるiPhoneです。
これはなんでも大丈夫です。

使えるかどうかの基準としては、次の手順でシャッターが切れれば使えます。

  • 純正カメラアプリを起動する。
  • 音量ボタン(側面の物理スイッチ)を押すことでシャッターが切れるか。

上記の手順で写真が撮れるならば使用可能です。

IOSのバージョンなんかも古すぎなければ上記のことはできるはずです。

必要なもの③:ブレッドボード

次に必要なのは、ブレッドボードです。
簡単に言ってしまうと、ブレッドボードとは穴の開いた板ですね。

ここにESP32搭載のマイコンボードを挿して、
そこからタクトスイッチなんかに線を使って接続します。

ブレッドボードはなんでもよいのですが、
高いものではないので、日本製のものを選ぶとのちのち後悔がありません。

安いからとAmazonでよくわからないメーカーの
ブレッドボードを購入すると、わたしのように何回も買い直すハメになりますから、
さいしょから良いブレッドボードを購入することをオススメします。

↓↓粗悪なブレッドボードで苦労した話は以前書いています。↓↓

安いからと粗悪品を選ぶとこうなります…

オススメのメーカーは、サンハヤトですね。
このメーカーなら間違いないです。

必要なもの④:ジャンパーワイヤー

これは、ブレッドボード上の穴に挿して使う導線です。
この導線を通して電気が流れます。

ジャンパーワイヤーは安物でも構いませんが、
長さが思ったものと違う、もう少し長ければ…なんてカスタマイズが
したくなる時って出てくると思います。

そんな時は自作してしまう方法もあるとご紹介しておきましょう。

ジャンパーワイヤーを自作したときの記事。

必要なもの⑤:タクトスイッチ

冒頭でご説明した通り、
このタクトスイッチを押したら、iPhoneのシャッターを切ります。

人間の動作をトリガーにしたいので、今回はタクトスイッチを導入します。
もちろん、タクトスイッチ以外でもトリガーとなりそうなものは世の中たくさんありますが、
一般的にスイッチというとこれかな?ということで採用しています。

tact-switch
タクトスイッチ。いわゆる押したらすぐに戻るスイッチ。

こちらもAmazonで購入可能です。
電子部品なのでなん十個も入ってお安いです。

わたしが購入したのはこちら。↓↓

色んなサイズのスイッチが入って、全部で140個のスイッチが入っています。
これは使いきれない…でもあって困るものでもないのでこれにしました。

表面実装用も入っていてちょっと面白いですよね。

必要なもの⑥:バッテリー

バッテリーは、LolinD32で組むとき用に書いていましたが、
現在入手できなさそうなので、今回はモバイルバッテリーで考えました。

実はArduinoも含めてですが、
マイコンボード全般、ソースコードを書き込んだ後は、
USBから給電するだけで書き込んだ内容が再生されます。

つまり、いつもPCとつないでいるUSBのコネクタに、
モバイルバッテリーをつなげるとそのまま動作してくれるんです。

ここら辺の話は、動画にしているので一度ご覧いただけると理解できると思います。

【arduinoでLチカ】arduino nano everyを使って、Arduinoを買った人がまず何をすればいいのか解説。道具の要らないLチカを紹介。
この動画の最後のほうで、DC5Vを入れて動作させています。

携帯の充電器で駆動させていますが、
モバイルバッテリーも同じ電圧ですから、同じことができます。

モバイルバッテリーは市販品のモノでなんでもいいのですが、
スリープに入るといちいちボタンを押さないといけないので、
こんな感じで低消費電力用のモバイルバッテリーのほうが良いかもしれないです。

ハード的な構成(配線図含む)。

構成は、こちらの配線図をご覧いただければすぐにわかると思います。

lolind32_keyboard
以前の記事の使いまわしで申し訳ないです…

16,17,18,19番ピンとタクトスイッチをつなげています。

今回は、シャッターを切るという1つの目的ですので、
タクトスイッチは1つあれば十分です。

ですので、16番ピンのみを使用することにします。
ソースコード上でこの16という数字は必要になります。

ソフト的なところという章でソースコードを載せていますが、
そちらとこのハード的な構成は合わせておく必要があるというのは覚えておいてください。

ソフト的なところ(ソースコードあり)。

ではいよいよソフト的なところです。

まずソースコードを載せておきます。

#include <BleKeyboard.h>

BleKeyboard bleKeyboard("hobbyhappy"); // Can be renamed to any device name you like.

void setup() {
  bleKeyboard.begin();

  pinMode(16,INPUT_PULLUP);    // GPIO16(pullup) 
}

void loop() {
  if(bleKeyboard.isConnected()) {     // Check to see if they are connected.
    if(digitalRead(16) == LOW){       // If GPIO16 change to LOW
      bleKeyboard.write(KEY_MEDIA_VOLUME_UP);    // Take picture.
      delay(200);
    }   
  }
}

こんな感じでOKです。

ソースコードの行数としては全然大したことないですよね。
ポイントとなるのは、BleKeyboard.hですね。

こちらはライブラリなのですが、
あらかじめ準備が必要です。

そこらへんの話は、この記事で詳しく解説しているので、
まずはこちらを確認してみてください。

この記事の、「書き込むプログラムについて」の章で詳しく解説しています。

今回のまとめ

今回は、前回ESP32でキーボードの代わりに文字を打つ記事の発展でした。

やっていることはキーボードの代わりなのですが、
iPhoneのシャッターが無線で操作できるのは結構需要としてありそうなので
記事にしてみました。

おもちゃにしては実用性がそこそこある気がします。
カバー付きで外で使うのもありな気がします。

コメント

タイトルとURLをコピーしました