Adafruit CLUE で SHISEIGYO-1 やってみた ーリアクションホイールへの道26ー
これまでは3軸 姿勢制御モジュール SHISEIGYO-3の製作に勤しんでおりましたが、注文中のモータが到着するまで一旦お休みとします。
ここでは Adafruit CLUE で1軸 姿勢制御モジュール SHISEIGYO-1を作ってみたので報告させていただきます。
目次
Adafruit CLUE
Adafruit CLUEはmicro:bit互換のボードにBLEマイコンnRF52840とIPSディスプレイと各種センサが載った製品です。
STEAM Tokyo ストアで購入しました。
Adafruit製の製品が国内で手軽に購入できるショップです。
Adafruit CLUEの構成は以下の通りです。
・240*240 IPSディスプレイ ST7789
・6軸慣性センサ LSM6DS33
・3軸磁気センサ LIS3MDL
・ジェスチャーセンサ APDS9960
・マイク MP34DT01-M
・温湿度センサ SHT3x-DIS
・気圧センサ BMP280
めちゃめちゃセンサ載ってます!
Arduino IDEセットアップ
Adafruit CLUEはCircuitPythonとArduinoに対応していますが、ここではArduino IDEでプログラミングしました。
セットアップ方法は以下の通りです。
https://learn.adafruit.com/adafruit-clue/arduino-support-setup
IMUセンサ
Adafruit CLUEは6軸慣性センサ LSM6DS33 と3軸磁気センサ LIS3MDLで9軸のモーションセンシングを実現できます。
SHISEIGYO-1では加速度センサから導出したモジュールの姿勢角とジャイロセンサの角速度をカルマン・フィルタを通して使用していますので
6軸慣性センサ LSM6DS33のみの値を使用しました。
LSM6DS33のライブラリとして以下を使用しました。
https://github.com/adafruit/Adafruit_LSM6DS
コードは以下を参考にしました。
adafruit_lsm6ds33_test.ino
ディスプレイ
Adafruit CLUEには240*240 IPSディスプレイ ST7789が載っています。
視野角が広く表示も非常にキレイです。
接続は以下の通りです。
TFT SCK:D29
TFT MOSI:D30
TFT CS:D31
TFT DC:D32
TFT RESET:D33
TFT LITE:D34
ST7789のライブラリとして以下を使用しました。
https://github.com/adafruit/Adafruit-ST7735-Library
コードは以下を参考にしました。
graphicstest_tft_gizmo.ino
ディスプレイ動作
6軸慣性センサ LSM6DS33のX軸とY軸の角度とインジケータを表示してみました。
Adafruit CLUEに搭載された6軸IMU LSM6DS33を堪能 pic.twitter.com/ADvQ2RCIKM
— HomeMadeGarbage (@H0meMadeGarbage) December 18, 2020
SHISEIGYO-1構築
Adafruit CLUEはmicro:bit互換ですのでピッチ変換基板を用いて電源やモータ接続用コネクタを実装しました。
モータ用の電源24VからAdafruit CLUE用電源5vをDCDC電源で生成しています。
SHISEIGYO-1動作
Adafruit CLUEでSHISEIGYO-1やってみた#Adafruit
一応スケジューラーでマルチタスクでディスプレイ表示してるけど5fps以上にすると遅延で転倒する。。https://t.co/0ssb2SIWmz
デュアルコアのESP32のありがたみを知る。 pic.twitter.com/HdYM2Vh3Iu
— HomeMadeGarbage (@H0meMadeGarbage) December 19, 2020
モータ制御とディスプレイ表示を同時にするために以下のサンプルコードを参考にマルチタスク処理を実施しています。
rtos_scheduler.ino
しかしディスプレイ表示処理時には60msecほど遅延がおこるので5fps以上にすると倒立が保てません。
ディスプレイ表示しなければ当然倒立は安定します。
おわりに
今回は初めてESP32以外のマイコンでSHISEIGYOを製作してみました。
最近はディスプレイとIMUが搭載されたマイコン製品がたくさんでていますので
いろんなSHISEIGYOや倒立振子などが必要最小限の配線でできそうですね。
しかし各種センサやディスタンス、モータの制御を同時に実施するにはマルチコアのESP32搭載の製品に優位性がありそうです。