M5Stackで電圧計

Voltage meter ・ 电压表

VMeterユニットでDC電圧を測定し、Core2画面に表示します。

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

部品リスト(BOM)

部品役割ポートリンク・価格
M5Stack Core2Controllergrove_i2c, grove_analog, grove_uart, mbusofficial page — $46.9
Unit VMeterVoltage measurement unitgrove_i2cofficial page — $19.5

配線

作り方

M5Stack Core2とVMeterユニットで作る、DC電圧の測定表示装置です。VMeterユニットが±36Vまでの直流電圧を測定し、Core2の画面に数値を表示します。配線はGrove I2Cケーブル1本で完了する、かんたんなプロジェクトです。

  1. 部品を用意する — 用意するもの:M5Stack Core2本体、VMeterユニット、Groveケーブル(I2C用、白いコネクタ)、Core2とパソコンをつなぐUSB-Cケーブル。
  2. Groveケーブルでつなぐ — VMeterユニットはI2C(白)接続です。Groveケーブルの一端をVMeterユニットに、もう一端をCore2の白いPort.A(I2Cポート)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  3. 測定対象の電圧を接続する — VMeterユニットの入力端子(+と-)に、測定したいDC電源のプラスとマイナスをそれぞれ接続します。電圧は±36Vの範囲内であることを確認してください。接続する前に、測定対象の電源がオフになっていることを確認します。
  4. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでCore2をパソコンにつなぎます。UIFlowやThonnyなどのツールで、Core2にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  5. 画面に電圧が表示されるのを確認する — コードを実行すると、Core2の画面に「Voltage: X.XXX V」と表示されます。測定対象の電源を入れると、電圧値がリアルタイムで更新されます。表示が安定しない場合は、配線や接続を再確認してください。

サンプルコード(micropython)

# M5Stack Core2 + VMeter Unit (DC voltage measurement)
# Wiring: VMeter -> Core2 white Port.A (I2C)
import time
from machine import Pin, I2C
from m5stack import lcd

# VMeter I2C address (default 0x48 for ADS1115)
VMETER_ADDR = 0x48

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

# ADS1115 configuration registers
REG_CONFIG = 0x01
REG_CONVERSION = 0x00

# Config: AIN0 vs GND, ±4.096V range, continuous conversion
config = 0x0200  # bit 15:0 (AIN0), bits 11-9:001 (±4.096V), bit 8:1 (continuous)

def read_voltage():
    # Write config to start conversion
    i2c.writeto_mem(VMETER_ADDR, REG_CONFIG, config.to_bytes(2, 'big'))
    time.sleep(0.1)  # wait for conversion
    # Read conversion result
    data = i2c.readfrom_mem(VMETER_ADDR, REG_CONVERSION, 2)
    raw = int.from_bytes(data, 'big', signed=True)
    # Convert to voltage: 1 LSB = 0.125 mV for ±4.096V range
    voltage = raw * 0.125 / 1000.0
    return voltage

while True:
    try:
        v = read_voltage()
        lcd.clear()
        lcd.print('Voltage: %.3f V' % v, 10, 20)
    except Exception as e:
        lcd.clear()
        lcd.print('Error: ' + str(e), 10, 20)
    time.sleep(0.5)

コツ・安全上の注意

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

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

エディタで開く →

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