M5StackでUnit Mini CAN を使う

Using the Unit Mini CAN ・ 使用 Unit Mini CAN

M5StackのUnit Mini CANをコントローラーに接続する最小構成。配線とBOMつき。

この構成をエディタで開く・編集する →

部品リスト(BOM)

部品役割ポートリンク・価格
AtomS3Controllergrove_i2c, i2c, spi, gpio, usb_cofficial page — $15.5
Unit Mini CANunitgrove_analog, canofficial page — $4.95

配線

作り方

M5Stack AtomS3とUnit Mini CANで作る、最小構成のCANバス通信セットアップです。AtomS3がコントローラーとなり、Unit Mini CANを介してCANバスネットワークに接続します。車載電子機器や産業オートメーションのプロトタイピングに最適です。

  1. 部品を用意する — 用意するもの:M5Stack AtomS3本体、Unit Mini CAN、Groveケーブル(黒色、Port.B用)、AtomS3とパソコンをつなぐUSB-Cケーブル。
  2. GroveケーブルでAtomS3とUnit Mini CANをつなぐ — Unit Mini CANはアナログ/デジタル(黒色)接続です。Groveケーブルの一端をUnit Mini CANのGroveポートに、もう一端をAtomS3の黒いPort.B(Groveアナログ/GPIOポート)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  3. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでAtomS3をパソコンにつなぎます。UIFlowやThonnyなどのツールで、AtomS3にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  4. CAN通信をテストする — コードを実行すると、AtomS3の画面にCANメッセージの送信と受信の状態が表示されます。必要に応じて、CANバスに他のノードを接続して通信を確認してください。

サンプルコード(micropython)

# M5Stack AtomS3 + Unit Mini CAN (CAN bus communication)
# Wiring: Unit Mini CAN -> AtomS3 black Port.B (Grove analog/GPIO)
# Port.B on AtomS3: GPIO 1 (TX) and GPIO 2 (RX) for UART, but here we use CAN via SPI-like interface
# Actually, Unit Mini CAN uses UART (serial) on Port.B: TX=GPIO1, RX=GPIO2
import time
from machine import UART, Pin
from m5stack import lcd

# Initialize UART on Port.B (TX=GPIO1, RX=GPIO2) at 115200 baud
can_uart = UART(1, baudrate=115200, tx=1, rx=2)

# Simple CAN frame send function (for demonstration)
def send_can_frame(id, data):
    # Build a simple CAN frame: ID (2 bytes) + data length (1 byte) + data (up to 8 bytes)
    frame = bytearray([id >> 8, id & 0xFF, len(data)])
    frame.extend(data)
    can_uart.write(frame)

# Main loop
lcd.clear()
lcd.print('CAN Test', 10, 20)
while True:
    # Send a test message with ID 0x123 and data [0x01, 0x02, 0x03]
    send_can_frame(0x123, b'\x01\x02\x03')
    lcd.print('Sent: ID 0x123', 10, 50)
    time.sleep(1)
    
    # Check for incoming data
    if can_uart.any():
        data = can_uart.read()
        lcd.print('Received: ' + str(data), 10, 80)
    time.sleep(1)

コツ・安全上の注意

この作り方はAIが構成から生成したものです(未検証)。通電前に配線とコードをご確認ください。

この構成はAIが実在するM5Stack部品から設計し、ポート互換をサーバで検証したものです。編集・共有できます。

エディタで開く →

UnitKit は M5Stack® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。