少し時間ができたので、かつて試作を始めたもののあきらめたDrone(クアッドコプタ)の制御プログラム開発に再チャレンジしたい。
特に、PID制御がまったくわかっていなかったので、ラプラス変換等に助けながら運動方程式を解いて制御ソフトを作るアプローチで進めたい。
Droneの制御はしぶとくMicroPythonで何とかしたいのだけど、Flashとメモリの容量から、MicroPython+プログラムにより自立飛行は難しいと考えていて、制御アルゴリズムはホスト側で行い、Drone側のプログラムはセンサ情報のホストへの送信とホストから送られてくるモータ制御だけに制限しようかと考えている*1。
となると、、Droneとホストをどう接続するか?の問題が発生する。DoneにはBLE(SPBTLE-RF)が搭載されていてる。SPBTLE-RFはシリアル通信プロファイルのような高い抽象レベルではなく、GATT/GAPの低いレイヤーで制御する必要があり、簡単にはスクラッチで制御できずどこかからドライバを調達する必要がある。これもまたMicroPython版のSPBTLE-RF用ドライバがGitHubで公開されているので、まずはそれを使ってみる予定。だが、、多分リソースが足りなくなるのではと予測。とりあえず、SPBTLE-RFを制御できるようにRPi-Pico等からSPBTLE-RFに接続して、GitHubに公開されているドライバを使ってBLE通信が可能かを検証したい。
■参考URL
https://www.st.com/en/wireless-connectivity/bluenrg-ms.html#documentation
M1865 User manual
The BlueNRG-MS BluetoothR LE stack application command interface (ACI)
*1:制御プログラムのメドが付いたら組み込みRustに書き換えたいけど、そこまでモチベーションが維持できるか不明