見出し画像

M5でUSB-OTGしながらデバッグプリントする方法を考え中


M5 Capsuleは1つのUSBポートで、UARTとUSB-OTGの両方を担うことができ、シンプルで美しい(USBが2ポート付けるとサイズが大きくなってしまう、しかも1つは開発用)

しかし


  • M5 Capsuleで、USB-OTGを行うと、シリアルのデバッグプリントが行えない(現状、行う方法をみつけられていないだけかも)

    • 「デバッグ出力するUART」と「USBメモリを接続するUSB-OTG」が同じポートのため

  • 他の通信手段でデバッグプリントを行うことを検討している

  • 思いついた案を列挙する

案1:Bluetooth Serial

  • 真っ先に思いついたのは、Bluetooth Serialだが、コンパイルが通らない

  • どうやら、ESP32-S3(M5 Capsuleに搭載されているチップ)では使えないようだ

  • 曖昧だった理由をまとめておく

Bluetooth Serial Library

  • Bluetooth Serial Libraryは、シリアル通信の互換性を持ったライブラリ

  • Classical Bluetooth(4.2)のSerial Port Profileというプロファイル(規格)を使っているようだ

  • 5.0ではおそらく、Serial Port Profileは使えない(明記されているのをみつけたわけではない)

A simple Serial compatible library using ESP32 classical Bluetooth Serial Port Profile (SPP)

https://github.com/espressif/arduino-esp32/tree/master/libraries/BluetoothSerial


BluetoothのバージョンとESP32の関係

  • Bluetoothには、複数のバージョンがある(BLEやClassical Bluetoothなど呼ばれている)

  • ESP32-S3は、Bluetooth 5.0(BLE)で、Bluetooth 4.2(Classic Bluetooth)が使えない

  • ESP32ならば、Bluetooth 4.2が使える(つまり、Bluetooth Serialが使える)

ESP32-S3 is a different chip/SoC from ESP32. Bluetooth Classic (with EDR/BR) up to verion 4.2 only works with the ESP32 chip.
ESP32 has support to Bluetooth Classic 4.2 with SPP (BluetoothSerial and other Profiles) as well as for BLE 5.0.

https://github.com/espressif/arduino-esp32/issues/8023

ESP32-S2 has no Bluetooth radio. ESP32-S3 and ESP32-C3 has only Bluetooth 5.0 (BLE - Bluetooth Low Energy) support - but no support to Bluetooth 4.2 (classic) Therefore BluetoothSerial will not work on the S3 or C3 and, for sure no bluetooth at all, on S2. Bluetooth Low Energy(BLE) and Classic Bluetooth

https://github.com/espressif/arduino-esp32/issues/6882

案2:USBポートとは別のシリアル通信

  • M5 Cupsuleで、USBポート以外のGPIOのピンでもシリアル通信ができそう

    • GPIOにRx、Txという表記がある

案2-1:ESP32-Dev-Boardで中継する

  • M5 Cupsule --UART--> ESP32-Dev-Board --USBシリアル--> Windows PC という構成が使えそう

  • ESP32-Dev-Boardでシリアル通信をパススルーするプログラムを組む必要がある

案2-2:M5 Capusleに直接、PCをつなげる

  • PC向けのUART(シリアル)-USBに変換する装置を所持していないが

  • COMポートがマザーポートについていそうなので、コネクタやケーブルなどを買えば使えそうではある

  • 今更、サイズが大きなD-Subのケーブルやコネクタを買うのは躊躇する

    • D-Subケーブル、ジャンク品で売っていないかな(組み込み向けに需要ありそうだから、みつからないかな)

  • とはいえ、9ピンも使わないはずなので小型の端子を自作したい

  • レベル変換もしないといけない

  • 高価なPCと通信するので、自作するなら慎重に行う必要がある

案3:BLEを使う

  • BLEでデータの送受信を行う

  • Bluetooth 4.0のSerial Port Profileではないという認識

  • Punch Through社が開発しているLightBlueというアプリをデバッグで使用しているのをよく目にする

  • 公式サイトにもBLEのデバッグやプロトタイピングを手助けするとある(今回はBLEのアプリを開発するわけではないが)

  • iOSとAndroid向けのアプリがあるが、PC向けは存在を確認できていない

  • ログとかを保存したいので、できればPCで確認したい

  • 割と簡単にPC向けのBLEの受信アプリは作れそうだ

  • PCとESP32-S3においてのBLEを用いた実装方法を習得する必要がある

案4:Wi-Fiを使う

  • 実装が簡単(すでに知識がある)

  • BLEやUARTに比べて電力の消費量が多いと思うので、電力がシビアな場合は考慮しないといけない

  • PCでメッセージを確認できる

  • PC側の受信アプリを作らないといけない

  • アプリをリリース版にするときは、デバッグコードを削除する必要がある

    • シリアル通信は、そこまで気にしなくてもいい(という気分になれる)

    • 丁寧に実装するならばコンパイルスイッチなどの仕組を取り入れたい

まとめ

  • 案4は、すぐに実装できた(後日、プログラムを掲載予定)、以下にプログラムを掲載した

  • 案2-1も捨てがたい

  • 1つのUSBポートしかない、M5 Capsule手にした当初は困惑したが(どうやって切り替えるの?USB-OTGはできないの?っと)、デバッグプリントに関しては代替手段がありそうなので、今ではシンプルなデザインのM5 Capsuleが気に入っている



この記事が気に入ったらサポートをしてみませんか?