メインコンテンツまでスキップ

Seeed Studio XIAO SAMD21 入門ガイド

pir

概要

以前は 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 NameSeeed Studio XIAO SAMD21Seeed Studio XIAO SAMD21 Plus
Chipset

Microchip SAMD21G18

ProcessorArm® Cortex®-M0+ プロセッサ(最大 48 MHz 動作)
RAM32 KB SRAM
Flash256 KB Flash
Interface

GPIO Pin ×14
Digital Pin ×11
Analog Pin ×11
DAC ×1
I2C ×1
UART ×1
SPI ×1

GPIO Pin ×30
Digital Pin ×27
Analog Pin ×11
DAC ×1
I2C ×2
UART ×1
SPI ×1
I2S ×1

Onboard

User LED ×1
Power LED ×1
TX/RX Status LED ×2

User LED ×1
Reset Button ×1
Boot Button ×1

Battery Managementなしオンボード PMIC
Power

入力電圧(Type-C):5 V
BAT 入力:非対応

入力電圧(Type-C):5 V
BAT 入力:3.7 V 単セル Li-ion/LiPo バッテリー

BAT-to-3V3 Backflow Protectionなしあり
Working Temperature-40°C ~ 85°C
Dimensions21 × 17.8 mm
Software Compatibility

Arduino、PlatformIO、MicroPython、CircuitPython、Zephyr など

ハードウェア概要

XIAO SAMD21 表面

XIAO SAMD21 裏面

注意

一般的な 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機能XIAO SAMD21XIAO SAMD21 Plus説明
5VVBUSVBUSVBUSUSB 5 V 電源入力/出力
GNDGNDGNDGNDグラウンド
3V33V3_OUT3V3_OUT3V3_OUT3.3 V 電源出力
D0A0 / DACPA02PA02GPIO、ADC AIN0、DAC 出力;ハードウェア PWM なし
D1A1PA04PA04GPIO、ADC AIN4
D2A2PA10PA10GPIO、ADC AIN18
D3A3PA11PA11GPIO、ADC AIN19
D4SDA0PA08PA08GPIO、ADC AIN16、I2C データ
D5SCL0PA09PA09GPIO、ADC AIN17、I2C クロック
D6TXPB08PB08GPIO、ADC AIN2、UART 送信
D7RXPB09PB09GPIO、ADC AIN3、UART 受信
D8SCKPA07PA07GPIO、ADC AIN7、SPI クロック
D9MISOPA05PA05GPIO、ADC AIN5、SPI データ入力
D10MOSIPA06PA06GPIO、ADC AIN6、SPI データ出力
D11TX_LEDPA19-XIAO SAMD21 上の内部 TX LED;Plus では未定義
D12GPIOPA18 (RX_LED)PA28Plus 拡張 GPIO
D13SCL1PA17 (USER_LED)PA17Plus 拡張 GPIO および I2C1 クロック
D14SDA1-PA16Plus 拡張 GPIO および I2C1 データ
D15GPIO-PA15Plus 拡張 GPIO
D16GPIO-PA14Plus 拡張 GPIO
D17GPIO-PA13Plus 拡張 GPIO
D18GPIO-PA12Plus 拡張 GPIO
D19I2S_SD-PA19Plus 拡張 GPIO および I2S データ
D20I2S_SCK-PA20Plus 拡張 GPIO および I2S クロック
D21I2S_WS-PA21Plus 拡張 GPIO および I2S ワードセレクト
D22GPIO-PB10Plus 拡張 GPIO
D23GPIO-PB11Plus 拡張 GPIO
D24GPIO-PB23Plus 拡張 GPIO
D25GPIO-PA23Plus 拡張 GPIO
D26GPIO-PB2Plus 拡張 GPIO
D27GPIO-PA18Plus 拡張 GPIO
VBAT_ENバッテリー有効化-PB2Plus 上のバッテリー電源制御
AIN11_VBAT電圧読み取り-PB3Plus 上のバッテリー電圧を読み取る
ResetRESETNRESETNRESETNアクティブ Low リセット入力、パッケージピン 40
TX_LEDLEDPA19-オリジナルボードの TX インジケータ、アクティブ Low
RX_LEDLEDPA18-オリジナルボードの RX インジケータ、アクティブ Low
USER_LEDLEDPA17-オリジナルボードのユーザー LED、アクティブ Low
POWER_LED電源インジケータ3V3-オリジナルボードの緑色電源 LED;MCU GPIO ではない
RGB_LEDWS2812B データ-PA27Plus のアドレス指定可能 RGB LED データ
USER_BUTTONボタン-PB22Plus のユーザーボタン、アクティブ Low
VBAT_ENバッテリー ADC 有効化-PB02バッテリー電圧測定を有効化
AIN11_VBATバッテリー ADC-PB03 / AIN111/2 分圧を通したバッテリー電圧
CHARGE_LED充電インジケータ--Plus のハードウェア制御充電 LED;MCU GPIO ではない
SWDIOSWD デバッグPA31PA31Serial Wire Debug データ
SWCLKSWD デバッグPA30PA30Serial Wire Debug クロック

ブートローダーモードに入る

XIAO SAMD21 の場合

