Seeed Studio XIAO SAMD21 シリーズ入門ガイド
概要
以前は Seeeduino XIAO と呼ばれていた Seeed Studio XIAO SAMD21 は、Arduino 互換の強力な親指サイズ開発ボードシリーズである Seeed Studio XIAO ファミリーの最初の製品です。低消費電力マイクロコントローラである強力な ATSAMD21G18A-MU を搭載しています。一方で、この小さなボードは処理性能に優れていながら、必要とする電力は少なくなっています。非常に小型に設計されており、ウェアラブルデバイスや小規模プロジェクトに使用できます。
Seeed Studio XIAO SAMD21 には 14 本のピンがあり、11 個のデジタルインターフェース、11 個のアナログインターフェース、10 個の PWM インターフェース(d1〜d10)、1 本の DAC 出力ピン D0、1 つの SWD パッドインターフェース、1 つの I2C インターフェース、1 つの SPI インターフェース、1 つの UART インターフェース、シリアル通信インジケータ(T/R)、ピンの多重化による点滅 LED(L)として使用できます。LED(Power、L、RX、TX)の色は、緑、黄、青、青です。さらに、Seeed Studio XIAO SAMD21 には Type-C インターフェースがあり、電源供給とコードの書き込みが可能です。リセットボタンは 2 つあり、それらを短絡させることでボードをリセットできます。
Microchip の SAMD21G18A ARM Cortex-M0+ 32 ビットプロセッサを搭載した XIAO SAMD21 Plus は、小型で多用途な XIAO SAMD21 に、柔軟性と拡張性をさらにもたらします。Arduino、MicroPython、PlatformIO との互換性を含むすべての強力な機能を維持しつつ、Plus バリアントでは、再設計されたキャッスレーションと背面パッドレイアウトにより、16 個の追加 GPIO、統合 Li-ion バッテリーマネジメント、専用の Reset および Boot ボタン、オンボードのプログラマブル WS2812 RGB LED を提供します。高度な IoT プロジェクト、バッテリー駆動のウェアラブル、組み込みアプリケーション、量産向け SoM 設計に最適です。
ドキュメント
Seeed Studio XIAO SAMD21 の使い方に関するドキュメントが 2 種類あり、それぞれ異なる分野に焦点を当てています。参考として以下の表を確認してください。
| Seeed によるドキュメント | Nanase によるドキュメント |
|---|---|
| ピン配置図 | インターフェース |
| Seeed Studio XIAO SAMD21 入門ガイド | Seeed Studio XIAO SAMD21 と MicroSD カード(SPI) |
| Seeed Studio XIAO SAMD21 GPIO の使い方 | Seeed Studio XIAO SAMD21 と GPS(UART) |
| Seeed Studio XIAO SAMD21 リソース | シングルサイクル IOBUS |
特徴
- 強力な MCU:Microchip ATSAMD21G18A Arm® Cortex®-M0+ プロセッサ(48 MHz)、256 KB フラッシュ、32 KB SRAM、ネイティブ USB 対応。
- 拡張された I/O:XIAO SAMD21 Plus は標準の 14 ピン XIAO レイアウトを維持しつつ、1.27 mm ピッチ背面 SMD キャッスレーションにより 16 個の GPIO を追加し、PWM、DAC、I2C、UART、SPI、I2S、SWD をサポート。
- 統合電源管理:Li-ion バッテリーの直接接続、オンボード充電、逆流保護、充電状態インジケータに対応。
- 柔軟な開発環境:Arduino IDE、PlatformIO、CircuitPython、TinyGo に対応。
- コンパクトかつエコシステム対応:21 × 17.8 mm のブレッドボード対応 XIAO フォームファクタを維持しつつ、拡張ボードやカスタムキャリア設計向けに標準化された XIAO Plus 背面レイアウトを採用。
仕様
| Product Name | Seeed Studio XIAO SAMD21 | Seeed Studio XIAO SAMD21 Plus |
|---|---|---|
| Chipset | Microchip SAMD21G18 | |
| Processor | Arm® Cortex®-M0+ プロセッサ(最大 48 MHz 動作) | |
| RAM | 32 KB SRAM | |
| Flash | 256 KB フラッシュ | |
| Interface | GPIO ピン ×14 | GPIO ピン ×30 |
| Onboard | ユーザー LED ×1 | ユーザー LED ×1 |
| Battery Management | なし | オンボード PMIC |
| Power | 入力電圧(Type-C):5 V | 入力電圧(Type-C):5 V |
| BAT から 3V3 への逆流保護 | なし | あり |
| 動作温度 | -40°C ~ 85°C | |
| 寸法 | 21 × 17.8 mm | |
| ソフトウェア互換性 | Arduino、PlatformIO、MicroPython、CircuitPython、Zephyr など | |
ハードウェア概要
汎用 I/O ピンについて: MCU の動作電圧は 3.3V です。汎用 I/O ピンに接続される入力電圧が 3.3V を超えると、チップが損傷する可能性があります。
電源ピンについて: 内蔵 DC-DC コンバータ回路により 5V を 3.3V に変換できるため、VIN-PIN および 5V-PIN を介して 5V 電源でデバイスに給電できます。
XIAO SAMD21 の背面にある VIN および GND パッドは、特に充電式リチウムバッテリー(LiPo/Li-Ion)を直接接続するために設計されていないことを理解することが重要です。このボードには、安全な動作に必要なバッテリーマネジメント回路が搭載されていません。これらのパッドは、ボード内蔵の保護ダイオードをバイパスする代替の電源入力ポイントにすぎません。プロジェクトをバッテリーで駆動したい場合は、充電と保護機能を備えた専用の外部バッテリーマネジメントモジュールを使用し、そのモジュールの安定化出力を XIAO の 5V ピンに接続する必要があります。
使用時には注意し、シールドカバーを持ち上げないでください。
ピンマップ
| XIAO Pin | Function | XIAO SAMD21 | XIAO SAMD21 Plus | Description |
|---|---|---|---|---|
| 5V | VBUS | VBUS | VBUS | USB 5 V 電源入出力 |
| GND | GND | GND | GND | グラウンド |
| 3V3 | 3V3_OUT | 3V3_OUT | 3V3_OUT | 3.3 V 電源出力 |
| D0 | A0 / DAC | PA02 | PA02 | GPIO、ADC AIN0、DAC 出力;ハードウェア PWM なし |
| D1 | A1 | PA04 | PA04 | GPIO、ADC AIN4 |
| D2 | A2 | PA10 | PA10 | GPIO、ADC AIN18 |
| D3 | A3 | PA11 | PA11 | GPIO、ADC AIN19 |
| D4 | SDA0 | PA08 | PA08 | GPIO、ADC AIN16、I2C データ |
| D5 | SCL0 | PA09 | PA09 | GPIO、ADC AIN17、I2C クロック |
| D6 | TX | PB08 | PB08 | GPIO、ADC AIN2、UART 送信 |
| D7 | RX | PB09 | PB09 | GPIO、ADC AIN3、UART 受信 |
| D8 | SCK | PA07 | PA07 | GPIO、ADC AIN7、SPI クロック |
| D9 | MISO | PA05 | PA05 | GPIO、ADC AIN5、SPI データ入力 |
| D10 | MOSI | PA06 | PA06 | GPIO、ADC AIN6、SPI データ出力 |
| D11 | TX_LED | PA19 | - | XIAO SAMD21 上の内部 TX LED;Plus では未定義 |
| D12 | GPIO | PA18 (RX_LED) | PA28 | Plus 拡張 GPIO |
| D13 | SCL1 | PA17 (USER_LED) | PA17 | Plus 拡張 GPIO および I2C1 クロック |
| D14 | SDA1 | - | PA16 | Plus 拡張 GPIO および I2C1 データ |
| D15 | GPIO | - | PA15 | Plus 拡張 GPIO |
| D16 | GPIO | - | PA14 | Plus 拡張 GPIO |
| D17 | GPIO | - | PA13 | Plus 拡張 GPIO |
| D18 | GPIO | - | PA12 | Plus 拡張 GPIO |
| D19 | I2S_SD | - | PA19 | Plus 拡張 GPIO および I2S データ |
| D20 | I2S_SCK | - | PA20 | Plus 拡張 GPIO および I2S クロック |
| D21 | I2S_WS | - | PA21 | Plus 拡張 GPIO および I2S ワードセレクト |
| D22 | GPIO | - | PB10 | Plus 拡張 GPIO |
| D23 | GPIO | - | PB11 | Plus 拡張 GPIO |
| D24 | GPIO | - | PB23 | Plus 拡張 GPIO |
| D25 | GPIO | - | PA23 | Plus 拡張 GPIO |
| D26 | GPIO | - | PB2 | Plus 拡張 GPIO |
| D27 | GPIO | - | PA18 | Plus 拡張 GPIO |
| VBAT_EN | Battery Enable | - | PB2 | Plus 上のバッテリー電源制御 |
| AIN11_VBAT | Voltage Read | - | PB3 | Plus 上のバッテリー電圧読み取り |
| Reset | RESETN | RESETN | RESETN | アクティブ Low リセット入力、パッケージピン 40 |
| TX_LED | LED | PA19 | - | オリジナルボードの TX インジケータ、アクティブ Low |
| RX_LED | LED | PA18 | - | オリジナルボードの RX インジケータ、アクティブ Low |
| USER_LED | LED | PA17 | - | オリジナルボードのユーザー LED、アクティブ Low |
| POWER_LED | Power indicator | 3V3 | - | オリジナルボードの緑色電源 LED;MCU の GPIO ではない |
| RGB_LED | WS2812B data | - | PA27 | Plus のアドレス指定可能な RGB LED データ |
| USER_BUTTON | Button | - | PB22 | Plus のユーザーボタン、アクティブ Low |
| VBAT_EN | Battery ADC enable | - | PB02 | バッテリー電圧測定を有効化 |
| AIN11_VBAT | Battery ADC | - | PB03 / AIN11 | 1/2 分圧を通したバッテリー電圧 |
| CHARGE_LED | Charging indicator | - | - | Plus のハードウェア制御充電 LED;MCU の GPIO ではない |
| SWDIO | SWD debug | PA31 | PA31 | Serial Wire Debug データ |
| SWCLK | SWD debug | PA30 | PA30 | Serial Wire Debug クロック |
ブートローダーモードに入る
XIAO SAMD21 の場合
ユーザーのプログラミング処理が失敗したとき、Seeed Studio XIAO SAMD21 のポートが消えてしまうことがあります。次の操作によってこの問題を解決できます。
- Seeed Studio XIAO SAMD21 をコンピュータに接続します。
- ピン配置図の RST ピンを、ピンセットまたは短絡線を使って 2 回ショートさせます。
- オレンジ色の LED が点滅し、その後点灯します。
この時点で、チップはブートローダーモードに入り、書き込みポートが再び現れます。samd21 チップには 2 つのパーティションがあり、1 つはブートローダー、もう 1 つはユーザープログラムです。製品は出荷時に、システムメモリ内にブートローダーコードを書き込みます。上記の手順を実行することで、モードを切り替えることができます。

