Androidの電子書籍用ページめくり機を無線化しました【2022/12/26追記】
去年の冬がくる前に、コタツに手を突っ込んだまま電子書籍のページ送りをできるようにしたくて、USB接続のページめくり機を作りました。ところが、ASUS ZenPad3 8.0をターゲットにした開発を終えて本命のBOOX Poke Proで使おうとしたところ、USB OTG(On-The-Go)非対応だったというオチが付いて、無線化したいなぁと思いつつ、ReaderStoreの本は物理ボタン付きのPRS-T3S、他の書店はBOOX Poke Proとワッツのリモートシャッターの組合せ、という使い分けにしていました。
その後、ReaderStoreで買った本がPRS-T3SでWi-Fiダウンロードできなくなったことから、なんとか有線接続して転送して読んでいたのですが、やっぱり不便なので、無線化の検討を再開しました。 BLE (Bluetooth Low Energy)のキーボードエミュレーションができる電子工作向きのチップかモジュールを調べたところ、無線マイコンモジュールのESP32-WROOM-32Eぐらいしか見当たらず、これを使うことにしました。
また、リモートシャッターや自分の電書めくり機を使っていると、タクトスイッチのクリック音が気になることがあります。夜中に読んでいる時はもちろん、昼間でも「カチカチカチカチ」言うのはちょっと頂けない。そう思っていたところ、aitendoさんのサイトで静音タクトスイッチなるものを見かけて買ってみたところ、ぷにぷにした感触が面白くクリック音も無く、サイズも大して大きくないので、これを使うことにしました。 とりあえず記念写真。できたものを中央にして、右がワッツのリモートシャッター、左が自作のUSB接続品です。

中身はこんな感じです。上の中央が無線マイコンモジュールのESP32-WROOM-32Eで、一番下にLi-Po電池があり、その右上に充電モジュールがあります。左の中央が電源スイッチと3.3Vのレギューレータ部になります。(なお、電池のリンク先が品切れになっていますが、同等品は多々あります。)

ここで、高々BLEなのに電源周りが大がかりになっているのは、先達が色々と苦労されているのを見たからです。特にこちらの記事が参考になりました:
8か月以上の長期間動作を確認! 超省エネIoTセンサESP32-WROOM-32 - ボクにもわかる電子工作のブログ -
こちらを読まずに、電圧だけ見てコイン電池で組んでいたら痛い目に遭うところでした。実際、ふつうの(ハイパワーでない)USB-シリアル変換器では起動できずリブートを繰り返していました。 さて、
ESP32を使うのは今回が初めてでした。当初は有線タイプで味を占めたMicroPythonを使おうかと考えていたのですが、作例が見当たらなかったので、素直にArduino IDEを使うことにしました。また、勝手が分からなかったので、まずは素直に開発ボードを使い、Lチカからやりました。マイクロテクニカさんのチュートリアルが分かりやすかったです。

無線化については、M5StickCの作例が参考になりました。ページめくりに欲しい機能は、リンクを辿ってT-vKさんのキーボードライブラリのヘッダファイルから、
それで機嫌良くESP32-WROOM-32Eでの電子工作をして、ENとBOOTのスイッチを手順に従って押しながらプログラムを転送しようとしたのですが、Arduino IDEがConnecting...からタイムアウトしてしまいます。配線ミスなどを疑ってみたのですが(1か所は間違えていたが直しても)解決せず、ふとEN端子をテスターで触ると電圧が出ていません。それでデータシート(リンク先PDF)を見るとペリフェラル側でプルアップするように書いてあるのを見落としていたことが分かりました。他方BOOTのGPIO0はデフォルトでプルアップだと書いてありますが、気持ち悪いので両方とも10kΩで外部プルアップしたところ、無事に動くようになりました。(答が分かってから検索するとFAQだったようです。FAQついでにUARTは3.3Vのクロス接続です。) あと、BleKeyboard.hを眺めていたら下の方にデバイス名と製造者の設定があったので、お遊びで変更してみました。これもアップしてあります(etw.h)。

こうすると、BOOX Poke Proの方からは、こう見えます:

ちょっと嬉しい。 完成したコードと回路図はGitHubにリポジトリを作ってアップしておきました。回路図は、例によって完成品の裏面にも貼りました。

最終的なBOMは次の通りで、合計1227円でした。電線・ピンヘッダ・ハンダ・ラベルはカウントしていません:
思いのほか、大げさな工作になってしまいました。リモートシャッターに入っているような省電力で小型のBLEチップが手軽に手に入るようになればいいのですけれど。
以上、何かの参考になれば幸いです。
パドラッパ from MacBook Air (2017)
【2022/12/26追記】
「BLE (Bluetooth Low Energy)のキーボードエミュレーションができる電子工作向きのチップかモジュール」として、有線バージョンで使っていたSeeed XIAOの新商品が出ていたことに、いまごろ気が付きました。国内でも2022年5月から売っているようです。
Seeed Studio XIAO nRF52840 Sense - TinyML/TensorFlow Lite- IMU / Microphone - Bluetooth5
なんと、Li-Po電池の充電コントローラまで内蔵されています。センサー無しバージョンもありますが、センサ付きの方が面白そう。こんど何か作るときには候補にします。(知っていたら絶対にこちらを使っていたのに… 自分のアンテナの低さが悔しい。)
その後、ReaderStoreで買った本がPRS-T3SでWi-Fiダウンロードできなくなったことから、なんとか有線接続して転送して読んでいたのですが、やっぱり不便なので、無線化の検討を再開しました。 BLE (Bluetooth Low Energy)のキーボードエミュレーションができる電子工作向きのチップかモジュールを調べたところ、無線マイコンモジュールのESP32-WROOM-32Eぐらいしか見当たらず、これを使うことにしました。
また、リモートシャッターや自分の電書めくり機を使っていると、タクトスイッチのクリック音が気になることがあります。夜中に読んでいる時はもちろん、昼間でも「カチカチカチカチ」言うのはちょっと頂けない。そう思っていたところ、aitendoさんのサイトで静音タクトスイッチなるものを見かけて買ってみたところ、ぷにぷにした感触が面白くクリック音も無く、サイズも大して大きくないので、これを使うことにしました。 とりあえず記念写真。できたものを中央にして、右がワッツのリモートシャッター、左が自作のUSB接続品です。

