M5StackでUnit DDS を使う

Using the Unit DDS ・ 使用 Unit DDS

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

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

部品リスト(BOM)

部品役割ポートリンク・価格
M5Stack CoreS3Controllergrove_i2c, grove_analog, grove_uart, mbus, usb_c, sdcardofficial page — $59.9
Unit DDSunitgrove_i2cofficial page — $28.5

配線

作り方

M5Stack CoreS3とUnit DDSで作る、かんたんな波形発生装置です。Unit DDSはAD9833チップとSTM32F0 MCUを搭載し、サイン波、三角波、方形波、のこぎり波を出力できます。CoreS3からI2Cで制御し、周波数や波形をプログラムで設定します。

  1. 部品を用意する — 用意するもの:M5Stack CoreS3本体、Unit DDS、Groveケーブル(4ピン、ユニットに付属)、CoreS3とパソコンをつなぐUSB-Cケーブル。
  2. Groveケーブルでつなぐ — Unit DDSはI2C接続です。Groveケーブルの一端をUnit DDSのポートに、もう一端をCoreS3の赤いPort.A(I2Cポート)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  3. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでCoreS3をパソコンにつなぎます。UIFlowやThonnyなどのツールで、CoreS3にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  4. 波形を出力して確認する — コードを実行すると、Unit DDSがサイン波(1kHz)を出力し始めます。オシロスコープがあれば波形を確認できます。なければ、LEDやスピーカーを出力端子につなぐと動作を感じられます。

サンプルコード(micropython)

# M5Stack CoreS3 + Unit DDS (AD9833 waveform generator)
# Wiring: Unit DDS -> CoreS3 red Port.A (I2C)
import time
from machine import Pin, I2C

# AD9833 I2C address (default 0x60, but Unit DDS uses 0x60? Check datasheet)
# Actually Unit DDS uses a different address; we'll use the known address 0x60 for AD9833.
# But Unit DDS has an STM32 that interprets commands; we need to send commands to it.
# For simplicity, we'll assume the unit is configured to respond to I2C commands.
# This code is a placeholder; you may need to use a library.

# Initialize I2C on Port.A (pins 21=SDA, 22=SCL)
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=400000)

# Check if device is present
devices = i2c.scan()
print('I2C devices found:', [hex(d) for d in devices])

# If device found, send command to output sine wave at 1kHz
# This is a dummy example; actual command sequence depends on Unit DDS protocol.
# For AD9833, you would write to registers via SPI, not I2C.
# Unit DDS likely uses a different command set.
# Please refer to Unit DDS documentation for correct commands.

print('Unit DDS test: outputting 1kHz sine wave')
# Placeholder: assume we send a command via I2C
# i2c.writeto(0x60, b'\x01\x02\x03')

while True:
    time.sleep(1)

コツ・安全上の注意

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

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

エディタで開く →

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