XIAO SAMD21 Plus の場合
XIAO SAMD21 Plus をコンピュータに接続します。Reset ボタンを連続して 2 回押すと、ブートローダーモードに入ります。
リセット
Seeed Studio XIAO SAMD21 をリセットしたい場合は、次の手順を実行してください。
- Seeed Studio XIAO SAMD21 をコンピュータに接続します。
- ピンセットまたは短絡線を使って、RST ピンを1 回だけショートさせます。
- オレンジ色の LED が点滅し、その後点灯します。
注意:内蔵 LED の動作は Arduino 上のものとは逆です。Seeed Studio XIAO SAMD21 では、このピンは Low に引き下げる必要がありますが、他のマイコンでは High に引き上げる必要があります。
割り込み
Seeed Studio XIAO SAMD21 上のすべてのピンは割り込みをサポートしますが、5 番ピンと 7 番ピンは同時には使用できません。割り込みの詳細についてはこちらを確認してください。
はじめに
ハードウェア
必要な材料
- Seeed Studio XIAO SAMD21 x1
- コンピュータ x1
- USB Type-C ケーブル x1
一部の USB ケーブルは電源供給のみで、データ転送ができません。USB ケーブルを持っていない場合や、お使いの USB ケーブルがデータ転送に対応しているか分からない場合は、seeed USB type C support USB 3.1 を確認してください。
-
ステップ 1. Seeed Studio XIAO SAMD21 と Type-C ケーブルを用意します。
-
ステップ 2. Seeed Studio XIAO SAMD21 をコンピュータに接続します。その後、黄色の電源 LED が点灯するはずです。
ソフトウェア
初めて Arduino を使用する場合は、Getting Started with Arduino を参照することを強くお勧めします。
- ステップ 1. Arduino ソフトウェアをインストールする必要があります。
Arduino アプリケーションを起動する
事前にダウンロードした Arduino アプリケーション(arduino.exe)をダブルクリックします。
Arduino ソフトウェアが別の言語で起動した場合は、設定ダイアログで変更できます。詳細は Arduino Software (IDE) ページ を参照してください。
- ステップ 2. Blink サンプルを開く
LED 点滅サンプルスケッチを開きます:File > Examples >01.Basics > Blink。

