Pular para o conteúdo principal

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

ProdutoXIAO RP2040XIAO RP2350
ProcessadorRaspberry Pi RP2040
Dual Cortex-M0+ @ 133MHz
Raspberry Pi RP2350
Dual Cortex-M33 @ 150MHz, FPU
RAM264kB SRAM520kB SRAM
Flash2MB Onboard2MB Flash
LEDs1x 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
Interface11 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ão1x botão RESET
1x botão BOOT
1x botão RESET
1x botão BOOT
Segurança-OTP, Secure Boot, Arm TrustZone
Compatibilidade de softwareSuporta Micropython / Arduino / CircuitPythonSuporta Micropython / Arduino / C,C++
Temperatura de trabalho-20°C-70°C-20°C-70°C
Dimensões21x17.8 mm21x17.8 mm

Visão geral do hardware

Pinout frontal do XIAO RP2350
XIAO RP2350 Front Pinout
Pinout traseiro do XIAO RP2350
XIAO RP2350 Back Pinout
Componentes do XIAO RP2350
XIAO RP2350 Components

Precisa de mais detalhes sobre os pinouts? Navegue até Assets and Resources abaixo.

Mapa de pinos

Pino XIAOFunçãoPino do chipFunções alternativasDescrição
5VVBUSEntrada/Saída de energia
GND
3V33V3_OUTSaída de energia
D0AnalógicoGPIO26GPIO, ADC
D1AnalógicoGPIO27GPIO, ADC
D2AnalógicoGPIO28GPIO, ADC
D3SPI0_CSnGPIO5GPIO, SPI
D4SDA1GPIO6GPIO, dados I2C
D5SCL1GPIO7GPIO, clock I2C
D6TX0GPIO0GPIO, transmissão UART
D7RX0GPIO1GPIO, recepção UART
D8SPI0_SCKGPIO2GPIO, clock SPI
D9SPI0_MISOGPIO4GPIO, dados SPI
D10SPI0_MOSIGPIO3GPIO, dados SPI
D11RX1GPIO21GPIO, recepção UART
D12TX1GPIO20GPIO, transmissão UART
D13SCL0GPIO17GPIO, clock I2C
D14SDA0GPIO16GPIO, dados I2C
D15SPI1_MOSIGPIO11GPIO, dados SPI
D16SPI1_MISOGPIO12GPIO, dados SPI
D17SPI1_SCKGPIO10GPIO, clock SPI
D18SPI1_CsnGPIO9Csn
ADC_BATGPIO29Ler o valor de tensão da bateria
ADC_BAT_ENGPIO19Habilitar detecção de tensão da BAT
ResetRUNRUN
BootRP2040_BOOTEntrar no modo Boot
CHARGE_LEDNCHGCHG-LED_Vermelho
RGB LEDGPIO22LED RGB
USER_LEDGPIO25Luz 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

  1. Abra a Arduino IDE e navegue até File > Preferences.

  2. No campo Additional Boards Manager URLs, adicione esta URL:

    https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
  3. Clique em OK para salvar suas configurações.

  4. Vá em Tools > Board > Boards Manager.

  5. No Boards Manager, pesquise por pico e clique em Install.

  6. Após a instalação, vá em Tools > Board e selecione a placa mostrada abaixo como sua placa.

nota

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:

Segure Boot -> Conecte o cabo -> Solte Boot
  1. Abra a Arduino IDE e crie um novo sketch.
  2. Escreva seu código. Por exemplo, use o código de exemplo Blink.
  3. 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.

pir
cuidado

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.

pir

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.

pir

dica
  1. A corrente média em modo de baixo consumo medida por diferentes instrumentos pode variar. Consulte os resultados reais do teste.
  2. Este resultado de teste é obtido após gravar o firmware de teste de baixo consumo.
  3. Para testes de consumo de energia, a fiação de teste deve ser conectada à interface BAT no lado traseiro.
  4. 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

Projeto Mecânico

Software e Ferramentas

Outros

Suporte e Discussão

Obrigado por usar os produtos Seeed! Oferecemos vários canais para suporte e discussão com a comunidade:

Loading Comments...