Seeed Studio XIAO ESP32C6 で電圧を測定する方法

この記事では、Seeed Studio XIAO ESP32C6に内蔵されているADコンバータを使って電圧を測定する方法を解説します。

この記事で学べること

  • ADコンバータとは
  • ADコンバータの使い方
  • 測定データの確認方法

ステップごとの解説

  1. 必要な部品を準備する
    今回は、Seeed Studio社のXIAO ESP32C6を使います。
    XIAO ESP32C6は、Amazonスイッチサイエンス社マルツエレック社などで購入することができます。
  2. MicroPythonをインストールする
    下記の記事を参考にMicroPythonをインストールしてください。

    Seeed Studio XIAO ESP32C6

  3. ADコンバータとは
    ADコンバータ(ADC:Analog-to-Digital Converter)は、電圧のように連続して変化するアナログ信号を、マイコンが扱える数値(デジタル値)に変換する回路です。
    XIAO ESP32C6では、GPIOピンに入力した電圧をADCで読み取り、一定の範囲の整数値として取得できます。取得した値を基準電圧や分解能に応じて換算すれば、入力電圧のおおよその値を求められます。
    たとえば、温度センサーや可変抵抗、電池電圧など、アナログ出力を持つ部品の状態をESP32-C6で読み取る際に使います。
  4. XIAO ESP32C6のADコンバータ
    XIAO ESP32C6のADコンバータは下図をみると、GPIO0がAD0として使えることがわかります。
  1. 分圧
    今回はESP32C6の3.3V出力の電圧を220kΩの抵抗 で 1/2 に分圧し、A0 ポートに接続することで、電圧を測定できるようにしました。
  1. Seeed Studio XIAO ESP32C6をPCに接続する
    Seeed Studio XIAO ESP32C6とPCをUSBケーブルで接続します。接続できているか確認します。
ls -l /dev/tty.usbmodem*
crw-rw-rw-  1 root  wheel  0x9000004  9月  4 09:28 /dev/tty.usbmodem11101
  1. VSCodeで以前、作ったプロジェクトを選択する
    VSCodeを起動して、以前、作ったプロジェクトを選択します。
  1. エディタで新しいファイルを作成する
    左側のエクスプローラにて右クリックして、「新しいファイル」を選択します。ファイル名を入力する欄が表示されるので、適当に名前を入力します。今回は、「adc.py」としました。
  1. 下記コードをエディターで記入する
    「adc.py」を選択すると、エディター画面が開くので、下記コードを記入して保存します。
from machine import ADC, Pin
import time

# ADCとして使用するピンのインスタンス化 (例: GPIO 0)
adc_pin = Pin(0)

# ADCオブジェクトの生成
adc = ADC(adc_pin)

# 減衰率の設定 (11dBに設定すると最大約3.3Vまで計測可能)
adc.atten(ADC.ATTN_11DB)

# 分解能を12ビット(デフォルト)に設定
adc.width(ADC.WIDTH_12BIT)

# アナログ値をマイクロボルト単位で読込み
val = adc.read_uv()  

# 電圧(V)に換算
voltage = val / 1000000

# 抵抗で分圧しているので2倍にする
voltage = voltage * 2
    
print("Voltage:", voltage, "V")
  1. 「adc.py」を実行する
    左のエクスプローラにて、「adc.py」を選択して、右クリックから、「Run current file on Pico」をクリックすると、REPL画面に下記のように、電圧が表示されます。
MicroPython v1.29.0 on 2026-08-24; Seeed XIAO ESP32C6 with ESP32-C6
Type "help()" for more information or .help for custom vREPL commands.

>>> 
Voltage: 3.316 V
  1. ADコンバータの測定誤差を補正する
    測定中に毎回、誤差が発生するので、それらを除去するために 16 回の平均化を行います。
from machine import ADC, Pin
import time

# ADCとして使用するピンのインスタンス化 (例: GPIO 0)
adc_pin = Pin(0)

# ADCオブジェクトの生成
adc = ADC(adc_pin)

# 減衰率の設定 (11dBに設定すると最大約3.3Vまで計測可能)
adc.atten(ADC.ATTN_11DB)

# 分解能を12ビット(デフォルト)に設定
adc.width(ADC.WIDTH_12BIT)

# アナログ値をマイクロボルト単位で読込み
val = adc.read_uv()  

# 電圧(V)に換算
voltage = val / 1000000

# 抵抗で分圧しているので2倍にする
voltage = voltage * 2
    
print("Voltage:", voltage, "V")
print("\n")

volt = 0

for i in range(16):
    print(str(i +1) + "回目測定")

    # アナログ値をマイクロボルト単位で読込み
    val = adc.read_uv()  

    # 電圧(V)に換算
    voltage = val / 1000000

    # 抵抗で分圧しているので2倍にする
    voltage = voltage * 2

    print("Voltage:", voltage, "V")
    time.sleep(1)

    volt = volt + voltage

voltage = volt / 16
print("\n最終電圧")
print("Voltage:", voltage, "V")
  1. 再度、「adc.py」を実行する
    左のエクスプローラにて、「adc.py」を選択して、右クリックから、「Run current file on Pico」をクリックすると、REPL画面に下記のように、電圧が表示されます。
MicroPython v1.29.0 on 2026-08-24; Seeed XIAO ESP32C6 with ESP32-C6
Type "help()" for more information or .help for custom vREPL commands.

>>> 
Voltage: 3.318 V


1回目測定
Voltage: 3.31 V
2回目測定
Voltage: 3.304 V
3回目測定
Voltage: 3.31 V
4回目測定
Voltage: 3.314 V
5回目測定
Voltage: 3.33 V
6回目測定
Voltage: 3.326 V
7回目測定
Voltage: 3.364 V
8回目測定
Voltage: 3.32 V
9回目測定
Voltage: 3.314 V
10回目測定
Voltage: 3.338 V
11回目測定
Voltage: 3.346 V
12回目測定
Voltage: 3.344 V
13回目測定
Voltage: 3.33 V
14回目測定
Voltage: 3.31 V
15回目測定
Voltage: 3.318 V
16回目測定
Voltage: 3.312 V

最終電圧
Voltage: 3.3243752 V

>>> 

まとめ

ESP32とMicroPythonを使えば、シンプルなコードで電圧を測定できます。応用すればIoTデバイスに簡単に組み込めます。

類似投稿

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です