- ステップ 3. Seeeduino を Arduino IDE に追加する
File > Preference をクリックし、Additional Boards Manager URLs に以下の URL を入力します:
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

Tools-> Board-> Boards Manager... をクリックし、検索欄にキーワード "Seeed Studio XIAO SAMD21" を入力します。Seeed SAMD Boards が表示されるので、インストールします。

XIAO SAMD21 Blink
- ステップ 4. ボードとポートを選択する
ボードをインストールしたら、Tools-> Board をクリックし、Seeed Studio XIAO を見つけて選択します。これで Arduino IDE 用の Seeed Studio XIAO SAMD21 ボードの設定が完了しました。

Tools | Serial Port メニューから Arduino ボードのシリアルデバイスを選択します。通常は COM3 以降です(COM1 と COM2 は通常ハードウェアシリアルポート用に予約されています)。確認するには、Arduino ボードを取り外してからメニューを再度開き、消えた項目が Arduino ボードです。ボードを再接続し、そのシリアルポートを選択します。

- ステップ 5. プログラムをアップロードする
環境内の Upload ボタンをクリックするだけです。数秒待ち、アップロードが成功すると、ステータスバーに "Done uploading." というメッセージが表示されます。

アップロードが完了して数秒後、ボード上の 13 番ピン(L)の LED が(オレンジ色で)点滅し始めるはずです。そうなればおめでとうございます!Arduino が正常に動作しました。問題がある場合は、トラブルシューティングの提案を参照してください。
最大フラッシュサイズは 8 KB です。詳細については、リソースセクションの ATSAMD21G18A-MU データシートを参照してください。
XIAO SAMD21 Plus Blink
XIAO SAMD21 Plus では、L(LED)ピンは削除されています。その代わりに RGB_LED があり、ピン PA27 で制御されます。
‑ 対象ボードを XIAO M0 Plus に変更します。

