M5StackでUnit DAC2 を使う

Using the Unit DAC2 ・ 使用 Unit DAC2

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

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

部品リスト(BOM)

部品役割ポートリンク・価格
AtomS3 LiteControllergrove_i2c, gpio, usb_cofficial page — $7.5
Unit DAC2unitgrove_i2cofficial page — $7.5

配線

作り方

AtomS3 LiteとUnit DAC2をI2Cで接続し、デジタル信号を0-5Vまたは0-10Vのアナログ電圧に変換する最小構成のビルドです。Unit DAC2はGP8413チップを搭載し、2チャンネルの独立したアナログ出力を提供します。

  1. 部品を用意する — 用意するもの:AtomS3 Lite本体、Unit DAC2、Groveケーブル(4ピン、I2C用)、AtomS3 LiteとパソコンをつなぐUSB Type-Cケーブル。
  2. Groveケーブルで接続する — Unit DAC2はI2C通信(赤色ポート)を使用します。Groveケーブルの一端をUnit DAC2のGroveポートに、もう一端をAtomS3 LiteのPort.A(赤色)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  3. パソコンにつないでMicroPythonを書き込む — USB Type-CケーブルでAtomS3 Liteをパソコンにつなぎます。UIFlowやThonnyなどのツールで、AtomS3 LiteにMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  4. 動作を確認する — コードを実行すると、Unit DAC2のチャンネル0に1.5V、チャンネル1に3.0Vが出力されます。マルチメーターで出力電圧を測定し、正しい値が出ているか確認してください。

サンプルコード(micropython)

# AtomS3 Lite + Unit DAC2 (I2C DAC)
# Wiring: Unit DAC2 -> AtomS3 Lite Port.A (red, I2C)
import machine
import time

# I2C configuration for AtomS3 Lite Port.A
# Default I2C pins: SDA=GPIO8, SCL=GPIO9
I2C_SDA = 8
I2C_SCL = 9

# Unit DAC2 I2C address (0x58 for GP8413)
DAC_ADDR = 0x58

# Initialize I2C
i2c = machine.I2C(0, sda=machine.Pin(I2C_SDA), scl=machine.Pin(I2C_SCL), freq=400000)

def dac_output(channel, voltage, range_10v=False):
    """
    Set DAC output voltage.
    channel: 0 or 1
    voltage: 0-5V (range_10v=False) or 0-10V (range_10v=True)
    """
    if range_10v:
        # 0-10V range: 15-bit, 0-32767 corresponds to 0-10V
        code = int(voltage / 10.0 * 32767)
    else:
        # 0-5V range: 15-bit, 0-32767 corresponds to 0-5V
        code = int(voltage / 5.0 * 32767)
    # Ensure code is within 0-32767
    code = max(0, min(32767, code))
    # Build command: 0x00 for channel 0, 0x10 for channel 1, then 2 bytes of code (big-endian)
    if channel == 0:
        cmd = 0x00
    else:
        cmd = 0x10
    data = bytes([cmd, (code >> 8) & 0xFF, code & 0xFF])
    i2c.writeto(DAC_ADDR, data)

# Example: set channel 0 to 1.5V (0-5V range), channel 1 to 3.0V (0-5V range)
dac_output(0, 1.5, range_10v=False)
dac_output(1, 3.0, range_10v=False)

print("DAC outputs set. Channel 0: 1.5V, Channel 1: 3.0V")

コツ・安全上の注意

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

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

エディタで開く →

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