Seeed Studio XIAO RP2350 と Arduino
Seeed Studio XIAO RP2350 ボードは、arduino-pico core により Arduino での開発に対応しました。このガイドでは、RP2350 ボードで Arduino をセットアップして使い始める方法を説明します。
特長
- 高性能 MCU ボード: Raspberry Pi RP2350 チップを搭載し、対称型デュアル Arm Cortex-M33(FPU 搭載)@ 150MHz を備えています。
- 強化されたセキュリティ機能: セキュアブートと暗号化ブートローダーを内蔵し、アプリケーションの安全性を確保します。
- ソフトウェアサポート: C/C++ と MicroPython に対応しており、プロジェクト開発やプロトタイピングを容易にします。
- 豊富なオンボードリソース: RGB LED、2MB フラッシュ、520kB SRAM、19 本の多機能 GPIO(アナログ、デジタル、I²C、UART、SPI、PWM)を統合しています。
- 新たに 8 本の IO を拡張: 既存の XIAO MCU と比較して、背面に 8 本の IO ピンが追加され、より複雑なアプリケーションをサポートします。
- 高効率な電源設計: スリープモードでわずか 50μA の超低消費電力で、バッテリー駆動が可能です。内部 IO によるバッテリー電圧の直接測定により、バッテリーマネジメントシステム(BMS)を強化します。
- 親指サイズのコンパクト設計: 21 x 17.8mm のサイズで、Seeed Studio のクラシックな XIAO フォームファクタを採用しており、省スペース用途に最適です。
- 量産に適した設計: すべての部品を表面側に配置した表面実装デバイス(SMD)設計と、両側のスタンプロールにより、効率的な量産を容易にします。
仕様
| 製品 | XIAO RP2040 | XIAO RP2350 |
|---|---|---|
| プロセッサ | Raspberry Pi RP2040 デュアル Cortex-M0+ @ 133MHz | Raspberry Pi RP2350 デュアル Cortex-M33 @ 150MHz, FPU |
| RAM | 264kB SRAM | 520kB SRAM |
| フラッシュ | 2MB オンボード | 2MB フラッシュ |
| LED | ユーザー LED x1 電源 LED x1 RGB LED x1 | ユーザー LED x1 電源 LED x1 RGB LED x1 |
| インターフェース | 11 ピン(すべて PWM 対応): アナログ x4 デジタル x11 I²C x1 UART x1 SPI x1 | 19 ピン(すべて PWM 対応): アナログ x3 デジタル x19 I²C x2 UART x2 SPI x2 |
| ボタン | RESET ボタン x1 BOOT ボタン x1 | RESET ボタン x1 BOOT ボタン x1 |
| セキュリティ | - | OTP、セキュアブート、Arm TrustZone |
| ソフトウェア互換性 | Micropython / Arduino / CircuitPython をサポート | Micropython / Arduino / C,C++ をサポート |
| 動作温度 | -20°C〜70°C | -20°C〜70°C |
| 寸法 | 21x17.8 mm | 21x17.8 mm |
ハードウェア概要
| XIAO RP2350 表面ピン配置 |
|---|
![]() |
| XIAO RP2350 裏面ピン配置 |
![]() |
| XIAO RP2350 コンポーネント |
![]() |
ピン配置の詳細が必要ですか?下の Assets and Resources に移動してください。
ピンマップ
| XIAO ピン | 機能 | チップピン | 代替機能 | 説明 |
|---|---|---|---|---|
| 5V | VBUS | 電源入力/出力 | ||
| GND | ||||
| 3V3 | 3V3_OUT | 電源出力 | ||
| D0 | アナログ | GPIO26 | GPIO、ADC | |
| D1 | アナログ | GPIO27 | GPIO、ADC | |
| D2 | アナログ | GPIO28 | GPIO、ADC | |
| D3 | SPI0_CSn | GPIO5 | GPIO、SPI | |
| D4 | SDA1 | GPIO6 | GPIO、I2C データ | |
| D5 | SCL1 | GPIO7 | GPIO、I2C クロック | |
| D6 | TX0 | GPIO0 | GPIO、UART 送信 | |
| D7 | RX0 | GPIO1 | GPIO、UART 受信 | |
| D8 | SPI0_SCK | GPIO2 | GPIO、SPI クロック | |
| D9 | SPI0_MISO | GPIO4 | GPIO、SPI データ | |
| D10 | SPI0_MOSI | GPIO3 | GPIO、SPI データ | |
| D11 | RX1 | GPIO21 | GPIO、UART 受信 | |
| D12 | TX1 | GPIO20 | GPIO、UART 送信 | |
| D13 | SCL0 | GPIO17 | GPIO、I2C クロック | |
| D14 | SDA0 | GPIO16 | GPIO、I2C データ | |
| D15 | SPI1_MOSI | GPIO11 | GPIO、SPI データ | |
| D16 | SPI1_MISO | GPIO12 | GPIO、SPI データ | |
| D17 | SPI1_SCK | GPIO10 | GPIO、SPI クロック | |
| D18 | SPI1_Csn | GPIO9 | Csn | |
| ADC_BAT | GPIO29 | BAT 電圧値を読み取る | ||
| ADC_BAT_EN | GPIO19 | BAT 電圧検出イネーブル | ||
| Reset | RUN | RUN | ||
| Boot | RP2040_BOOT | ブートモードに入る | ||
| CHARGE_LED | NCHG | CHG-LED_赤 | ||
| RGB LED | GPIO22 | RGB LED | ||
| USER_LED | GPIO25 | ユーザーライト_黄 |
事前準備
始める前に、次のものを用意してください:
- RP2350 ボード
- Arduino IDE
- USB ケーブル
ソフトウェアのセットアップ
1. Arduino IDE をインストールする
公式サイトから最新の Arduino IDE をダウンロードしてインストールします: Arduino Software。
2. RP2350 ボードサポートを追加する
-
Arduino IDE を開き、File > Preferences に移動します。
-
Additional Boards Manager URLs フィールドに、次の URL を追加します:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
-
OK をクリックして設定を保存します。
-
Tools > Board > Boards Manager に移動します。
-
Boards Manager で pico を検索し、Install をクリックします。
-
インストール後、Tools > Board に移動し、下図のボードを選択します。
XIAO RP2350 ボードを完全にサポートするには、バージョン 4.2.0 以降をインストールしてください。

