Seeed Studio XIAO RP2350 com Arduino
A placa Seeed Studio XIAO RP2350 agora oferece suporte à programação via Arduino, graças ao arduino-pico core. Este guia ajudará você a configurar e começar a usar o Arduino na sua placa RP2350.
Recursos
- Placa MCU poderosa: Equipada com um chip Raspberry Pi RP2350 com dois núcleos Arm Cortex-M33 simétricos @ 150MHz com FPU.
- Recursos de segurança aprimorados: Secure boot integrado e bootloader criptografado garantem a segurança da aplicação.
- Suporte de software: Compatível com C/C++ e MicroPython, garantindo desenvolvimento e prototipagem de projetos com facilidade.
- Ricos recursos onboard: Integra um LED RGB, 2MB de Flash, 520kB de SRAM e 19 GPIOs multifunção (Analógico, Digital, I²C, UART, SPI, PWM).
- 8 novos IOs expandidos: Em comparação com os MCUs XIAO anteriores, a adição de 8 pinos IO na parte traseira suporta aplicações mais complexas.
- Projeto de energia eficiente: Consumo ultrabaixo de apenas 50μA em modo de suspensão, permitindo alimentação por bateria. A medição direta da tensão da bateria via IO interno aprimora o sistema de gerenciamento de bateria (BMS).
- Design compacto do tamanho de um polegar: Medindo 21 x 17,8 mm, adotando o formato clássico XIAO da Seeed Studio, ideal para aplicações com restrição de espaço.
- Amigável à produção: Design SMD (Surface Mount Device) com todos os componentes na frente e furos em forma de selo em ambos os lados, facilitando a produção em massa eficiente.
Especificação
| Produto | XIAO RP2040 | XIAO RP2350 |
|---|---|---|
| Processador | Raspberry Pi RP2040 Dual Cortex-M0+ @ 133MHz | Raspberry Pi RP2350 Dual Cortex-M33 @ 150MHz, FPU |
| RAM | 264kB SRAM | 520kB SRAM |
| Flash | 2MB Onboard | 2MB Flash |
| LEDs | 1x LED de usuário 1x LED de alimentação 1x LED RGB | 1x LED de usuário 1x LED de alimentação 1x LED RGB |
| Interface | 11 pinos (todos PWM): 4x Analógico 11x Digital 1x I²C 1x UART 1x SPI | 19 pinos (todos PWM): 3x Analógico 19x Digital 2x I²C 2x UART 2x SPI |
| Botão | 1x botão RESET 1x botão BOOT | 1x botão RESET 1x botão BOOT |
| Segurança | - | OTP, Secure Boot, Arm TrustZone |
| Compatibilidade de software | Suporta Micropython / Arduino / CircuitPython | Suporta Micropython / Arduino / C,C++ |
| Temperatura de trabalho | -20°C-70°C | -20°C-70°C |
| Dimensões | 21x17.8 mm | 21x17.8 mm |
Visão geral do hardware
| Pinout frontal do XIAO RP2350 |
|---|
![]() |
| Pinout traseiro do XIAO RP2350 |
![]() |
| Componentes do XIAO RP2350 |
![]() |
Precisa de mais detalhes sobre os pinouts? Navegue até Assets and Resources abaixo.
Mapa de pinos
| Pino XIAO | Função | Pino do chip | Funções alternativas | Descrição |
|---|---|---|---|---|
| 5V | VBUS | Entrada/Saída de energia | ||
| GND | ||||
| 3V3 | 3V3_OUT | Saída de energia | ||
| D0 | Analógico | GPIO26 | GPIO, ADC | |
| D1 | Analógico | GPIO27 | GPIO, ADC | |
| D2 | Analógico | GPIO28 | GPIO, ADC | |
| D3 | SPI0_CSn | GPIO5 | GPIO, SPI | |
| D4 | SDA1 | GPIO6 | GPIO, dados I2C | |
| D5 | SCL1 | GPIO7 | GPIO, clock I2C | |
| D6 | TX0 | GPIO0 | GPIO, transmissão UART | |
| D7 | RX0 | GPIO1 | GPIO, recepção UART | |
| D8 | SPI0_SCK | GPIO2 | GPIO, clock SPI | |
| D9 | SPI0_MISO | GPIO4 | GPIO, dados SPI | |
| D10 | SPI0_MOSI | GPIO3 | GPIO, dados SPI | |
| D11 | RX1 | GPIO21 | GPIO, recepção UART | |
| D12 | TX1 | GPIO20 | GPIO, transmissão UART | |
| D13 | SCL0 | GPIO17 | GPIO, clock I2C | |
| D14 | SDA0 | GPIO16 | GPIO, dados I2C | |
| D15 | SPI1_MOSI | GPIO11 | GPIO, dados SPI | |
| D16 | SPI1_MISO | GPIO12 | GPIO, dados SPI | |
| D17 | SPI1_SCK | GPIO10 | GPIO, clock SPI | |
| D18 | SPI1_Csn | GPIO9 | Csn | |
| ADC_BAT | GPIO29 | Ler o valor de tensão da bateria | ||
| ADC_BAT_EN | GPIO19 | Habilitar detecção de tensão da BAT | ||
| Reset | RUN | RUN | ||
| Boot | RP2040_BOOT | Entrar no modo Boot | ||
| CHARGE_LED | NCHG | CHG-LED_Vermelho | ||
| RGB LED | GPIO22 | LED RGB | ||
| USER_LED | GPIO25 | Luz de usuário_Amarela |
Pré-requisitos
Para começar, certifique-se de ter:
- Uma placa RP2350
- A Arduino IDE
- Um cabo USB
Configurando o software
1. Instale a Arduino IDE
Baixe e instale a versão mais recente da Arduino IDE no site oficial: Arduino Software.
2. Adicione o suporte à placa RP2350
-
Abra a Arduino IDE e navegue até File > Preferences.
-
No campo Additional Boards Manager URLs, adicione esta URL:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
-
Clique em OK para salvar suas configurações.
-
Vá em Tools > Board > Boards Manager.
-
No Boards Manager, pesquise por pico e clique em Install.
-
Após a instalação, vá em Tools > Board e selecione a placa mostrada abaixo como sua placa.
Certifique-se de instalar a versão 4.2.0 ou posterior para suporte completo à placa XIAO RP2350.

