- M5Stackデバイス
- ATOMS3 Lite, ATOMS3, ATOM Lite, ATOM Matrix, M5Stack Core2, M5Stack, M5StickCで動作確認しています
- ATOMS3 Liteが安価でおすすめです
- GeekServo 9G Servo-Gray x 2
- グレーの270°サーボモーターのタイプです
- 2台必要です
- 赤やオレンジのものは別物ですので注意してください
- GROVE - サーボ用2分岐ケーブル
- 必須ではないですが配線がすっきりします
- ない場合はブレッドボードやジャンパワイヤーでよしなにしてください
- USB Type-Cケーブル
- PC
- Windows / Mac / LinuxどれでもOK
- Android (Termux)でもいけました
- Node.js v18以上をインストールしておいてください
- Windows / Mac / LinuxどれでもOK
- キューブ
- 回転が重いものだとうまく動かないと思います
- 私はTornado V3のPioneerモデルとFlagshipモデルを使っています
- 届くまで少し時間がかかりますがAliExpressだと安く買えます
opniz CLIをnpmよりインストールします。
opniz CLIはM5Stackデバイスへopniz Arduino Libraryのテンプレートスケッチを簡単に書き込めるツールです。
npm install -g opniz-cli
※ opniz CLIのインストール時にArduino CLI実行ファイルのダウンロードやESP32環境の構築を行うため、インストールに数分かかります。
opniz CLIを使ってM5Stackデバイスをセットアップします。
M5StackデバイスをUSBケーブルでPCと接続してください。
その後、以下のコマンドを実行し対話モードで必要な情報を入力していきます。
npx opniz upload
ここで必要となる情報は以下のとおりです。
- デバイスのシリアルポート
- M5Stackデバイスが接続するWi-FiのSSID / パスワード
- Node.jsアプリケーションを実行するPCのIPアドレス
- 書き込むM5Stackデバイスの種別
- opnizの通信ポート番号(デフォルトは3000)
このうちWi-Fiパスワード以外は自動的に情報を取得しリスト表示されるので選択するだけです。
opnizの通信ポート番号はデフォルトの3000のままエンターキーを押してください。
[ opniz uploadコマンド実行イメージ ]
※ GIF画像では書き込みがさくっと終わっていますが、コンパイル / 書き込みに約10分ほどかかります。
書き込みが完了したらM5Stackデバイスのセットアップは完了です。
Cube Scramblerリポジトリをgit cloneします。
git clone https://github.com/miso-develop/cube-scrambler && cd cube-scrambler
※ gitがインストールされていない場合はCube ScramblerのGitHubページへアクセスし、<> Codeとある緑色のボタンからDownload ZIPを選択しリポジトリをダウンロードし解凍してください。
次のコマンドを実行すると依存パッケージのインストールとアプリケーションのビルドが行われます。
npm install
※ GeekServoのキャリブレーションは必ずLEGOロボットの組み立て前に行ってください!
まずはM5StackデバイスとGeekServoを接続します。
「GROVE - サーボ用2分岐ケーブル」があるならM5StackデバイスのGroveポートに繋ぐだけです。
「GROVE - サーボ用2分岐ケーブル」がない場合は、ブレッドボードやジャンパワイヤーを駆使しM5Stackデバイスの適当なピンとGeekServoを繋ぎましょう。
このときあわせてconfig.tsのSTAND_SERVO_PIN、ARM_SERVE_PINをM5Stackデバイスに繋いだピン番号に変更してください。
M5StackデバイスとGeekServoを接続したら次のコマンドを実行します。
npm run calibration
GeekServoの軸が動き、Calibration complete!と表示されたら成功です。
リンク先のPDFを参照し、LEGOロボットを組み立ててください。
次のコマンドを実行し、アプリケーションを起動します。
npm start
Device connected!と表示されたらM5Stackデバイスと正常に接続できています。
アプリケーションの実行と同時にWeb UI用のWebサーバーも起動しています。
PC上でブラウザからhttp://localhost:3001へアクセスしてみてください。
Web UIが表示されます。
http://localhost:3001のうちlocalhostの部分をPCのIPアドレスにすることで、同じネットワーク上の別の端末からもアクセスできます。
たとえばPCとスマートフォンが同じネットワークに接続している場合は、スマートフォンからもWeb UIへアクセスできます。
あとはWeb UIからLEGOロボットを制御してみてください。
よいキューブライフを😎
キューブが縦方向に回転しなかったり、スタンドから落ちてしまう場合はconfig.tsファイルにてサーボモーターの動きを調整します。
ARM_PULL_ANGLE、ARM_HOLD_ANGLE、ARM_RELEASE_ANGLEでアームの動作を調整できます。
ARM_PULL_SLEEP_MSEC、SERVO_TURN_SLEEP_MSECの値を大きくすると動きが若干遅くなりますが、動作が安定するようになります。
ARM_PULL_ANGLE: 173, // ここでアーム側サーボモーターの角度を微調整
ARM_HOLD_ANGLE: 220, // ここでアーム側サーボモーターの角度を微調整
ARM_RELEASE_ANGLE: 237, // ここでアーム側サーボモーターの角度を微調整
ARM_READY_ANGLE: 270, // ここでアーム側サーボモーターの角度を微調整
ARM_PULL_SLEEP_MSEC: 250, // アーム動作のsleep
// ARM_PULL_SLEEP_MSEC: 350, // アームの動作が不安定な場合はこちらを使用(ネットワーク重めの環境等)
SERVO_TURN_SLEEP_MSEC: 250, // スタンド、アーム共通のsleep
// SERVO_TURN_SLEEP_MSEC: 350, // モーターの動作が不安定な場合はこちらを使用(ネットワーク重めの環境等)
その他セットアップ方法で分からないことがあったらGitHubのIssueか、私のメールアドレス <miso.develop@gmail.com> までご連絡ください。




