今回のNucleo-U575ZIを使ったDoomPlayerでは、USBホスト機能が使えないため、UART接続で使えるBluetoothモジュールとして、BT860-SAを使っています。最近では、BLEのモジュールは簡単に入手できますが、Classicをサポートしたモジュールは数が少なくなっている印象です。秋月で売られているClassicをサポートしたモジュールはSPP接続用のものばかりのようです。日本での認証を受けたUART接続のHCIモジュールというとかなり限定されてしまうようです。BT860-SAは1,600円程度しましたので、コスト的にはESP32とかPico-WとかをBluetooth HID処理専用に使った方が安いというのが皮肉なところ。
このBT860-SAですが端子パッドの銅面がモジュール裏側のヘリまでついており、フラックスの助けを借りてなんとか手半田作業で実装できました。当初は、QFNのパッケージのように側面にもパッドが出ていることを期待していたので、実物を見て側面には銅面が無いことを知り、かなり焦りました。
モジュールは、UARTのHCIで動くので、MCUとはRX, TX, RTS, CTSの4線をつなげば、動いてくれます。ディフォルトは 115,200 baud, 8bit, パリティ無しとなっており、データシートにはconfigファイルを設定したり、ベンダー独自のHCIコマンドを送れば、通信速度を変更できると書いてあります。しかしながら、その具体的な内容や手順に関しては、データシートには書かれていません。ちょっと検索しても明記されたわかりやすいページが見つからずに悩んでいましたが、BTStackのhci_transport_h4.cを読んだところ、速度変更するコマンドを送っていることが判明。port/posix-h4-bcm/main.c を参考にして速度変更できることを確認できました。現在、1.5M baudで使っていますが、問題なく動いてくれているようです。