- Adafruit_NeoPixel ライブラリをインストールし、最新バージョンに更新します。

‑ 以下のコードスニペットに置き換えます。RGB_LED のデータピンは PA27(PIN_NEOPIXEL)です。電源制御ピンは D11 です — スケッチに '#define NEOPIXEL_POWER 11' を追加してください。
RGB LED を過度な明るさで動作させると、眼精疲労や目の損傷を引き起こす可能性があります。適切な目の保護具の使用を推奨します。
#include <Adafruit_NeoPixel.h>
#define NEOPIXEL_POWER 11
#define NUMPIXELS 1
Adafruit_NeoPixel pixels(NUMPIXELS, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin();
pinMode(NEOPIXEL_POWER, OUTPUT);
digitalWrite(NEOPIXEL_POWER, HIGH);
// Set overall brightness (0~255)
// Recommended eye-friendly range: 10~50
pixels.setBrightness(50);
}
void loop() {
pixels.clear();
pixels.setPixelColor(0, pixels.Color(15, 25, 205));
pixels.show();
delay(400);
pixels.clear();
pixels.setPixelColor(0, pixels.Color(103, 25, 205));
pixels.show();
delay(400);
pixels.clear();
pixels.setPixelColor(0, pixels.Color(233, 242, 205));
pixels.show();
delay(400);
pixels.clear();
pixels.setPixelColor(0, pixels.Color(233, 23, 23));
pixels.show();
delay(400);
pixels.clear();
pixels.setPixelColor(0, pixels.Color(12, 66, 101));
pixels.show();
delay(400);
pixels.clear();
pixels.show();
delay(500);
}
‑ Upload をクリックしてプログラムを書き込みます。完了すると、RGB‑LED が点灯します。