3. Enviando um sketch
Antes de enviar um sketch, coloque seu XIAO RP2350 em modo BOOT. Use um dos métodos abaixo:
- Método 1: Antes de conectar ao computador
- Método 2: Enquanto conectado ao computador


- Abra a Arduino IDE e crie um novo sketch.
- Escreva seu código. Por exemplo, use o código de exemplo
Blink. - Vá em Tools > Port e selecione a porta onde seu RP2350 está conectado.

Verificação de Desempenho em Baixo Consumo
O design de alimentação do XIAO RP2350 oferece excelente desempenho em cenários de baixo consumo de energia e pode ser amplamente aplicado a várias aplicações de baixo consumo.
Conexão da bateria
O XIAO RP2350 pode ser alimentado por uma bateria de lítio de 3,7 V. Você pode consultar o diagrama abaixo para a fiação.

Tenha cuidado para não causar curto-circuito entre os terminais positivo e negativo e queimar a bateria e o equipamento durante a soldagem.
Grave o firmware
No circuito de amostragem da bateria do XIAO RP2350, é adotada uma solução de amostragem de tensão baseada no SX1801CCR. Um circuito divisor de tensão é formado por dois resistores de 470 kΩ, resultando em uma taxa de divisão de tensão de 2. O programa usa 3,3 V como tensão de referência, e a tensão real da bateria pode ser calculada por meio da fórmula de restauração de tensão.
O exemplo a seguir usa uma abordagem de reinicialização por watchdog para simular sono profundo, já que a IDE Arduino não consegue integrar facilmente a biblioteca pico-extras necessária para o sono profundo real.
Programa
#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
}
Em seguida, você pode enviar o programa.
Como alternativa, você pode usar nosso firmware pré-escrito para verificação e teste de desempenho.
Baixe o Firmware de Teste de Baixo Consumo do XIAO RP2350, arraste-o para o sistema de arquivos.

Resultado
Após testes e verificação com instrumentos, a corrente média do XIAO RP2350 é de 53 μA ao entrar no modo de baixo consumo.

- A corrente média em modo de baixo consumo medida por diferentes instrumentos pode variar. Consulte os resultados reais do teste.
- Este resultado de teste é obtido após gravar o firmware de teste de baixo consumo.
- Para testes de consumo de energia, a fiação de teste deve ser conectada à interface BAT no lado traseiro.
- Como a IDE Arduino tem dificuldade em integrar a biblioteca pico-extras (que contém pico/sleep.h necessário para sono profundo), é recomendável usar o Pico SDK ou o framework PlatformIO + arduino-pico para desenvolvimento de ultra baixo consumo.
Ativos e Recursos
Projeto de Hardware
- 📄[Datasheet] Raspberry Pi RP2350 Datasheet
- 📄[Esquemático] Esquemático do XIAO RP2350
- 🗃️[Arquivos de Projeto de PCB] Projeto KiCad do XIAO RP2350
- 🗃️[Bibliotecas de Projeto de PCB]
- 📄[Diagrama de Pinagem] Folha de Pinagem do XIAO RP2350
Projeto Mecânico
- 📄[Dimensões 2D] Dimensões do XIAO RP2350 em DXF
- 🔗[Modelo 3D] Modelo 3D do XIAO RP2350
Software e Ferramentas
- 📄[Firmware de Teste] Firmware de Teste de Baixo Consumo do XIAO RP2350
Outros
- 📄[Documento] Introdução à Série Raspberry Pi Pico
- Um guia abrangente para configurar e programar placas Raspberry Pi Pico, ideal para iniciantes que desejam aprender MicroPython ou C/C++.
- 📄[Documento] SDK Python da Série Raspberry Pi Pico
- O livro que documenta os tutoriais de configuração do MicroPython e as APIs
- 📄[Documento] SDK C/C++ da Série Raspberry Pi Pico
- O livro que documenta as APIs do Pico C/C++ SDK
- 📄[arduino-pico GitHub](https://github.com/earlephilhower/arduino-pico)
- 📄[Documentação do Core Arduino-Pico](https://arduino-pico.readthedocs.io/en/latest/install.html)
Suporte e Discussão
Obrigado por usar os produtos Seeed! Oferecemos vários canais para suporte e discussão com a comunidade:


