Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

M5Stack Core2 に MAX485 を直結して DMX512 出力を実装する

0
Posted at

M5Stack Core2 に MAX485 を直結して DMX512 出力を実装する

はじめに

照明制御の業界標準プロトコル DMX512 を M5Stack Core2 から出力するため、MAX485 トランシーバを直接配線して実装しました。本記事では、ハードウェア改造の詳細と実際の配線方法を解説します。

イメージ

image.png
image.png
image.png

M5GO2 ボトムベースの GPIO ポートを活用し、MAX485 モジュールを接続しています。

使用部品

部品 型番・仕様 数量
M5Stack Core2 ESP32搭載 1
M5GO2 ボトムベース GPIO拡張ポート付き 1
MAX485 モジュール RS-485 トランシーバ 1
終端抵抗 120Ω 1/4W 1
配線材 AWG24〜28 程度 適量
XLR コネクタ 5ピン または 3ピン 1

DMX512 とは

DMX512 は舞台照明や建築照明で広く使われるシリアル通信プロトコルです。

  • 通信速度: 250kbps
  • 電気規格: RS-485 (差動信号)
  • チャンネル数: 最大 512ch
  • フレーム: Break → MAB → Start Code → 最大512バイトのデータ

ESP32 の UART で DMX512 フレームを生成し、MAX485 で RS-485 信号に変換して出力します。

GPIO ピン割り当て

今回のファームウェアでは以下の GPIO を使用しています:

constexpr dmx_port_t kDmxPort = DMX_NUM_2;  // UART2 を使用
constexpr int kDmxTxPin = 19;               // TX → MAX485 DI
constexpr int kDmxRxPin = 35;               // RX ← MAX485 RO (受信は未使用)
constexpr int kDmxEnablePin = 27;           // DE/RE 制御

なぜこのピン?

M5Stack Core2 の M5GO2 ボトムベースには GPIO ポートが引き出されており、以下が利用可能です:

ポート 利用可能 GPIO
GPIO ポート G25, G26, G35, G36
UART ポート G13, G5 (TX/RX)

GPIO 19 と GPIO 27 は内部的にアクセス可能なピンで、今回は UART2 として使用しています。

MAX485 の接続

MAX485 ピン配置

         ┌─────┐
      RO │1   8│ VCC (5V)
     /RE │2   7│ B (Data-)
      DE │3   6│ A (Data+)
      DI │4   5│ GND
         └─────┘

配線図

M5Stack Core2                    MAX485
============                    =======

GPIO 19 (UART2 TX) ──────────→ DI  (Pin 4)

GPIO 27 ─────────────┬───────→ DE  (Pin 3)
                     │
                     └───────→ /RE (Pin 2)

GPIO 35 (UART2 RX) ←────────── RO  (Pin 1)

GND ─────────────────────────→ GND (Pin 5)

5V ──────────────────────────→ VCC (Pin 8)


DMX 出力 (XLR コネクタ)
======================

MAX485 A (Pin 6) ────────────→ XLR Pin 3 (Data+)
MAX485 B (Pin 7) ────────────→ XLR Pin 2 (Data-)
GND ─────────────────────────→ XLR Pin 1 (GND)

         ┌─────┐
    A ───┤ 120Ω├─── B    ← 終端抵抗
         └─────┘

実装のポイント

1. DE/RE の接続

MAX485 の DE (Driver Enable) と /RE (Receiver Enable、負論理) は、送信専用として使う場合は両方とも同じ GPIO に接続します。

  • HIGH: 送信モード (DE=1, /RE=1 で送信有効)
  • LOW: 受信モード (今回は使用しない)
// 送信時に HIGH にする
digitalWrite(kDmxEnablePin, HIGH);

2. 終端抵抗

DMX512 規格では、ライン終端に 120Ω の抵抗を A-B 間に挿入します。これにより信号の反射を防ぎ、安定した通信が可能になります。

写真の茶色い抵抗がこの終端抵抗です。

3. 電圧レベル

デバイス ロジックレベル
ESP32 3.3V
MAX485 5V 動作、3.3V 入力許容

MAX485 の DI 入力は 3.3V でも動作するため、レベルシフタなしで直結可能です。

配線手順

Step 1: MAX485 モジュールの準備

市販の MAX485 ブレイクアウトボードを使用する場合は、ピンヘッダをはんだ付けします。

Step 2: 電源とグランドの接続

M5Stack 5V  → MAX485 VCC
M5Stack GND → MAX485 GND

Step 3: 信号線の接続

緑色のワイヤで GPIO 19 から MAX485 の DI へ接続:

GPIO 19 → MAX485 DI

GPIO 27 から DE と /RE へ接続(両方同じ線で OK):

GPIO 27 → MAX485 DE
GPIO 27 → MAX485 /RE

Step 4: DMX 出力の配線

XLR コネクタへの配線:

MAX485 A → XLR Pin 3 (Data+)
MAX485 B → XLR Pin 2 (Data-)
GND      → XLR Pin 1

Step 5: 終端抵抗の取り付け

A と B の間に 120Ω 抵抗を取り付けます。

ファームウェア実装

ESP32 用の DMX ライブラリとして esp_dmx を使用しています。

#include "esp_dmx.h"

void setupDmx() {
    // DMX ドライバのインストール
    dmx_driver_install(kDmxPort, DMX_DEFAULT_INTR_FLAGS);
    
    // ピン設定
    dmx_set_pin(kDmxPort, kDmxTxPin, kDmxRxPin, kDmxEnablePin);
}

void sendDmxData(uint8_t* data, size_t length) {
    // DMX データ送信
    dmx_write(kDmxPort, data, length);
    dmx_send(kDmxPort, length);
    dmx_wait_sent(kDmxPort, pdMS_TO_TICKS(100));
}

動作確認

テスト方法

  1. DMX テスター(または DMX 対応照明器具)を接続
  2. ファームウェアから CH1 に値を送信
  3. 受信側で値が反映されることを確認

トラブルシューティング

症状 原因と対策
全く通信できない DE/RE の接続を確認。GPIO 27 が HIGH になっているか
データが化ける 終端抵抗を確認。ケーブル長が長い場合は必須
不安定 GND 接続を確認。シールドケーブルを使用

まとめ

M5Stack Core2 と MAX485 を使って DMX512 出力インターフェースを実装しました。

ポイント:

  • GPIO 19 (TX), GPIO 27 (DE/RE) を使用
  • MAX485 の DE と /RE は送信固定で共通接続
  • 終端抵抗 120Ω を忘れずに

この改造により、M5Stack から直接 DMX512 照明器具を制御できるようになります。スマート照明コントローラや舞台演出システムのプロトタイプに活用できます。

参考資料

関連記事

  • (リンク: M5Stack で照明制御システムを作る - 全体構成編)
  • (リンク: ESP32 DMX512 送信の実装詳細)

タグ: M5Stack, ESP32, DMX512, MAX485, RS-485, 照明制御, 電子工作

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?