最大フラッシュサイズは 8 KB です。詳細については、リソースセクションの ATSAMD21G18A-MU データシートを参照してください。
ピンのマルチプレクシング
ピンを自分で設定する必要はありません。ピンを使用した後は、関数を直接呼び出すことができます。
デジタル入力と出力
- ピン 6 をデジタルピンとして使用します:
const int buttonPin = 6; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
AnalogRead
- ピン 6 をアナログピンとして使用します:
void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
// turn the ledPin on
digitalWrite(ledPin, HIGH);
// stop the program for <sensorValue> milliseconds:
delay(sensorValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(sensorValue);
}
シリアル
- ピン 6 を UART の TX ピンとして使用します(UART の RX ピンはピン 7):
void setup() {
Serial1.begin(115200);
while (!Serial);
}
void loop() {
Serial1.println("Hello,World");
delay(1000);
}
I2C
- ピン 5 を IIC の SCL ピンとして使用します(IIC の SDA ピンはピン 4):
// Wire Master Writer
// by Nicholas Zambetti <http://www.zambetti.com>
// Demonstrates use of the Wire library
// Writes data to an I2C/TWI slave device
// Refer to the "Wire Slave Receiver" example for use with this
// Created 29 March 2006
// This example code is in the public domain.
#include <Wire.h>
void setup()
{
Wire.begin(); // join i2c bus (address optional for master)
}
byte x = 0;
void loop()
{
Wire.beginTransmission(4); // transmit to device #4
Wire.write("x is "); // sends five bytes
Wire.write(x); // sends one byte
Wire.endTransmission(); // stop transmitting
x++;
delay(500);
}
SPI
- ピン 8 を SPI の SCK ピンとして使用します(SPI の MISO ピンはピン 9、MOSI ピンはピン 10):
#include <SPI.h>
const int CS = 7;
void setup (void) {
digitalWrite(CS, HIGH); // disable Slave Select
SPI.begin ();
SPI.setClockDivider(SPI_CLOCK_DIV8);//divide the clock by 8
}
void loop (void) {
char c;
digitalWrite(CS, LOW); // enable Slave Select
// send test string
for (const char * p = "Hello, world!\r" ; c = *p; p++) {
SPI.transfer (c);
}
digitalWrite(CS, HIGH); // disable Slave Select
delay(2000);
}
QTouch
QTouch の使い方については、サンプルプロジェクトを用意しています: Seeed Studio XIAO SAMD21 の Q-Touch 機能でフルーツピアノを作る方法。
アナログ入力と出力
PWM ベースの「アナログ出力」を備えているだけでなく、SAMD21 にはデジタル-アナログコンバータ(DAC)という形で真のアナログ出力機能もあります。このモジュールは 0〜3.3V のアナログ電圧を生成できます。より自然な音のオーディオを生成したり、アナログデバイスを制御するための一種の「デジタル可変抵抗」として使用できます。
DAC は Arduino のピン A0 でのみ使用でき、analogWrite(A0, <value>) を使って制御します。DAC は最大 10 ビット分解能に設定できます(セットアップ内で必ず analogWriteResolution(10) を呼び出してください)。これは、0〜1023 の値が 0〜3.3V のどこかの電圧を設定することを意味します。
DAC に加えて、SAMD21 の ADC チャンネルも ATmega328 とは一線を画しており、最大 12 ビット分解能を備えています。つまり、アナログ入力値は 0〜4095 の範囲となり、0〜3.3V の電圧を表します。ADC を 12 ビットモードで使用するには、セットアップ内で analogReadResolution(12) を呼び出してください。
DAC のシリアルプロット
ここでは DAC と ADC の両方を示すサンプルを紹介します。実験をセットアップするには、A0 を A1 に接続します — A0 にアナログ電圧を印加し、それを A1 で読み取ります。これは、これまでのチュートリアルの中で最もシンプルな回路です:

