概要
Roller485 LiteのPOSITIONモードは、指定した角度に俊敏に移動する。カメラでマーカーをトラッキングしたらその俊敏さが分かると思いやってみた。
構成図

MQTTブローカー : メッセージを仲介する。PCを起動するとサービスも起動する。
ArUco_tracking_ATOMS3RM12.py : カメラから見たArUcoマーカーがカメラの正面に来るようにモーターを制御する。
MQTT_MX_OTA_Roller485_PUB_commands.py : Unit RollerモーターをMQTTで制御するためのPythonモジュール(クラス)。
MQTT_MX_OTA_Roller485_SUB_commands : コマンドメッセージをサブスクライブし、モーターを制御する。
使い方
PC(GMK)を立ち上げMQTTブローカーを起動する。
モーターRoller485 Liteを12V電源に接続する。Roller485 Liteに接続するATOM Matrixに電源協供される。
PC(MINI2)上でArUco_tracking_ATOMS3RM12.pyを起動する。
カメラの正面でArUcoマーカーを左右に移動させるとカメラが追いかける。
MQTT_MX_OTA_Roller485_SUB_commands.inoの受信コマンド処理
| cmd の値 | 動作概要 | 応答タイミング | mqtt_topic_pub への送信内容 |
| SPIN | rpm値を目標に、モーター速度を徐々に変化させます。 | 速度変更完了時 | 受信したJSON({"cmd":"SPIN", "rpm":...}) |
| QUICK | rpm値を目標に、モーター速度を即座に設定します。 | コマンド受信直後 | 受信したJSON({"cmd":"QUICK", "rpm":...}) |
| DEG | deg値(角度)だけ現在位置からモーターを回転させます。 | 目標位置への移動完了時 | 受信したJSON({"cmd":"DEG", "deg":...}) |
| POS | 現在のモーター位置を問い合わせます。 | コマンド受信直後 | {"seq":..., "POSITION": (現在の位置)} |
| (上記以外) | コマンドエラーとして処理されます。 | コマンド受信直後 | {"command": "cmd ERROR"} |
プログラムの場所
➀Pythonスクリプト
C:\Users\%username%\Documents\012_ICTに関する備忘録\WordPress\さくらWordPressの各ページ\Roller485Liteユニット\src
➁Arduini IDE
C:\Users\%username%\Documents\Arduino\Unit_Roller485_Lite\MQTT\ATOM_Matrix_Roller_Full