中身はこんな感じです。上の中央が無線マイコンモジュールのESP32-WROOM-32Eで、一番下にLi-Po電池があり、その右上に充電モジュールがあります。左の中央が電源スイッチと3.3Vのレギューレータ部になります。(なお、電池のリンク先が品切れになっていますが、同等品は多々あります。)

ここで、高々BLEなのに電源周りが大がかりになっているのは、先達が色々と苦労されているのを見たからです。特にこちらの記事が参考になりました:
8か月以上の長期間動作を確認! 超省エネIoTセンサESP32-WROOM-32 - ボクにもわかる電子工作のブログ -
こちらを読まずに、電圧だけ見てコイン電池で組んでいたら痛い目に遭うところでした。実際、ふつうの(ハイパワーでない)USB-シリアル変換器では起動できずリブートを繰り返していました。 さて、
ESP32を使うのは今回が初めてでした。当初は有線タイプで味を占めたMicroPythonを使おうかと考えていたのですが、作例が見当たらなかったので、素直にArduino IDEを使うことにしました。また、勝手が分からなかったので、まずは素直に開発ボードを使い、Lチカからやりました。マイクロテクニカさんのチュートリアルが分かりやすかったです。

無線化については、M5StickCの作例が参考になりました。ページめくりに欲しい機能は、リンクを辿ってT-vKさんのキーボードライブラリのヘッダファイルから、
- KEY_MEDIA_VOLUME_UP
- KEY_MEDIA_VOLUME_DOWN
- KEY_MEDIA_WWW_BACK
それで機嫌良くESP32-WROOM-32Eでの電子工作をして、ENとBOOTのスイッチを手順に従って押しながらプログラムを転送しようとしたのですが、Arduino IDEがConnecting...からタイムアウトしてしまいます。配線ミスなどを疑ってみたのですが(1か所は間違えていたが直しても)解決せず、ふとEN端子をテスターで触ると電圧が出ていません。それでデータシート(リンク先PDF)を見るとペリフェラル側でプルアップするように書いてあるのを見落としていたことが分かりました。他方BOOTのGPIO0はデフォルトでプルアップだと書いてありますが、気持ち悪いので両方とも10kΩで外部プルアップしたところ、無事に動くようになりました。(答が分かってから検索するとFAQだったようです。FAQついでにUARTは3.3Vのクロス接続です。) あと、BleKeyboard.hを眺めていたら下の方にデバイス名と製造者の設定があったので、お遊びで変更してみました。これもアップしてあります(etw.h)。

こうすると、BOOX Poke Proの方からは、こう見えます:

ちょっと嬉しい。 完成したコードと回路図はGitHubにリポジトリを作ってアップしておきました。回路図は、例によって完成品の裏面にも貼りました。

最終的なBOMは次の通りで、合計1227円でした。電線・ピンヘッダ・ハンダ・ラベルはカウントしていません:
item | detail | price | pcs | subtotal |
---|---|---|---|---|
BLE module | ESP32-WROOM-32E | 360 | 1 | 360 |
Li-ION Batt. | 1200mAh | 210 | 1 | 210 |
Charge module | TP4056 | 26 | 1 | 26 |
Regulator | NJM2845DL1-33 | 50 | 1 | 50 |
LED | OSG8HA3Z74A | 10 | 1 | 10 |
Substrate | D-type NTH | 45 | 2 | 90 |
Silent SW | TS8855SG-P2 | 22 | 4 | 88 |
Compact SW | TVBP06-B043CW-B | 10 | 2 | 20 |
Slide SW 1x2 | SS-12D00-G5 | 20 | 1 | 20 |
Slide SW 2x2 | SS-22SDP2 | 90 | 1 | 90 |
Resistor | 1/6W, 2.2kx1, 10kx2 | 1 | 3 | 3 |
Capacitor | MLCC 10μF | 50 | 1 | 50 |
Case | MINTIA Breeze | 210 | 1 | 210 |
「BLE (Bluetooth Low Energy)のキーボードエミュレーションができる電子工作向きのチップかモジュール」として、有線バージョンで使っていたSeeed XIAOの新商品が出ていたことに、いまごろ気が付きました。国内でも2022年5月から売っているようです。
Seeed Studio XIAO nRF52840 Sense - TinyML/TensorFlow Lite- IMU / Microphone - Bluetooth5
なんと、Li-Po電池の充電コントローラまで内蔵されています。センサー無しバージョンもありますが、センサ付きの方が面白そう。こんど何か作るときには候補にします。(知っていたら絶対にこちらを使っていたのに… 自分のアンテナの低さが悔しい。)
| 固定リンク | 0
コメント