Skip to main content

Seeed Studio XIAO RP2350 入门指南(MicroPython)

Seeed Studio XIAO RP2350


XIAO RP2350 将 Raspberry Pi RP2350(双 Cortex-M33 内核,运行频率 150MHz,带 FPU,增强的安全性和加密功能)的强大功能封装在经典的 XIAO 外形尺寸中。尺寸仅为 21x17.8mm,它具有 19 个多功能 GPIO、一个 RGB LED 和一个电池管理系统,具有 50μA 的超低功耗、电池供电和直接电池电压测量功能。得益于 XIAO 生态系统,XIAO RP2350 兼容各种扩展模块,包括显示器、LED 矩阵、Grove 模块、CAN 总线、Vision AI 传感器和毫米波传感器。凭借对 MicroPython、C 和 C++ 的原生支持,XIAO RP2350 非常适合各个级别的开发者创建紧凑的电池供电应用,用于智能控制、可穿戴设备、DIY 键盘等。

特性

  • 强大的 MCU 板: 配备 Raspberry Pi RP2350 芯片,具有对称双 Arm Cortex-M33 @ 150MHz 和 FPU。
  • 增强的安全功能: 内置安全启动和加密引导加载程序确保应用程序安全。
  • 软件支持: 兼容 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 RP2040Raspberry Pi RP2350
双核 Cortex-M0+ @ 133MHz双核 Cortex-M33 @ 150MHz,FPU
RAM264kB SRAM520kB SRAM
Flash2MB 板载2MB Flash
LED1个用户LED(3色),1个电源LED,1个RGB LED1个用户LED,1个充电LED(电池充电指示器),1个RGB LED
接口11个引脚:4个模拟,11个数字,1个I²C,1个UART,1个SPI,全部支持PWM19个引脚:3个模拟,19个数字,2个I²C,2个UART,2个SPI,全部支持PWM
按钮1个RESET按钮,1个BOOT按钮
安全性 - OTP,安全启动,Arm TrustZone
低功耗 - 4.2V/50uA
软件兼容性Arduino,PlatformIO,MicroPython,CircuitPython,Zephyr,更多即将推出Arduino,PlatformIO,MicroPython,CircuitPython,更多即将推出
工作温度-20°C~70°C
尺寸21x17.8 mm

硬件概述

XIAO RP2350 正面引脚图
XIAO RP2350 Front Pinout
XIAO RP2350 背面引脚图
XIAO RP2350 Back Pinout
XIAO RP2350 组件
XIAO RP2350 Components

需要更多引脚详细信息?请导航到下方的资产和资源

平台支持

XIAO RP2350 由 RP2350 驱动,支持 MicroPython 和 Raspberry Pi 提供的 C/C++ SDK。这种灵活性允许开发者为原型设计和开发选择他们偏好的编程语言和环境。

C/C++ SDKMicroPython
c-cpp logoMicroPython

开始使用▶️

attention

本页面主要面向MicroPython用户。对于有兴趣学习SDK编程或高级用户,您可能希望从Raspberry Pi Pico系列C/C++ SDK开始。本指南将帮助您设置环境并开始使用示例代码。此外,您可以访问XIAO RP2350与C/C++ SDK获取与XIAO RP2350相关的更具体说明。

tip

如果您从官方网站下载固件,需要使用1.26.0或更高版本。SEEED_XIAO_RP2350

步骤1:在XIAO RP2350上安装MicroPython

要在XIAO RP2350上安装MicroPython固件,请按照以下步骤操作:

步骤1.1. 下载MicroPython固件:

  • 导航到MicroPython下载页面。
  • 下载与XIAO RP2350兼容的最新.uf2固件文件。

步骤1.2 进入BOOTSEL模式:

您可以使用以下两种方法之一在XIAO RP2350上进入BOOTSEL模式:

  1. 按住BOOT按钮
    当您的XIAO RP2350与计算机断开连接时,按住BOOT按钮。
  2. 连接到您的计算机
    在按住BOOT按钮的同时,使用USB线将XIAO RP2350连接到您的计算机。
  3. 释放BOOT按钮
    板子连接到计算机后,您可以释放BOOT按钮。XIAO RP2350现在应该处于BOOTSEL模式,您的计算机将识别它为可移动存储设备。
按住Boot-> 插入线缆-> 释放Boot

步骤1.3. 安装固件:

  • 拖拽下载的.uf2文件到XIAO RP2350的可移动存储驱动器中。
  • 文件复制完成后,板子将自动重启,完成固件安装。

步骤2:安装Thonny IDE

关于MicroPython

MicroPython是一种类似于Python的解释型语言。然而,与Python不同,MicroPython直接在硬件上运行(裸机),提供交互式提示符(REPL)来立即执行命令,以及从内置文件系统运行和导入脚本的能力。

