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

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 RP2040XIAO RP2350
プロセッサRaspberry Pi RP2040
デュアル Cortex-M0+ @ 133MHz
Raspberry Pi RP2350
デュアル Cortex-M33 @ 150MHz, FPU
RAM264kB SRAM520kB 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 mm21x17.8 mm

ハードウェア概要

XIAO RP2350 表面ピン配置
XIAO RP2350 Front Pinout
XIAO RP2350 裏面ピン配置
XIAO RP2350 Back Pinout
XIAO RP2350 コンポーネント
XIAO RP2350 Components

ピン配置の詳細が必要ですか?下の Assets and Resources に移動してください。

ピンマップ

XIAO ピン機能チップピン代替機能説明
5VVBUS電源入力/出力
GND
3V33V3_OUT電源出力
D0アナログGPIO26GPIO、ADC
D1アナログGPIO27GPIO、ADC
D2アナログGPIO28GPIO、ADC
D3SPI0_CSnGPIO5GPIO、SPI
D4SDA1GPIO6GPIO、I2C データ
D5SCL1GPIO7GPIO、I2C クロック
D6TX0GPIO0GPIO、UART 送信
D7RX0GPIO1GPIO、UART 受信
D8SPI0_SCKGPIO2GPIO、SPI クロック
D9SPI0_MISOGPIO4GPIO、SPI データ
D10SPI0_MOSIGPIO3GPIO、SPI データ
D11RX1GPIO21GPIO、UART 受信
D12TX1GPIO20GPIO、UART 送信
D13SCL0GPIO17GPIO、I2C クロック
D14SDA0GPIO16GPIO、I2C データ
D15SPI1_MOSIGPIO11GPIO、SPI データ
D16SPI1_MISOGPIO12GPIO、SPI データ
D17SPI1_SCKGPIO10GPIO、SPI クロック
D18SPI1_CsnGPIO9Csn
ADC_BATGPIO29BAT 電圧値を読み取る
ADC_BAT_ENGPIO19BAT 電圧検出イネーブル
ResetRUNRUN
BootRP2040_BOOTブートモードに入る
CHARGE_LEDNCHGCHG-LED_赤
RGB LEDGPIO22RGB LED
USER_LEDGPIO25ユーザーライト_黄

事前準備

始める前に、次のものを用意してください:

  • RP2350 ボード
  • Arduino IDE
  • USB ケーブル

ソフトウェアのセットアップ

1. Arduino IDE をインストールする

公式サイトから最新の Arduino IDE をダウンロードしてインストールします: Arduino Software

2. RP2350 ボードサポートを追加する

  1. Arduino IDE を開き、File > Preferences に移動します。

  2. Additional Boards Manager URLs フィールドに、次の URL を追加します:

    https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
  3. OK をクリックして設定を保存します。

  4. Tools > Board > Boards Manager に移動します。

  5. Boards Manager で pico を検索し、Install をクリックします。

  6. インストール後、Tools > Board に移動し、下図のボードを選択します。

注記

XIAO RP2350 ボードを完全にサポートするには、バージョン 4.2.0 以降をインストールしてください。

3. スケッチを書き込む

スケッチを書き込む前に、XIAO RP2350 を BOOT モードにします。次のいずれかの方法を使用します:

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

低消費電力性能の検証

XIAO RP2350 の電源設計は、低消費電力シナリオにおいて優れた性能を発揮し、さまざまな低消費電力アプリケーションに幅広く適用できます。

バッテリー接続

XIAO RP2350 は 3.7V リチウムバッテリーで給電できます。配線については、以下の図を参照してください。

pir
注意

はんだ付けの際は、バッテリーや機器を損傷しないよう、正極と負極を短絡させないように注意してください。

ファームウェアを書き込む

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 をダウンロードし、ファイルシステムにドラッグします。

pir

結果

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

pir

ヒント
  1. 低消費電力モードにおける平均電流は、使用する計測機器によって異なる場合があります。実際のテスト結果を参照してください。
  2. このテスト結果は、低消費電力テスト用ファームウェアを書き込んだ後に得られたものです。
  3. 消費電力テストを行う場合、テスト配線は裏面の BAT インターフェースに接続してください。
  4. Arduino IDE では、ディープスリープに必要な pico/sleep.h を含む pico-extras ライブラリの統合が困難なため、超低消費電力開発には Pico SDK または PlatformIO + arduino-pico フレームワークの使用を推奨します。

アセット & リソース

ハードウェア設計

メカニカル設計

ソフトウェア & ツール

その他

サポート & ディスカッション

Seeed の製品をご利用いただきありがとうございます。サポートおよびコミュニティディスカッションのために、複数のチャネルをご用意しています。

Loading Comments...