Seeed Studio XIAO SAMD21 は Seeed Studio XIAO SAMD21 expansion board を使用しています
このスケッチは A0 に 0〜3.3V の値を持つ正弦波出力を生成します。次に A1 を使用して、その出力を ADC に読み込み、0〜3.3V の電圧に変換します。
もちろん、シリアルモニタを開いて電圧値のストリームを確認することもできます。しかし、テキストだけでは正弦波をイメージしにくい場合は、Tools > Serial Plotter から Arduino の新しい Serial Plotter を確認してみてください。


コードを提供してくださり、関連するすべての機能を開発・貢献してくださった Aleksei Tertychnyi 氏に感謝いたします。
#define DAC_PIN A0 // Make code a bit more legible
float x = 0; // Value to take the sin of
float increment = 0.02; // Value to increment x by each time
// Frequency of sine wave is about 1.37 Hz
void setup()
{
analogWriteResolution(10); // Set analog out resolution to max, 10-bits
analogReadResolution(12); // Set analog input resolution to max, 12-bits
Serial.begin(9600);
}
void loop()
{
// Generate a voltage value between 0 and 1023.
// Let's scale a sin wave between those values:
// Offset by 511.5, then multiply sin by 511.5.
int dacVoltage = (int)(511.5 + 511.5 * sin(x));
x += increment; // Increase value of x
// Generate a voltage between 0 and 3.3V.
// 0= 0V, 1023=3.3V, 512=1.65V, etc.
analogWrite(DAC_PIN, dacVoltage);
// Now read A1 (connected to A0), and convert that
// 12-bit ADC value to a voltage between 0 and 3.3.
float voltage = analogRead(A1) * 3.3 / 4096.0;
Serial.println(voltage); // Print the voltage.
delay(1); // Delay 1ms
}
結果

バッテリーの使用
BAT バッテリーコネクタが背面に搭載されているのは XIAO SAMD21 Plus のみですので、ご注意ください。
XIAO SAMD21 Plus は、3.7V リチウムバッテリーを電源入力として使用できます。配線方法については、次の図を参照してください。

はんだ付けの際には、正極と負極を短絡させてバッテリーや機器を焼損させないよう十分注意してください。バッテリーに電力が残っている場合は、決して基板にはんだ付けしないでください。基板を焼損する可能性があります。通電中に短絡すると大きな危険を伴うため、アダプタの使用を推奨します。
バッテリー電圧読み取りの例
回路図によると、SGM40567-4.2XG/TR は単セルリチウムバッテリーの充電を行い、充電電流はおよそ 200 mA です。充電中は Charge_LED が点滅します。
バッテリー電圧の測定は、PB2/VBAT_EN を介して TPS22916CNYFPR ロードスイッチで制御され、待機時の消費電力を低減します。バッテリー電圧は 1/2 に分圧され、PB3/AIN11_VBAT ADC ピンを通して測定されます。

バッテリー電圧は、抵抗分圧回路を使用して測定されます。ADC が読み取る電圧は実際のバッテリー電圧の半分であるため、ソフトウェア側で ADC の測定値に 2 を掛けて実際のバッテリー電圧を求める必要があります。
Arduino コアでは、PB02 と PB03 はそれぞれピン番号 31 と 32 にマッピングされています。次のように定義します:
// VBAT_EN on PB02
#define PIN_VBAT_EN (31u)
// AIN11_VBAT on PB03
#define PIN_VBAT_ADC (32u)
バッテリー読み取りの例
constexpr float ADC_VREF = 3.3f;
constexpr float ADC_MAX = 4095.0f;
constexpr float DIVIDER_RATIO = 2.0f; // R5 = R6 = 10 kΩ
float readBatteryVoltage() {
digitalWrite(PIN_VBAT_EN, HIGH);
delay(10);
analogRead(PIN_VBAT_ADC); // Discard a stale reading
uint32_t sum = 0;
constexpr int samples = 16;
for (int i = 0; i < samples; i++) {
sum += analogRead(PIN_VBAT_ADC);
delay(2);
}
digitalWrite(PIN_VBAT_EN, LOW);
float adcRaw = sum / static_cast<float>(samples);
float adcVoltage = adcRaw * ADC_VREF / ADC_MAX;
return adcVoltage * DIVIDER_RATIO;
}
void setup() {
Serial.begin(115200);
pinMode(PIN_VBAT_EN, OUTPUT);
digitalWrite(PIN_VBAT_EN, LOW);
analogReadResolution(12); // SAMD21 ADC: 0–4095
}
void loop() {
float batteryVoltage = readBatteryVoltage();
Serial.print("Battery: ");
Serial.print(batteryVoltage, 3);
Serial.println(" V");
delay(1000);
}
低消費電力アプリケーションでは、バッテリー電圧の測定が完了したら BAT_EN を無効にして、分圧抵抗による静止時の消費電力を削減してください。
- バッテリー充電中は Charge_LED が点滅します。

- バッテリー電圧測定結果:リチウムイオンバッテリーの測定電圧は、バッテリーに印字されている公称値と異なる場合があります。必ず実際の測定値を参照してください。

サンプルアプリケーション
-
Raspberry Pi を使って故障した xiao を復旧する方法。共有してくれた John_Doe 氏に感謝します。
リソース
XIAO SAMD21
ハードウェア設計
- 📄[データシート] Atmel SAMD21G18 データシート
- 📄[回路図] XIAO SAMD21 回路図
- 🗃️[PCB 設計ファイル]
- 🗃️[PCB ライブラリ]
- 📄[ピン配置シート] XIAO SAMD21 ピン配置シート
メカニカル設計
- 📄[2D 寸法] DXF 形式の XIAO 寸法
- 📄[3D モデル] XIAO SAMD21 3D モデル
ソフトウェア & ツール
- 📄[Factory Firmware] XIAO SAMD21 ファクトリーファームウェア
XIAO SAMD21 Plus
ハードウェア設計
- 📄[Datasheet] Atmel SAMD21G18 データシート
- 📄[Schematic] XIAO SAMD21 Plus 回路図
- 🗃️[PCB Design Files]
- 🗃️[PCB Design Libraries]
- 📄[Pinout Sheet] XIAO SAMD21 Plus ピン配置シート
メカニカル設計
- 📄[2D Dimensions] DXF 形式の XIAO 寸法
- 📄[3D Model] XIAO SAMD21 Plus 3D モデル
コースリソース

技術サポート & 製品ディスカッション
弊社製品をお選びいただきありがとうございます。弊社は、製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートを提供しています。お好みやニーズに応じてお選びいただける、複数のコミュニケーションチャネルをご用意しています。