ユーザーのプログラミング処理が失敗したとき、Seeed Studio XIAO SAMD21 のポートが消えてしまうことがあります。次の操作を行うことでこの問題を解決できます:

  • Seeed Studio XIAO SAMD21 をコンピュータに接続します。
  • ピン配置図の RST ピンを、ピンセットまたは短絡線を使って 2 回ショートさせます。
  • オレンジ色の LED が点滅し、その後点灯します。

この時点で、チップはブートローダーモードに入り、書き込みポートが再び現れます。samd21 チップには 2 つのパーティションがあり、1 つはブートローダー、もう 1 つはユーザープログラムです。製品は出荷時に、システムメモリ内にブートローダーコードを書き込みます。上記の手順を実行することでモードを切り替えることができます。

pir

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 番ピンの 2 本は同時には使用できません。割り込みの詳細についてはこちらを参照してください。

入門ガイド

ハードウェア

必要な部材

  • Seeed Studio XIAO SAMD21 x1
  • コンピュータ x1
  • USB Type-C ケーブル x1
ヒント

一部の USB ケーブルは電源供給のみで、データ転送ができません。USB ケーブルを持っていない場合や、手元の USB ケーブルがデータ転送に対応しているか分からない場合は、seeed USB type C support USB 3.1 を確認してください。

  • Step 1. Seeed Studio XIAO SAMD21 と Type-C ケーブルを準備します。

  • Step 2. Seeed Studio XIAO SAMD21 をコンピュータに接続します。その後、黄色の電源 LED が点灯するはずです。

ソフトウェア

注記

初めて Arduino を使用する場合は、Getting Started with Arduino を参照することを強くお勧めします。

  • Step 1. Arduino ソフトウェアをインストールする必要があります。

Arduino アプリケーションを起動する

事前にダウンロードした Arduino アプリケーション(arduino.exe)をダブルクリックします。

注記

Arduino ソフトウェアが別の言語で起動した場合は、設定ダイアログで変更できます。詳細は Arduino Software (IDE) ページ を参照してください。

  • Step 2. Blink サンプルを開く

LED 点滅サンプルスケッチを開きます:File > Examples >01.Basics > Blink

pir

  • Step 3. Seeeduino を Arduino IDE に追加する

File > Preference をクリックし、Additional Boards Manager URLs に以下の URL を入力します:

https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

pir

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

pir

XIAO SAMD21 ブリンク

  • ステップ 4. ボードとポートを選択する

ボードをインストールしたら、Tools-> Board をクリックし、Seeed Studio XIAO を探して選択します。これで Arduino IDE 用の Seeed Studio XIAO SAMD21 ボードの設定は完了です。

pir

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

pir

  • ステップ 5. プログラムを書き込む

あとは、環境内の Upload ボタンをクリックするだけです。数秒待ち、書き込みが成功すると、ステータスバーに "Done uploading." というメッセージが表示されます。

pir

書き込みが完了してから数秒後、ボード上の 13 番ピン (L) の LED が(オレンジ色で)点滅し始めるはずです。そうなればおめでとうございます!Arduino が正常に動作しています。問題がある場合は、トラブルシューティングの提案を参照してください。

注記

最大フラッシュサイズは 8 KB です。詳細については、リソースセクションの ATSAMD21G18A-MU データシートを参照してください。

XIAO SAMD21 Plus ブリンク

XIAO SAMD21 Plus では、L (LED) ピンは削除されています。その代わりに RGB_LED があり、ピン PA27 を介して制御されます。

‑ 対象ボードを XIAO M0 Plus に変更します。

pir

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

pir

‑ 以下のスニペットにコードを置き換えます。RGB_LED 用のピンは PA27 で、PIN_LED_RGB として再定義されています。

注意

RGB LED を過度な明るさで動作させると、眼精疲労や目の損傷を引き起こす可能性があります。適切な目の保護具の使用を推奨します。

#include <Adafruit_NeoPixel.h>

#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 が点灯します。

pir

注記

最大フラッシュサイズは 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 の使用方法については、サンプルプロジェクトを提供しています:How to Make a Fruit Piano on Seeed Studio XIAO SAMD21 ’s Q-Touch Function

アナログ入力と出力

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
}

結果

pir

バッテリーの使用

注記

背面に BAT バッテリーコネクタを備えているのは XIAO SAMD21 Plus のみですので、ご注意ください。

XIAO SAMD21 Plus は、3.7V リチウムバッテリーを電源入力として使用できます。配線方法については、次の図を参照してください。


注意

はんだ付けの際には、正極と負極を短絡させてバッテリーや機器を焼損させないよう十分注意してください。バッテリーに電力が残っている場合は、決して基板にはんだ付けしないでください。基板の回路が焼損するおそれがあります。回路に通電した状態で短絡させることは大きな危険を伴うため、アダプタの使用を推奨します。

バッテリー電圧読み取りの例

回路図によると、SGM40567-4.2XG/TR は単セルリチウムバッテリーの充電を行い、充電電流はおよそ 200 mA です。充電中は Charge_LED が点滅します。

バッテリー電圧の測定は、TPS22916CNYFPR ロードスイッチを PB2/VBAT_EN で制御することで行い、待機時の消費電力を低減します。バッテリー電圧は 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 が点滅します。

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

サンプルアプリケーション

リソース

XIAO SAMD21

ハードウェア設計

メカニカル設計

ソフトウェア & ツール

XIAO SAMD21 Plus

ハードウェア設計

メカニカル設計

コースリソース

技術サポート & 製品ディスカッション

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

Loading Comments...