要连接到XIAO RP2350板并开始编写和运行Python代码,您可以使用任何支持串行连接的终端工具,如minicom、PuTTY、electerm、warp等。为了获得更用户友好的体验,您可以使用**Thonny**,因为它易于使用、功能集成且对初学者友好。这样,您就可以享受直接在设备上编写和运行Python代码的乐趣。

Thonny IDE是一个对初学者友好的Python编辑器,非常适合MicroPython开发。以下是安装方法:

  1. 下载Thonny:

    • 访问Thonny下载页面
    • 为您的操作系统(Windows、macOS或Linux)选择合适的安装程序并下载。
  2. 安装Thonny:

    • 运行下载的安装程序。
    • 按照屏幕上的说明完成安装过程。
  3. 为MicroPython配置Thonny:

    • 打开Thonny IDE。
    • 查看Thonny窗口的右下角。
    • 点击解释器选择区域。
    • 从下拉菜单中选择**'MicroPython (RP2040)'**。
    • 确保选择了正确的端口——Thonny通常会自动检测。

现在您已准备好使用Thonny IDE为XIAO RP2350编写和上传MicroPython代码!

如果您的设备已准备好使用MicroPython,让我们从一个简单的项目开始:

让它闪烁! ✨

让板子闪烁LED通常是每个人运行的第一个程序。XIAO RP2350也是如此。

note

根据原理图,USER LED(XIAO RP2350上的黄色LED)连接到GPIO25/D19。 对于所有XIAO系列板子,USER LED在设置为低电平时会点亮,在设置为高电平时会熄灭

from machine import Pin # 从machine模块导入Pin类
from time import sleep # 从time模块导入sleep函数

# 将GPIO25初始化为输出引脚,用于控制用户LED
led = Pin(25, Pin.OUT)

# 初始关闭LED
led.value(1) # led.on() -> 高电平 -> 灯灭
sleep(0.5) # 等待0.5秒

# 打开LED
led.value(0) # led.off() -> 低电平 -> 灯亮
sleep(0.5) # 等待0.5秒

# 进入无限循环
while True:
# 切换LED状态(亮变灭或灭变亮)
led.toggle()
# 打印LED的当前状态
print(f"LED {'ON' if led.value() == 0 else 'OFF'}")
sleep(0.5) # 在下次切换前等待0.5秒

将代码复制到 Thonny IDE 后,如下图所示,只需点击 Run current script 按钮或按 F5 键。这将执行代码片段,您将看到 XIAO RP2350 上的 LED 开始闪烁。

使用 RGB LED

XIAO RP2350 配备了内置的 RGB LED,您可以使用 MicroPython 来控制它。以下是如何循环显示不同颜色的示例:

import array, time, random
from machine import Pin
import rp2

NUM_LEDS = 1
LED_PIN = 22 # PICO_DEFAULT_WS2812_PIN
POWER_PIN = 23 # PICO_DEFAULT_WS2812_POWER_PIN

# 全局亮度变量(0.0 到 1.0)
BRIGHTNESS = 0.1

@rp2.asm_pio(sideset_init=rp2.PIO.OUT_LOW, out_shiftdir=rp2.PIO.SHIFT_LEFT, autopull=True, pull_thresh=24)
def ws2812():
T1 = 2
T2 = 5
T3 = 3
wrap_target()
label("bitloop")
out(x, 1) .side(0) [T3 - 1]
jmp(not_x, "do_zero") .side(1) [T1 - 1]
jmp("bitloop") .side(1) [T2 - 1]
label("do_zero")
nop() .side(0) [T2 - 1]
wrap()

# 设置电源引脚
power_pin = Pin(POWER_PIN, Pin.OUT)
power_pin.value(1) # 打开LED电源

# 使用ws2812程序创建StateMachine,在LED_PIN上输出
sm = rp2.StateMachine(0, ws2812, freq=8_000_000, sideset_base=Pin(LED_PIN))

# 启动StateMachine,它将等待其FIFO上的数据。
sm.active(1)

def set_led_color(color):
sm.put(array.array("I", [color]), 8)

def random_color():
return random.randint(0, 255) | (random.randint(0, 255) << 8) | (random.randint(0, 255) << 16)

def interpolate(color1, color2, factor):
r1, g1, b1 = color1 & 255, (color1 >> 8) & 255, (color1 >> 16) & 255
r2, g2, b2 = color2 & 255, (color2 >> 8) & 255, (color2 >> 16) & 255
r = int(r1 + factor * (r2 - r1))
g = int(g1 + factor * (g2 - g1))
b = int(b1 + factor * (b2 - b1))
return (b << 16) | (g << 8) | r

