HomeMadeGarbage Loading

Adafruit CLUE で SHISEIGYO-1 やってみた ーリアクションホイールへの道26ー

ホーム
電子工作
Raspberry Pi
IOT
音楽

これまでは3軸 姿勢制御モジュール SHISEIGYO-3の製作に勤しんでおりましたが、注文中のモータが到着するまで一旦お休みとします。

3軸 姿勢制御モジュール SHISEIGYO-3 バンドブレーキ改良 ーリアクションホイールへの道25ー

ここでは Adafruit CLUE で1軸 姿勢制御モジュール SHISEIGYO-1を作ってみたので報告させていただきます。

 

 

Adafruit CLUE

Adafruit CLUEはmicro:bit互換のボードにBLEマイコンnRF52840とIPSディスプレイと各種センサが載った製品です。

STEAM Tokyo ストアで購入しました。
Adafruit製の製品が国内で手軽に購入できるショップです。

Adafruit CLUE

 
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軸の角度とインジケータを表示してみました。

 

SHISEIGYO-1構築

Adafruit CLUEはmicro:bit互換ですのでピッチ変換基板を用いて電源やモータ接続用コネクタを実装しました。

 

モータ用の電源24VからAdafruit CLUE用電源5vをDCDC電源で生成しています。

 

 

SHISEIGYO-1動作

 
モータ制御とディスプレイ表示を同時にするために以下のサンプルコードを参考にマルチタスク処理を実施しています。
 rtos_scheduler.ino

しかしディスプレイ表示処理時には60msecほど遅延がおこるので5fps以上にすると倒立が保てません。
ディスプレイ表示しなければ当然倒立は安定します。

 

おわりに

今回は初めてESP32以外のマイコンでSHISEIGYOを製作してみました。

最近はディスプレイとIMUが搭載されたマイコン製品がたくさんでていますので
いろんなSHISEIGYOや倒立振子などが必要最小限の配線でできそうですね。

しかし各種センサやディスタンス、モータの制御を同時に実施するにはマルチコアのESP32搭載の製品に優位性がありそうです。

Related Posts

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください