はじめに
VSCode + MicroPython環境の構築(2025.6時点)にて、VSCode上でPython環境を用いてM5Stackを動作させることが可能な環境を作成した。本記事ではこの環境にてRoller485をM5Stackで動作させることを目的とする。
目的
VSCode + MicroPython環境を用いて、M5StackにてRoller485を制御する。
準備物
○ハードウェア系
- PC(Windows10)
- M5Stack
→本記事ではM5Stack Grayを使用した。 - Unit-Roller485
- USB Type-Cケーブル(PC-M5Stack接続用)
○ソフトウェア系
- VSCode
→追加でvscode-m5stack-mpyという拡張機能をインストールする。 - USBドライバ(環境に応じてインストール)
-
M5Burner(ファームウェアインストール用ソフト)
→本記事ではファームウェアとしてUIFlowを使用した。
※上記についての詳細はVSCode + MicroPython環境の構築(2025.6時点)を参照のこと。
接続準備
事前準備として、
- Roller485の通信設定をI2C通信に変更する。
- I2C通信時のRoller485のアドレスを確認する。
→筆者環境については、「0x40」を使用。
※上記2項目の確認についてはRoller485電源投入時に、背面にあるボタンを押下しながら電源を投入することで、設定画面を確認することができる。(確認画面を以下に示す。)


- M5Stack I2C通信用ピン(SCL・SCA)が何番かを確認する。
→筆者環境については、「SCL:22・SCA:21」をそれぞれ使用する。
また、M5StackとRoller485の接続状態を以下に示す。
(付属するケーブルにて接続すれば問題ないと思われる。)

実行スクリプト
Roller485 通信プロトコル(I2C通信用)を参考にコマンドを送信する。
動作としては、
- モータ ONコマンドを送信する。
- 1200[rpm]での回転コマンドを送信する。
- 5[sec]待機する。
- モータ OFFコマンドを送信する。
となる。
本記事で実際に使用したスクリプトを以下に示す。
i2c.py
from machine import I2C
from m5stack import lcd
import time
PACKET_LENGTH = 8 # データ長
DEVICE_ADDRESS = 0x40 # 送信先デバイス アドレス
# 初期動作
lcd.clear() # LCDのリセット
i2c = I2C(0, scl=22, sda=21, freq=200000, timeout=5) # I2C通信ポート オープン
# ---------------------------------------------------------------------
# モータ ON
send_data = [0x00, 0x01] # モータ ON
lcd.text(0, 20, 'send data\n' + str(send_data))
i2c.writeto(DEVICE_ADDRESS, bytes(send_data))
# ---------------------------------------------------------------------
# ---------------------------------------------------------------------
# 速度制御
send_data = [0x40, 0xc0, 0xd4, 0x01, 0x00] # 速度制御(1200[rpm]で回転指令)
lcd.text(0, 60, 'send data\n' + str(send_data))
i2c.writeto(DEVICE_ADDRESS, bytes(send_data))
time.sleep(5) # 5[sec]待機
# ---------------------------------------------------------------------
# ---------------------------------------------------------------------
# モータ OFF
send_data = [0x00, 0x00] # モータ OFF
lcd.text(0, 100, 'send data\n' + str(send_data))
i2c.writeto(DEVICE_ADDRESS, bytes(send_data))
# ---------------------------------------------------------------------
lcd.text(0, 140, 'finish.')
実行結果
実行結果の動画を以下に示す。

上記より、MicroPythonを用いてM5StackからRoller485を制御することができた。
今後の展望
M5Stackの拡張機器としてI2CをRS-485に変換可能なものがあるため、MicroPython環境下でM5StackからRS-485経由でRoller485を制御できるかどうかを確認する。