树莓派 Pico 是树莓派基金会推出的一系列微控制器开发板。它和我们通常所说的能跑系统的“树莓派电脑”不同,更专注于与传感器、电机等硬件“打交道”,非常适合用于嵌入式开发、物联网、教育和创意项目。
Pico 系列核心成员对比
树莓派 Pico 家族已经有好几位成员了,它们各有侧重。这里整理了一张核心成员的对比表格,方便快速了解它们之间的区别:
| 型号对比 | 处理器 (核心/频率) | 内存 (SRAM) | 存储 (Flash) | 无线连接 | 核心亮点 |
|---|---|---|---|---|---|
| Raspberry Pi Pico (第一代) | 双核 Arm Cortex-M0+ @ 133MHz | 264KB | 2MB | 无 | 基础款,性价比极高,也是我们之前讨论的主角。 |
| Raspberry Pi Pico W | 同 Pico | 同 Pico | 同 Pico | 2.4GHz Wi-Fi 4 | 在Pico基础上增加了Wi-Fi功能,适用于物联网项目。 |
| Raspberry Pi Pico 2 (第二代) | 双核 Arm Cortex-M33 或 双核 Hazard3 RISC-V @ 150MHz | 520KB | 4MB | 无 | 性能更强,安全性更好,并引入了可选的RISC-V架构。 |
| Raspberry Pi Pico 2 W | 同 Pico 2 | 同 Pico 2 | 同 Pico 2 | 2.4GHz Wi-Fi 4 及 蓝牙 5.2 | 集Pico 2的强劲性能与无线连接于一身,功能最全。 |
独特魅力
它的独特魅力在哪里?除了基本的参数,Pico 系列之所以受欢迎,主要归功于以下几个特点:自研芯片 RP2040 / RP2350:Pico 的心脏是树莓派完全自主研发的芯片,这代表着高度的可控性和可定制性。独特的可编程I/O (PIO) 子系统:这是它最强大的功能之一。你可以用它来“创造”新的硬件接口,去连接那些标准接口(如I2C、SPI)不支持的特殊设备,比如驱动一个独特的LED灯带或读取一个高精度的旋转编码器。这就像是给硬件增加了“软件定义”的能力,极大地扩展了它的应用边界。
上手简单,开发友好:拖放式编程:按住开发板上的 BOOTSEL 键再连接电脑,它就会像一个U盘一样出现。你只需将扩展名为 .uf2 的程序文件拖进去,它就会自动运行,无需额外的烧录器。多语言支持:你可以用 C/C++(使用官方SDK),也可以用 icroPython 或 CircuitPython 来编写代码,这对初学者来说尤其友好。丰富的开发环境:除了官方工具,Thonny IDE、Arduino IDE、VS Code(配合Pico扩展)等都能完美支持它。
它能做什么?
从简单的电子入门到复杂的专业项目,Pico都能胜任。树莓派官网上展示了大量社区创客的精彩作品:
信息仪表盘:连接一个小屏幕,通过Wi-Fi(Pico W)获取天气或日历信息并显示出来。
物联网传感器:监测土壤湿度、环境温湿度,并将数据上传到云端,实现智能灌溉或环境监控。
机器人/无人机:利用其小巧的体积和PIO特性,作为机器人的“大脑”,控制电机并读取传感器数据。
游戏机:配合屏幕和按键,制作一个可以玩《贪吃蛇》、《俄罗斯方块》等经典游戏的掌机。
创意输入设备:利用其USB Host/Device功能,可以轻松将它模拟成一个游戏手柄、键盘宏按键板,甚至是一个可以精确测量角度的USB量角器。
可穿戴设备:体积小巧,非常适合嵌入到服装或配饰中,制作酷炫的LED发光装饰或交互式徽章。
树莓派Pico是一个将灵活性、性能和易用性结合得非常好的微控制器平台。它既适合作为你步入硬件世界的第一个伙伴,也足够强大,能满足专业创客和工程师的各种奇思妙想。
博主的pico
若干年前逛闲鱼的时候看到有这么一块板子,在此之前只接触过arduino,因为有arduino珠玉在前,所以pico上市至今,价格一直很亲民。本来想拿来学习一些电子制作的,然而实际情况是购买的时候pico1代刚上市,拆封的时候已是2026年初。这几天想尝试一下利用pico模拟一个usb鼠标,所以才把它从格纳库里翻了出来。
pico模拟鼠标
#include "Mouse.h" // Arduino-Pico 的鼠标库
// 定义引脚(可选:如果你想用 LED 指示状态)
const int ledPin = LED_BUILTIN; // Pico 上的板载 LED
void setup() {
// 初始化板载 LED(可选)
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH); // 点亮 LED 表示程序运行
// 初始化鼠标功能
// 注意:Pico 需要一点时间完成 USB 枚举,延迟一下更稳定
delay(2000); // 等待 2 秒让电脑识别设备
Mouse.begin();
}
void loop() {
// 向上滚动滚轮 10 次
for (int i = 0; i < 10; i++) {
Mouse.move(0, 0, 1); // 参数: (X移动, Y移动, 滚轮)
// 滚轮参数: 正数向上滚动,负数向下滚动
// 1 表示滚动一格,可以根据需要调整数值大小
delay(20); // 每次滚动之间稍作延迟,让系统能识别每一次滚动
}
// 停顿 10 秒
delay(10000); // 10000 毫秒 = 10 秒
// 无限循环,回到上面继续执行
}

