Seeed Studio XIAO ESP32C6 で電圧を測定する方法
この記事では、Seeed Studio XIAO ESP32C6に内蔵されているADコンバータを使って電圧を測定する方法を解説します。
この記事で学べること
- ADコンバータとは
- ADコンバータの使い方
- 測定データの確認方法
ステップごとの解説
- 必要な部品を準備する
今回は、Seeed Studio社のXIAO ESP32C6を使います。
XIAO ESP32C6は、Amazon、スイッチサイエンス社、マルツエレック社などで購入することができます。 - MicroPythonをインストールする
下記の記事を参考にMicroPythonをインストールしてください。
Seeed Studio XIAO ESP32C6 - ADコンバータとは
ADコンバータ(ADC:Analog-to-Digital Converter)は、電圧のように連続して変化するアナログ信号を、マイコンが扱える数値(デジタル値)に変換する回路です。
XIAO ESP32C6では、GPIOピンに入力した電圧をADCで読み取り、一定の範囲の整数値として取得できます。取得した値を基準電圧や分解能に応じて換算すれば、入力電圧のおおよその値を求められます。
たとえば、温度センサーや可変抵抗、電池電圧など、アナログ出力を持つ部品の状態をESP32-C6で読み取る際に使います。 - XIAO ESP32C6のADコンバータ
XIAO ESP32C6のADコンバータは下図をみると、GPIO0がAD0として使えることがわかります。

- 分圧
今回はESP32C6の3.3V出力の電圧を220kΩの抵抗 で 1/2 に分圧し、A0 ポートに接続することで、電圧を測定できるようにしました。

- 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
- VSCodeで以前、作ったプロジェクトを選択する
VSCodeを起動して、以前、作ったプロジェクトを選択します。

- エディタで新しいファイルを作成する
左側のエクスプローラにて右クリックして、「新しいファイル」を選択します。ファイル名を入力する欄が表示されるので、適当に名前を入力します。今回は、「adc.py」としました。

- 下記コードをエディターで記入する
「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")
- 「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
- 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")
- 再度、「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デバイスに簡単に組み込めます。