3. スケッチを書き込む
スケッチを書き込む前に、XIAO RP2350 を BOOT モードにします。次のいずれかの方法を使用します:
- 方法 1: パソコンに接続する前
- 方法 2: パソコンに接続している状態で


- Arduino IDE を開き、新しいスケッチを作成します。
- コードを書きます。例えば、
Blinkのサンプルコードを使用します。 - Tools > Port に移動し、RP2350 が接続されているポートを選択します。

低消費電力性能の検証
XIAO RP2350 の電源設計は、低消費電力シナリオにおいて優れた性能を発揮し、さまざまな低消費電力アプリケーションに幅広く適用できます。
バッテリー接続
XIAO RP2350 は 3.7V リチウムバッテリーで給電できます。配線については、以下の図を参照してください。

はんだ付けの際は、バッテリーや機器を損傷しないよう、正極と負極を短絡させないように注意してください。
ファームウェアを書き込む
XIAO RP2350 のバッテリーサンプリング回路では、SX1801CCR に基づく電圧サンプリング方式を採用しています。2 つの 470 kΩ 抵抗によって分圧回路が構成され、分圧比は 2 になります。プログラムでは 3.3 V を基準電圧として使用し、電圧復元式によって実際のバッテリー電圧を算出できます。
次の例では、真のディープスリープに必要な pico-extras ライブラリを Arduino IDE に容易に統合できないため、ウォッチドッグによる再起動方式を用いてディープスリープを模擬しています。
Program
#include <Arduino.h>
#include "hardware/powman.h"
#include "hardware/adc.h"
#include "hardware/watchdog.h"
// ── Pin Definitions ──────────────────────────────────────────────
#define BAT_ADC_EN 19
#define BAT_ADC_READ 29
#define SLEEP_SEC 30
#define VOLTAGE_DIVIDER_RATIO 2.0f
#define VBAT_LOW_THRESHOLD 3.5f
#define SCRATCH_MAGIC 0xDEADBEEF
// ── Global voltage storage (can be output via other methods, e.g., LED alert) ──────────
static float g_vbat = 0.0f;
static bool g_lowBat = false;
// ── Disable ADC Peripheral ──────────────────────────────────────
static void disableADC() {
adc_run(false);
hw_clear_bits(&adc_hw->cs, ADC_CS_EN_BITS);
}
// ── Read Battery Voltage ─────────────────────────────────────────
static float readVbat() {
digitalWrite(BAT_ADC_EN, HIGH);
delayMicroseconds(500);
adc_init();
adc_gpio_init(BAT_ADC_READ);
adc_select_input(3);
analogReadResolution(12);
(void)analogRead(BAT_ADC_READ); // Discard the first reading
int32_t sum = 0;
for (int i = 0; i < 5; i++) {
sum += analogRead(BAT_ADC_READ);
delayMicroseconds(200);
}
digitalWrite(BAT_ADC_EN, LOW); // ★ Disable voltage divider immediately after sampling
disableADC();
return ((float)sum / 5.0f / 4095.0f * 3.3f) * VOLTAGE_DIVIDER_RATIO;
}
// ── Shut Down All Unnecessary Peripherals ─────────────────────────
static void shutdownPeripherals() {
// ADC
digitalWrite(BAT_ADC_EN, LOW);
disableADC();
// Pull down all unused pins to eliminate floating leakage
const uint8_t unused[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18};
for (uint8_t pin : unused) {
pinMode(pin, INPUT_PULLDOWN);
}
// Reduce frequency to 18MHz to significantly reduce dynamic power consumption
set_sys_clock_khz(18000, false);
}
// ── Low-Power Wait (Watchdog Reboot to Simulate Sleep) ───────────
static void sleepWithReboot(uint32_t seconds) {
// Start POWMAN Timer (LPOSC 1kHz)
if (!powman_timer_is_running()) powman_timer_start();
powman_timer_set_1khz_tick_source_lposc();
// Store wake-up target time in scratch registers
uint64_t wake_ms = powman_timer_get_ms() + (uint64_t)seconds * 1000ULL;
watchdog_hw->scratch[4] = SCRATCH_MAGIC;
watchdog_hw->scratch[5] = (uint32_t)(wake_ms & 0xFFFFFFFF);
watchdog_hw->scratch[6] = (uint32_t)(wake_ms >> 32);
shutdownPeripherals();
// Watchdog timeout reboot (max 8.3s), CPU waits in low-frequency WFE
rp2040.wdt_begin(8300);
while (true) {
__wfe();
}
}
// ─────────────────────────────────────────────────────────────────
void setup() {
// First action on power-up: pull ADC_EN low
pinMode(BAT_ADC_EN, OUTPUT);
digitalWrite(BAT_ADC_EN, LOW);
pinMode(BAT_ADC_READ, INPUT);
// ── Check if waking up from sleep reboot ───────────────────────
if (watchdog_hw->scratch[4] == SCRATCH_MAGIC) {
if (!powman_timer_is_running()) powman_timer_start();
powman_timer_set_1khz_tick_source_lposc();
uint64_t wake_ms = (uint64_t)watchdog_hw->scratch[5]
| ((uint64_t)watchdog_hw->scratch[6] << 32);
uint64_t now_ms = powman_timer_get_ms();
if (now_ms < wake_ms) {
// Not time to wake up yet, continue waiting
sleepWithReboot((uint32_t)((wake_ms - now_ms) / 1000 + 1));
// Will not return
}
// Time to wake up, clear flag
watchdog_hw->scratch[4] = 0;
}
// ── Restore normal frequency, execute application logic ───────
set_sys_clock_khz(125000, true);
// Sample voltage
g_vbat = readVbat();
g_lowBat = (g_vbat < VBAT_LOW_THRESHOLD);
// TODO: Process sampling results here
// Example: Turn on LED alert for low battery
// if (g_lowBat) { digitalWrite(LED_PIN, HIGH); delay(100); ... }
// Enter sleep mode 2 seconds after power-up
delay(2000);
}
void loop() {
sleepWithReboot(SLEEP_SEC);
// Will not return; restarts from setup() after wake-up
}
その後、プログラムを書き込むことができます。
または、検証および性能テスト用に、当社があらかじめ用意したファームウェアを使用することもできます。
XIAO RP2350 Low Power Test Firmware をダウンロードし、ファイルシステムにドラッグします。

