スマホカメラのシャッターを切る
ESP32

概要

ESP-WROOM-32をBLEキーボードにして、スマートフォンと接続し、カメラアプリのシャッターを切る実験です。

実験

以下のステップで実験を行いました。

  • ESP-WROOM-32をBLEキーボードにする
  • スマホと接続してカメラアプリのシャッターを切る

ESP-WROOM-32をBLEキーボードにする

Arduino core for the ESP32向けのBLEキーボードライブラリが公開されています。このライブラリを利用することで、ESP-WROOM-32をBLEキーボード化することができます。

このライブラリは、キーボードライブラリとほぼ同じ(almost identical)ように作られているとのことです。

簡単な使い方

サンプルプログラムが付属しているので、使い方に困ることはないと思います。ただし、サンプルプログラムでは、Ctrl+Alt+Deleteの同時押しを行っているので、少し注意してください。

  • キーボードオブジェクトの定義
    • BleKeyboard.hをインクルードする
    • BleKeyboard型変数を定義する
1
2
#include <BleKeyboard.h>
BleKeyboard bleKeyboard;

上記の場合、“ESP32 BLE Keyboard"というデバイス名で認識されます。デバイス名を変更するには、BleKeyboard型変数を定義する際、第1引数にデバイス名を指定します。

1
2
#include <BleKeyboard.h>
BleKeyboard bleKeyboard("garretlab keyboard");

第2引数は、deviceManufacturer(デフォルト: “Espressif”)、第3引数は、batteryLevel(デフォルト: 100)となっています。

  • キーボードを開始する
1
bleKeyboard.begin();
  • ホストデバイスと接続されているか確認する
1
2
3
if(bleKeyboard.isConnected()) {
  // 接続時の処理を記述する
}
  • キーボードを操作する
    • print()、println()、write()、press()、release()などを使う
1
2
3
4
5
bleKeyboard.print("Hello world");
bleKeyboard.println("Arduino");
bleKeyboard.write(KEY_RETURN);
bleKeyboard.press(KEY_DELETE);
bleKeyboard.release(KEY_VOLUME_UP);

どういうシンボルが利用できるかは、BleKeyboard.hを参照してください。また、write()は、press()後、release()するのと同じ動作です。

スマホと接続してカメラアプリのシャッターを切る

(少なくとも私のAndroid端末では、)カメラ起動中に、Volume Upボタンを押せば、シャッタを切ることができます。PCからESP-WROOM-32にエンターキーを送信すると、ESP-WROOM-32からスマホにVolume Upキーを送信するプログラムを作成しました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <BleKeyboard.h>

BleKeyboard bleKeyboard;

void setup() {
    Serial.begin(115200);
    bleKeyboard.begin();
    Serial.println("Press enter to take a picture.");
}

void loop() {
    if (Serial.available() > 0) {
        if (Serial.read() == '\n') {
            if (bleKeyboard.isConnected()) {
                bleKeyboard.write(KEY_MEDIA_VOLUME_UP);
                Serial.println("Took a picture.");
            } else {
                Serial.println("Not connected.");
            }
        }
    }
}

このプログラムを書き込んだ後、スマホとESP-WROOM-32をペアリングし、カメラアプリを起動します。その後、シリアルモニタから、リターンキーをESP-WROOM-32に送信すると、カメラのシャッターを切ることができます。

私の端末では、Volume Up以外に、リターンキー(KEY_RETURN)でも、シャッターを切ることができました。

試してはみましたが、安価なスマホ用のシャッターリモコンが売られているので、シャッターを切るだけであれば、Arduinoを利用することの意味は????ですね。

バージョン

Hardware:ESP-WROOM-32
Software:Arduino 1.8.13/Arduino core for the ESP32

最終更新日

March 21, 2022

inserted by FC2 system