def apply_brightness(color, brightness):
r, g, b = color & 255, (color >> 8) & 255, (color >> 16) & 255
r = int(r * brightness)
g = int(g * brightness)
b = int(b * brightness)
return (b << 16) | (g << 8) | r

print("开始可调亮度的随机颜色过渡...")

# 主循环
current_color = random_color()
while True:
next_color = random_color()
for i in range(100): # 100步实现平滑过渡
transition_color = interpolate(current_color, next_color, i / 100)
final_color = apply_brightness(transition_color, BRIGHTNESS)
set_led_color(final_color)
time.sleep_ms(20) # 调整此值以改变过渡速度
current_color = next_color

# 可选地,您可以在此处更改亮度以进行演示
# BRIGHTNESS = random.random() # 这将在每个循环中设置随机亮度

电池和电源管理

是否可以在不使用额外组件的情况下读取电池电压?是的,使用 XIAO RP2350,这比以往任何时候都更容易。在之前的 XIAO 系列成员中,例如 XIAO ESP32C3,读取电池电压需要手动连接到 A0 并使用电阻。

但是使用 XIAO RP2350,这个过程得到了简化。您现在可以直接使用 A3/GPIO29 引脚来读取电池电压水平,简化您的设计和开发。只需记住将 GPIO19 引脚设置为高电平,因为这是启用电池电压读取所必需的。

按照这个代码片段使用 Pico SDK 读取电池电压:

from machine import Pin, ADC
import time

# 初始化 GPIO 引脚以启用电池电压读取的函数
def init_gpio():
enable_pin = Pin(19, Pin.OUT)
enable_pin.value(1) # 将引脚设置为高电平以启用电池电压读取

def main():
print("ADC Battery Example - GPIO29 (A3)")

init_gpio() # 初始化使能引脚
adc = ADC(Pin(29)) # 在 GPIO29 上初始化 ADC

conversion_factor = 3.3 / (65535) # 12位 ADC 和 3.3V 参考电压的转换因子

while True:
result = adc.read_u16() # 读取 ADC 值
voltage = result * conversion_factor * 2 # 计算电压,考虑分压器(因子为2)
print("Raw value: 0x{:03x}, voltage: {:.2f} V".format(result, voltage))
time.sleep(0.5) # 延迟 500 毫秒

if __name__ == '__main__':
main()

资源与资料

XIAO RP2350利用了Raspberry Pi RP2350的强大功能,充分利用了Raspberry Pi社区的丰富共享资源。这为您在这块小板上定制项目开启了无限可能的世界。以下是帮助您入门的重要资源和资料。

数据手册和原理图

相关资源

扩展和应用

XIAO系列拥有大量的外设和外设配件供您学习和使用,无论您想要一个允许完美交互的彩色屏幕,还是一个带有明亮简洁RGB灯的集成板等等,都等待着您的探索。

作为XIAO家族的一员,XIAO RP2350也是如此。当然,为了更好地利用引出的额外引脚,新的外设和开发板将不断推出,充分利用其创造的性能。

  • 🌟 配件扩展
    探索与XIAO家族兼容的各种附加组件和模块,从显示器和LED矩阵到Grove模块和传感器,了解它们如何增强您的项目。

社区和学习

此外,深入充满活力的Raspberry Pi社区,扩展您的知识并发现新的项目想法。利用社区共享的资源、论坛和教程来增强您使用XIAO RP2350的体验。除了Seeed Studio Wiki之外,这里还有一些其他推荐的学习地方:

  • Raspberry Pi文档:获取关于RP2350的可靠和最新信息。
  • Raspberry Pi论坛:与其他爱好者互动,提问并分享您的项目。
  • XIAO GitHub仓库:探索官方XIAO仓库,获取更集中的文档并与我们的团队进行更多互动,加入我们!
  • Reddit上的r/embedded:加入嵌入式系统社区,分享见解并讨论各种话题。
  • GitHub上的Pico话题:探索与Pico相关的仓库和讨论。
  • Hackster.io:发现与各种硬件平台相关的项目和教程,包括XIAO和Raspberry Pi。
  • Instructables:寻找使用XIAO和其他硬件创建的DIY项目和分步指南。
  • Element14社区:参与与电子和嵌入式系统相关的讨论、网络研讨会和项目。

更多内容,我们始终欢迎您在我们的Seeed Studio DiscordSeeed Studio论坛上分享您的项目。这些平台为您提供了与其他创客联系、获得反馈和寻找灵感的绝佳机会。无论您需要帮助解决问题、想要展示您的最新作品,还是只是希望成为支持性社区的一部分,Seeed Studio的Discord和论坛都是参与和协作的完美场所。

技术支持与产品讨论

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...