結果
計測機器によるテストと検証の結果、XIAO RP2350 が低消費電力モードに入ったときの平均電流は 53 μA でした。

- 低消費電力モードにおける平均電流は、使用する計測機器によって異なる場合があります。実際のテスト結果を参照してください。
- このテスト結果は、低消費電力テスト用ファームウェアを書き込んだ後に得られたものです。
- 消費電力テストを行う場合、テスト配線は裏面の BAT インターフェースに接続してください。
- Arduino IDE では、ディープスリープに必要な pico/sleep.h を含む pico-extras ライブラリの統合が困難なため、超低消費電力開発には Pico SDK または PlatformIO + arduino-pico フレームワークの使用を推奨します。
アセット & リソース
ハードウェア設計
- 📄[データシート] Raspberry Pi RP2350 Datasheet
- 📄[回路図] XIAO RP2350 Schematic
- 🗃️[PCB 設計ファイル] XIAO RP2350 KiCad Project
- 🗃️[PCB ライブラリ]
- 📄[ピン配置図] XIAO RP2350 Pinout Sheet
メカニカル設計
- 📄[2D 寸法] XIAO RP2350 Dimension in DXF
- 🔗[3D モデル] XIAO RP2350 3D Model
ソフトウェア & ツール
- 📄[テスト用ファームウェア] XIAO RP2350 Low Power Test Firmware
その他
- 📄[ドキュメント] Getting Started with Raspberry Pi Pico-series
- Raspberry Pi Pico ボードのセットアップとプログラミングについて解説した包括的なガイドで、MicroPython や C/C++ を学びたい初心者に最適です。
- 📄[ドキュメント] Raspberry Pi Pico-series Python SDK
- MicroPython のセットアップ手順と API をまとめた書籍です。
- 📄[ドキュメント] Raspberry Pi Pico-series C/C++SDK
- Pico C/C++ SDK の API をまとめた書籍です。
- 📄[arduino-pico GitHub](https://github.com/earlephilhower/arduino-pico)
- 📄[Arduino-Pico Core Documentation](https://arduino-pico.readthedocs.io/en/latest/install.html)
サポート & ディスカッション
Seeed の製品をご利用いただきありがとうございます。サポートおよびコミュニティディスカッションのために、複数のチャネルをご用意しています。


