はじめに
最近は、iPadでkindle本を読むことが多くなったのですが、
ページめくりを手元でできないかと思っていました。
リレータッチボードとESP32を使って実現できましたので、
紹介させていただきます。
本記事では、タップ動作のみ扱います。
電子工作でiPadを操作してみる関連の記事
- 電子工作でiPadを操作してみる-1 : リレータッチボードの使い方 <=本記事
- 電子工作でiPadを操作してみる2 - Bluetooth経由で制御する
- 電子工作でiPadを操作してみる3 - スワイプをやってみる
最終的にやりたいこと
- ユーザがスイッチを押す
- ESP32(Periferal)がスイッチを検出し、Bluetooth経由で通知する
- ESP32(Central)が通知を検出し、リレータッチボードをON/OFFする
- iPadがタップを検出する
リレータッチボード
スイッチサイエンスさんで取り扱っている製品となります。
以下製品紹介を引用
スマートフォンなどの画面をタッチすることができるボードです。スマートフォンの画面にボードを置いた状態でリレーをONにするとボードを置いた位置を指でタッチした状態として認識されます。この製品はリレー駆動用のドライバが搭載されていますので1.6mA程の電流でリレーをONにできます。
作業環境
- ホストPC
- windows10 64bit Home
- VSCode - 1.47.2
- NodeJS - 12.14.1 LTS
- ターゲットボード
- ESP32-WROOM-32 開発ボード
- MicroPython 1.12(esp32-idf4-20191220-v1.12.bin)
- ESP32-WROOM-32 開発ボード
ESP32におけるMicroPythonの環境構築は、以前記載した
-
[備忘録]ESP32-VSCode-microPythonでの開発環境の構築
を参考にしてください。
作業手順
リレータッチボードの動作の準備
まず、リレータッチボードと接続するためにはんだ付けが必要です。以下がはんだ付けした写真です。
次に、ESP32との接続とします。
※最終的に2つ使うので、2つの接続例を載せます。
ESP32 | リレータッチボード | 備考 |
---|---|---|
5V | 5V | |
GND | GND | |
26 | EN | |
27 | EN |
- 接続図(ESP32 - Central)
動作確認用のプログラム
次に、動作を確認するプログラムとなります。
import time
from machine import Pin
PIN_RELAY_1 = 26
PIN_RELAY_2 = 27
relays = {}
relays[1] = Pin(PIN_RELAY_1, Pin.OUT)
relays[2] = Pin(PIN_RELAY_2, Pin.OUT)
def tap(no, count=1, ht=50):
for _ in range(count):
relays[no].value(True)
time.sleep_ms(ht)
relays[no].value(False)
time.sleep_ms(ht)
return
ポイントは以下となります。
- iPadがタップを認識するのは、value(False)のタイミング
- 待ち時間(ht)を小さくしすぎるとダメ
- リレースイッチの応答性の問題と思われます
- 20msec未満だと、失敗することが多い
実行方法
- 上記のプログラムをdemo.pyとして、ESP32にアップロード
- 以下を実施する(本記事のトップのgifとなります)
>>> import demo
>>> demo.tap(1, 1, 50)
==> 1回タップされる
>>> demo.tap(1, 100, 20)
==> 100回タップされる
- 動作確認には、"Vivid Counter"を使用しています
さいごに
- 今回は、ESP32を使用していますが、ラズベリーパイでもできます
- 複数のタッチボードを使うとスワイプも実現できます
- 精度よくスワップをやろうとすると、3つはいるようです(2つだと安定したスワップが難しい)