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

Seeed Studio XIAO SAMD21 シリーズ入門ガイド

Seeed Studio XIAO SAMD21Seeed Studio XIAO SAMD21 Plus

概要

以前は 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 フラッシュ
Interface

GPIO ピン ×14
デジタルピン ×11
アナログピン ×11
DAC ×1
I2C ×1
UART ×1
SPI ×1

GPIO ピン ×30
デジタルピン ×27
アナログピン ×11
DAC ×1
I2C ×2
UART ×1
SPI ×1
I2S ×1

Onboard

ユーザー LED ×1
電源 LED ×1
TX/RX ステータス LED ×2

ユーザー LED ×1
Reset ボタン ×1
Boot ボタン ×1

Battery Managementなしオンボード PMIC
Power

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

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

BAT から 3V3 への逆流保護なしあり
動作温度-40°C ~ 85°C
寸法21 × 17.8 mm
ソフトウェア互換性

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 PinFunctionXIAO SAMD21XIAO SAMD21 PlusDescription
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_ENBattery Enable-PB2Plus 上のバッテリー電源制御
AIN11_VBATVoltage Read-PB3Plus 上のバッテリー電圧読み取り
ResetRESETNRESETNRESETNアクティブ Low リセット入力、パッケージピン 40
TX_LEDLEDPA19-オリジナルボードの TX インジケータ、アクティブ Low
RX_LEDLEDPA18-オリジナルボードの RX インジケータ、アクティブ Low
USER_LEDLEDPA17-オリジナルボードのユーザー LED、アクティブ Low
POWER_LEDPower indicator3V3-オリジナルボードの緑色電源 LED;MCU の GPIO ではない
RGB_LEDWS2812B data-PA27Plus のアドレス指定可能な RGB LED データ
USER_BUTTONButton-PB22Plus のユーザーボタン、アクティブ Low
VBAT_ENBattery ADC enable-PB02バッテリー電圧測定を有効化
AIN11_VBATBattery ADC-PB03 / AIN111/2 分圧を通したバッテリー電圧
CHARGE_LEDCharging indicator--Plus のハードウェア制御充電 LED;MCU の GPIO ではない
SWDIOSWD debugPA31PA31Serial Wire Debug データ
SWCLKSWD debugPA30PA30Serial 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 番ピンは同時には使用できません。割り込みの詳細についてはこちらを確認してください。

はじめに

ハードウェア

Seeed Studio XIAO SAMD21Seeed Studio XIAO SAMD21 Plus

必要な材料

  • 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

pir

  • ステップ 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

  • ステップ 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 では、L(LED)ピンは削除されています。その代わりに RGB_LED があり、ピン PA27 で制御されます。

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

pir

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

pir

‑ 以下のコードスニペットに置き換えます。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 が点灯します。

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 の使い方については、サンプルプロジェクトを用意しています: 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
}

結果

pir

バッテリーの使用

注記

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

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

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

リソース

XIAO SAMD21

ハードウェア設計

メカニカル設計

ソフトウェア & ツール

XIAO SAMD21 Plus

ハードウェア設計

メカニカル設計

コースリソース

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

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

Loading Comments...