3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M5Stack(MicroPython)を用いたI2C通信によるRoller485の制御

Posted at

はじめに

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通信用ピン(SCLSCA)が何番かを確認する。
     →筆者環境については、「SCL:22・SCA:21」をそれぞれ使用する。

また、M5StackとRoller485の接続状態を以下に示す。
(付属するケーブルにて接続すれば問題ないと思われる。)

実行スクリプト

Roller485 通信プロトコル(I2C通信用)を参考にコマンドを送信する。

動作としては、

  1. モータ ONコマンドを送信する。
  2. 1200[rpm]での回転コマンドを送信する。
  3. 5[sec]待機する。
  4. モータ 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を制御できるかどうかを確認する。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?