1. 一次真实的连接现场:同一块 Pico,三种工具的初始体验
手里这块树莓派 Pico 已经吃灰了小半年。前几天重新翻出来,给它刷了个 MicroPython 固件,准备接一个舵机做个小玩意。结果没高兴几分钟,第一个问题就卡住了:我到底用哪个工具连上去写代码?mpremote?Putty?还是 MobaXterm?
这个问题听起来很基础,但真到了动手的时候,细节远比想象中多。我先说结论:如果你连 Pico 只是为了输入几行 Python 命令、看硬件反馈、加载固件,mpremote 最省心;如果你要连着板子长时间调试,还要保存操作日志,MobaXterm 更合适;Putty 则适合那些对"纯净"和"极简"有执念的老派玩家。但这句话背后的理由,以及每个工具的坑,我建议你完整看完这篇文章再下结论。
为了写这篇对比,我把三种工具在同一块 Pico 上全部跑了一遍。环境如下:
- 硬件:树莓派 Pico(RP2040 芯片)
- 固件:MicroPython v1.23.0
- 操作系统:Windows 11
- 连接方式:USB 数据线直连(注意是数据线,不是充电线)
- 需要实现的目标:进入 REPL,执行点亮板载 LED 的代码,再用舵机控制验证真实场景
先说个小背景。Pico 上电后如果刷了 MicroPython 固件,系统会在 USB 上虚拟出一个串口设备。Windows 下一般显示为COMx(比如 COM3、COM7),Linux 下则是/dev/ttyACM0。它本身不依赖任何专用软件,任何能打开串口的终端工具理论上都能连。但"能连"和"连得舒服"完全是两码事。
我用实际的对比说话,下面的内容是我在这几种工具之间反复切换后总结出来的真实感受,不是看文档抄出来的。文章后面还会穿插我调试舵机时遇到的一个非常典型的问题——这个问题正好能把三个工具各自的特性暴露得非常清楚。
2. 为什么连接 REPL 没你想的那么简单:串口背后的几件事
很多人第一次用 Pico 都会有一个疑问:这不就是一个 USB 串口吗?为什么我用某软件打开之后一片空白,按回车也没反应?
这其实是 MicroPython REPL 的一个特性。REPL(Read-Eval-Print Loop)是一个交互式解释器,它需要终端工具配合正确的串口参数才能工作。最关键的参数是波特率,虽然 MicroPython 的 USB 虚拟串口对波特率不敏感(你填多少它都照常工作,因为数据走的是 USB CDC 协议,不是 UART 硬件串口),但有些终端工具如果设置不对,会连带影响其他配置,导致显示异常。
下面这张表是 Pico REPL 的标准串口参数:
| 参数 | 值 |
|---|---|
| 波特率 | 115200 |
| 数据位 | 8 |
| 停止位 | 1 |
| 校验位 | None |
| 流控 | None |
注意,我上面说了 USB 虚拟串口其实不关心波特率,但建议你还是填 115200,理由有两个:一是避免某些工具内部逻辑把波特率异常当作错误处理;二是如果你未来改用 Pico 的 UART 引脚接外部串口模块调试,这个参数就是生效的,提前养成好习惯不容易翻车。
2.1 进入 REPL 的正确姿势:为什么有时候屏幕是黑的
这里我要分享一个可能让新手困惑的问题。你打开终端工具,连上 COM 口,屏幕上一片空白,你以为是坏了。其实不是,MicroPython 的 REPL 默认只在你有输入动作时才有反应。你需要先按一下回车,才会出现>>>提示符。
原因是 Pico 上电后,MicroPython 固件会检测有没有程序自动启动(比如main.py或boot.py)。如果没有程序抢占 REPL,解释器就静静等着。你打开终端软件时的默认状态是"只接收不发送",所以屏幕空着是正常的,敲一个回车立刻就能看到提示符。
另外还有个 Ctrl+C 的妙用。如果你的 Pico 里烧录了一个死循环程序(比如控制舵机的代码写错了导致while True无限循环),上电后程序一直跑,你连上 REPL 可能什么都输入不了。这时候按Ctrl+C可以中断正在运行的程序,强制回到 REPL 提示符。这招我后面调舵机时用到了不止一次。
2.2 Ctrl+E 粘贴模式:大段代码的传送门
如果你要在 REPL 里粘贴一大段代码,千万别一行行手输。MicroPython 提供了一个粘贴模式:按Ctrl+E进入粘贴模式,粘贴代码后按Ctrl+D执行。这个模式下,解释器不会逐行解释代码,而是把所有内容当作一个整体执行。这对于粘贴缩进敏感的多行代码(比如一个完整的舵机控制类)特别重要。因为直接往 REPL 里粘贴多行代码时,缩进很容易被终端工具吃掉或改变,导致莫名其妙的IndentationError。
我当时调试舵机的时候就因为这个问题折腾了很久。代码在 Thonny 里能跑,粘到 PUTTY 里就报错,一度以为是 Putty 的问题。后来才反应过来,应该用 Ctrl+E 进入粘贴模式。这个经验在这里先记下,后面还会涉及。
明白了 REPl 的这些基础特性,我们才能在主流的终端工具之间做出有依据的选型判断。接下来,我从三个工具挨个说起。
3. mpremote:为 MicroPython 而生的命令行瑞士军刀
mpremote 是 MicroPython 官方团队开发的命令行工具,本质是一个 Python 包。它的底层原理是直接通过 pyusb 或串口驱动与 Pico 上的 MicroPython 固件通信,而不是简单地打开一个串口终端。
先说安装,这是所有工具里最简单的:
pip install mpremote装好之后,把 Pico 插上电脑,在命令行直接输入:
mpremote看到Connected to MicroPython at /dev/ttyACM0之类的提示,接着就进入了 REPL。Windows 下可能显示为 COM 口,没关系,mpremote 会自动探测。
3.1 mpremote 的杀手锏:不用记端口号
用过串口工具的人都有过这种经历:今天插上电脑是 COM3,明天拔了重插变成 COM5,你要去设备管理器里一个个试。mpremote 不需要你记端口号,它自己找设备。如果你电脑上同时插了多块板子,可以用mpremote connect list查看所有可用设备,然后用mpremote connect COMx指定连接某一个。
这个功能在什么场景下最有用?我有一次同时插着 Pico 和 ESP32,要分别查看两者的 REPL 状态。如果用 Putty,你需要提前在设备管理器里搞清楚哪个 COM 口对应哪块板子,任务管理器里看设备 COM 号,还得根据 USB 端口位置猜测谁是谁。而 mpremote 里执行一下mpremote connect list,输出里会直接标好每个设备的信息,一目了然。
3.2 文件传输能力:把 Pico 当U盘,但更优雅
这是 mpremote 区别于 Putty 和 MobaXterm 的最大优势——它不只是终端,还能直接操作 Pico 的文件系统。Pico 在 MicroPython 模式下虽然会虚拟出一个磁盘,但有个毛病:如果你在电脑上往这个磁盘拖文件(比如把main.py拖进去),必须在复制完成后安全弹出,然后重新插拔,程序才能生效。这个过程多了很烦。
mpremote 处理这类繁琐的操作就很得心应手。常用的命令:
# 复制本机文件到 Pico mpremote cp main.py : # 从 Pico 复制文件到本机 mpremote cp :main.py ./ # 运行指定脚本(连接 -> 执行 -> 断开) mpremote run test.py # 重置 Pico mpremote reset注意第一行命令,mpremote cp main.py :最后的冒号表示 Pico 的根目录,这个语法不熟悉的人很容易漏。我第一次用的时候就漏了冒号,结果命令直接报错,还以为是驱动坏了。
mpremote run这个命令特别适合反复调试单个脚本的场景。比如你在电脑上写好了一个servo_test.py,想看看在 Pico 上运行的效果,不需要手动打开 REPL、复制粘贴代码、手动复位。直接:
mpremote run servo_test.py它会自动连接 Pico、执行脚本、然后把print输出打印到终端。执行完成后 Pico 自动回到 REPL 状态。这个体验比任何图形界面工具都顺畅。
3.3 mpremote 的不足之处
没有工具是完美的。mpremote 的问题在于,它是一个命令行工具,没有保存会话的功能。你关掉终端窗口,之前的连接记录不会保留,下次要重新输入命令。还有就是,如果你需要一边看 REPL 输出,一边记录日志,mpremote 默认做不到。虽然可以通过终端重定向把输出保存到文件,但操作远不如图形工具直观。
另外 mpremote 在 Windows 下偶尔会碰到驱动识别问题。如果你装上之后提示找不到设备,先去设备管理器看看有没有一个带黄色感叹号的"USB Serial Device"。如果有,右键更新驱动,选择"自动搜索驱动程序",系统一般能从 Windows Update 拉取到正确的 CDC 驱动。
补齐了 mpremote 的短板信息,我们再看 Putty——它是大部分人的串口终端启蒙工具,也是最容易让人误会的工具。
4. Putty:小且稳,但每一次连接都是一次裸奔
Putty 是使用 Tess 的经典 SSH 终端工具,很多人的第一印象是一个纯粹的 SSH 客户端,而忘记了它的串口连接功能。打开 Putty,默认界面第一行就是"Connection type",选 Serial 就能用串口模式连接。
4.1 Putty 的正确打开方式
在 Putty 里连接 Pico 需要以下几个步骤:
- 打开 Putty,在 Session 页面选择 Connection type 为 Serial
- 在 Serial line 输入框填上 COM 号(比如 COM3)
- 在 Speed 输入框填 115200
- 点 Open
看起来就4步,但有个非常重要的隐藏设置:在左侧 Category 树里打开 Terminal -> Keyboard,把 "The Backspace key" 设为 Control-H。如果不改这个,你在 REPL 里输错命令想删除字母时,会出现^H这种乱码,或者干脆删不掉。设置方式是:
左侧 Session 是默认打开的界面,先选 Connection type 里的 Serial,再在左侧点 Terminal -> Keyboard,勾选 Control-H,最后回到 Session 填 COM 口和波特率。顺序无所谓,但要记得改过来。
还有一个坑是流控。Connection type 选 Serial 后,不要勾选任何流控选项(Flow control 保持 None)。很多人装了最新版的 Putty 连上后只能看到输出、不能输入,就是因为不小心把流控设成了 RTS/CTS。
Putty 的优点也在这里:一旦设置好,它非常稳定。串口通信不像 SSH 那样有断线重连机制,把 USB 线重新插拔一次或重新上电几十次,Putty 保持良好运行——只要串口不被其他程序占用。我的一个测试里,连续开着 Putty 的 REPL 会话超过 8 小时,期间反复复位 Pico 多次,Putty 从未崩溃。
缺点是,你每次想连 Pico 都要完整走一遍上述四步配置,因为 Putty 的会话管理虽然存在,但为了省事很多人并不会特意保存一个名为 "Pico Console" 的 Serial 会话。界面是英文的,也可能让一些新手困惑。另外,Putty 默认没有日志图形化设置的习惯,保存日志要手动在 Session -> Logging 里配置,路径和文件名规则也要自己写模板,属实有些繁琐。
4.2 Putty 的日志设置
如果你确实需要用 Putty 记录 REPL 输出(比如记录传感器返回的数据),在打开连接之前,左侧 Category 树 -> Session -> Logging:
- 选择 "All session output"(所有会话输出)
- Log file name 填一个路径,比如
C:\logs\pico-&Y-&M-&D_&H-&M-&S.log,Putty 支持时间通配符,自动生成带时间戳的日志文件 - 勾选 "Flush log file frequently" 选项,确保数据实时写入磁盘而不是等缓冲区满了才写
这个功能可以实现,但坦白讲,日志查看体验不如 MobaXterm 直观。这也引出了第三个对比对象。
5. MobaXterm:一揽子方案,但别把它当专用嵌入式工具
MobaXterm 在热词里的搜索量明显高于另外两个工具,说明它确实是在持续增长的流行工具。它是 Windows 上集成了 SSH、串口、SFTP、X server 等多功能于一身的终端工具,相当于把你的电脑变成一个"调试万金油"。但也正因为它的全能,用在 Pico REPL 上时,需要一些定制设置,否则会有"用力过猛"的别扭感。
5.1 MobaXterm 连接 Pico 的步骤和隐藏坑
打开 MobaXterm 后,左上角 Session 图标 -> Serial -> 选择 COM 口 -> 波特率填 115200 -> 确定即可。这是表面步骤,但我实际用下来,有两个问题需要提前处理掉,否则体验非常差。
第一个坑:连接慢。我印象中 MobaXterm 打开串口会话时明显比其他工具慢半拍,大概有 1~2 秒的延迟。搜索热词里也出现了 "mobaxterm串口连接慢",说明不是我一个人遇到。原因我分析是 MobaXterm 在串口连接前会做一堆初始化动作,比如检测端口可用性、加载配置等。对于 Pico 这种上电即用的小板子来说,这个延迟可以忍,但如果你习惯了 mpremote 那种"秒开",会觉得有点拖沓。
第二个坑:主密码(Master Password)提示。新版 MobaXterm 在启动时会问你要不要设置主密码,很多人手滑设了,然后每次打开软件都要输密码。这个功能主要是保护本地保存的 SSH 密码等敏感信息,但如果你只是连 Pico 的串口,不涉及任何密码,设置主密码纯粹是给自己添堵。解决办法是在 Settings -> General -> Security 里找到主密码相关选项清掉,或者关闭启动时询问。
第三个坑:终端类型对 REPL 显示的影响。MobaXterm 默认的终端类型有时候会让 MicroPython REPL 的颜色显示不正常。在 Settings -> Terminal 里,把 terminal type 改成xterm-256color或者dumb都能解决。dumb模式最直接,把所有ANSI颜色转义都禁用掉,输出纯文本,适合调试时不想被颜色干扰的情况。
小技巧:MobaXterm 设置中文界面的需求很大,但说实话,对我个人来说,中文界面和工作效率没有太大关系,反而是英文术语不容易产生歧义。如果你要设置中文,在 Settings -> General -> Language 里选择 Chinese(中文),重启软件就生效了,风险很小。
5.2 MobaXterm 的优势:日志、已存会话与文件传输
排除掉上述问题后,MobaXterm 对 Pico 调试最实用的其实是两块功能:
日志系统开箱即用。用 Putty 需要提前配置日志路径和命名规则,用 MobaXterm 只需要在终端界面里右键 -> 查看日志,或者直接在上方工具栏点一下"日志"按钮,它就开始实时记录所有屏幕输出,文件默认存在用户的MobaXterm\slivelog\目录下。这个功能在记录 Pico 上传感器的长时输出时特别好用。我在调试 PWM 控制舵机时,需要观察不同占空比下舵机的角度回传数据,就开着 MobaXterm 日志记录一整天,数据一条不丢。
会话保存能力非常清晰。主界面左侧会列出所有保存的会话,你可以把一个名为"Pico REPL"的串口会话永久钉在那里,下次双击就连。如果同时玩多块板子,Pico、ESP32、STM32 各存一个会话,比每次输端口号好太多。
文件传输与 SFTP 的配合。虽然 Pico 在 USB 模式下本身是一个大容量存储设备,但 MobaXterm 的左侧文件树可以直接浏览本机文件,配合 Session 的 SFTP 功能,拖拽文件很方便。当然这里要注意,Pico 的虚拟 U 盘不需要 SFTP 支持,直接按 Ctrl+C / Ctrl+V 到资源管理器里复制。如果你非要通过 MobaXterm 的 SFTP 面板传文件到 Pico,可能会发现 Pico 不在 SFTP 设备列表里——这是正常的,因为 Pico 并没有实现 SSH 服务器。你用 SFTP 只能连局域网里的树莓派,传完再去同步给 Pico,多绕一层。
5.3 MobaXterm 会话数限制的问题
MobaXterm 免费版对保存的会话数量有限制,有用户说"只能保存15个会话"到超过这个数就会提示要购买付费版。实际上这个限制不是 15 个固定值,不同版本的阈值略有不同,但对于只玩 Pico 的人来说,15 个绰绰有余。如果你确实需要保存大量会话,可以去官网下载 MobaXterm Home Edition,再到设置里把版本升级到 Professional,不需要额外付费的破解,只是从功能完备性上做取舍。
把三种工具的界面层差异都摸清楚之后,我真正想说的是选型的底层逻辑——连 REPL 只是小事,后面的调试场景才决定哪个算"省心"。
6. 舵机控制实测:哪种工具在真实场景下省心?
热身聊了这么多,下面来测试真实场景:给 Pico 接一个 SG90 舵机,用三种工具分别调试,测试内容(参考搜索热词"树莓派pico控制舵机"):
- Pico 的 GPIO 引脚输出 PWM 信号控制舵机
- PWM 频率设为 50Hz(20ms 周期)
- 占空比范围对应舵机角度(0°到180°通常对应 2.5% 到 12.5% 的占空比)
- 需要让舵机以固定节奏左右摆动
6.1 舵机接线与测试代码
SG90 舵机有三根线:
- 棕色:GND,接 Pico 的 GND
- 红色:VCC(5V),接 Pico 的 VSYS 或外部电源正极(注意舵机瞬时电流可能超过 USB 供电极限,我这里只是小角度试验,所以直接用 VSYS,如果你的舵机功率较大,务必外接电源共地,否则 Pico 会掉电重启,相信我试过一次)
- 橙色:信号线,接 GPIO15
代码我用的是:
from machine import Pin, PWM import time servo = PWM(Pin(15), freq=50) def set_angle(angle): # 将0~180度映射为2.5%~12.5%的占空比 duty_16 = int((angle / 180 * 10 + 2.5) / 100 * 65535) servo.duty_u16(duty_16) while True: set_angle(0) time.sleep(1) set_angle(90) time.sleep(1) set_angle(180) time.sleep(1)代码本身不复杂,但问题出现在"我要让代码在 Pico 上运行"这个动作上。MicroPython 在 Pico 上的执行模式有三种:
- 直接把文件存成
main.py,上电自动跑 - 把文件存成其他名字,手动运行
- 在 REPL 里一行行敲
6.2 三种工具的实测流程对比
mpremote 的流程最舒服。写完代码保存为servo_test.py后:
mpremote cp servo_test.py :main.py mpremote reset然后舵机自己就开始摆了,整个过程不用打开任何图形界面,在编辑器旁边开个命令行就能完成。如果你要改参数,重新改servo_test.py,再执行一次上面两条命令即可。缺点是你看不到串口输出,如果代码里有print语句就白打了。
于是需要组合使用。先用mpremote run servo_test.py查看输出,再把改好的版本固化到main.py。这是我目前觉得最顺手的流程。
Putty 的流程:打开 Putty 连接 REPL,用 Ctrl+E 进入粘贴模式,把代码粘贴进去,按 Ctrl+D 执行。然后在 REPL 里观察输出。如果代码需要停止,按 Ctrl+C 中断。这个流程适合"试一下就走"的场景,但如果你改了几次代码,每改一次都要重复"打开 Putty -> 粘贴 -> 执行 -> 关闭",重复性操作很烦人。另一个操作是文件管理:你可以直接把写好的main.py拖到 Pico 的 U 盘里,然后给 Pico 断电重插或按复位键,设备会重新运行,但这样每改一次文件都要重新插拔,想改回来还不够直接。
MobaXterm 的流程和 Putty 类似,但因为界面更友好,它的粘贴体验更好。它有右键直接粘贴的选项(Putty 默认是鼠标选中即复制、右键即粘贴),对于粘贴比较长的多行代码来说,出错的概率更低。
6.3 实测中的翻车场景
我实际踩了一个坑。用 Putty 往 REPL 里粘代码时,舵机突然不动了,也不报错。我以为是舵机烧了,用万用表一量,电压正常。然后重启 Pico,舵机又动了一下,接着又停了。
排查过程是这样的:
- 用 mpremote 连上看 Pico 的状态,发现 REPL 里有个报错提示,显示
MemoryError。原来是我的 PWM 初始化有多处(因为之前已经跑过一次),代码里重复初始化导致内存累积不足。 - 用 Ctrl+C 中断后,执行
gc.collect()清一下内存碎片。 - 用
mpremote soft-reset(Ctrl+D 软复位)让 MicroPython 重新启动。 - 重新跑代码,舵机正常。
这个场景里 mpremote 明显更省心,因为你能清晰地看到报错信息、复位指令和文件状态。如果用 Putty 或 MobaXterm 遇到这个问题,你得手动重启 Pico 断电,或者按板子的复位键,在 REPL 里执行import machine; machine.reset()也可以,但没有 mpremote 直接打一行命令来得快。
6.4 Pico 的复位方式对比
关于复位,这里也值得一笔。Pico 有三种复位方式:
| 方式 | 操作 | 适用场景 |
|---|---|---|
| 断电重启 | 拔 USB 或按板上 RESET 按钮(如果有) | 彻底关闭所有外设连接,适合排除硬件状态残留 |
| 软复位 | REPL 中按 Ctrl+D,或执行import sys; sys.exit() | 会重新运行boot.py和main.py,但不重启 USB 连接 |
| 机器复位 | REPL 中执行import machine; machine.reset() | 相当于软复位,但通过固件内部触发 |
用 mpremote 执行mpremote reset相当于硬复位(具体实现取决于版本,多数是触发 machine.bootloader 或类似机制),但它比手动断电方便得多,特别是在代码跑飞、REPL 失去响应的时候。我发现很多时候按 Ctrl+C 无法中断任务,按 Ctrl+D 也没反应,这时候 mpremote 的硬复位是最后的手段。
在用 Putty 的时候,遇到同样的情况就只能拔线重插了,所以手边备一个按键短接 reset 也很有用。
用表格做了一张全备的工具对比摘要,这样好对号入座:
| 对比项 | mpremote | Putty | MobaXterm |
|---|---|---|---|
| 安装难度 | pip install | 下载 exe | 下载 exe 或便携版 |
| 端口号识别 | 自动探测 | 手动填 COM | 下拉选 COM |
| REPL 体验 | 好 | 好(改键后) | 一般(略有延迟) |
| 文件传输 | 命令行 cp,灵活 | 需要配合 USB 拖拽 | SFTP,但 Pico 不支持,也得配合 USB 拖拽 |
| 日志记录 | 不支持 | 支持(需配置) | 支持(开箱即用) |
| 会话保存 | 不支持 | 支持 | 支持(更直观,但免费版有数量限制) |
| 多板管理 | 支持 connect list | 手动管理 COM | 会话列表管理 |
| 崩溃对策 | 无多余依赖 | 稳定 | 稳定 |
| 适合人群 | 命令行重度用户、脚本控 | 极简偏好者 | 需要图形界面+日志+会话管理的综合用户 |
7. 选型结论和意外发现的玩法:mpremote 还能这么用
如果你问我最终会留下哪个工具作为主力,我可以诚实地说:mpremote 和 MobaXterm 我都在用,它们在我的流程里各司其职。
日常开发调试时,我打开 VS Code 终端,直接敲 mpremote 命令,复制代码、看输出、复位板子一条龙,不需要离开键盘。当需要长时间记录传感器数据,或者要对多块板子的状态做对比时,我打开 MobaXterm,把不同的会话排在一起,左边 Pico 的 REPL 输出、右边的日志文件实时滚动,看起来非常直观。
Putty 则更像是备胎角色,它不占资源,双击秒开。如果只是为了快速验证一个 LED 能不能亮,按下 Win+R 输入 putty 就能秒连。但让我长期用它去写 REPL 代码,明显感到力不从心。
7.1 mpremote 的一个进阶技巧
用 mpremote 时不需要每次手动输入多行命令,可以使用它的-c参数直接在命令行里执行一段 Python 代码再退出。比如:
mpremote -c "import os; print(os.listdir('/'))"这条命令会在连接 Pico 后立即列出根目录下的文件列表,然后退出。虽然配合run命令加上 shell alias,但已经足够强大。
更常用的是把文件复制进 Pico 并重置的组合命令:
mpremote cp main.py :main.py && mpremote reset如果你想让它跑完自动断开:
mpremote run main.py ; mpremote disconnect7.2 使用时间久了的一些体会
回头来看,这次工具对比试验最大的感悟是:工具链的选择不是越强大越好,而是要在"上手效率"和"长期维护"之间找到平衡。Pico 不是一块高性能核心板,它最吸引人的地方是"快速验证嵌入式想法"。如果为了连一个 REPL 还要花几十秒去打开一个巨型软件,那股"随手玩一玩"的劲头就被消耗完了。这也是为什么我把 mpremote 列为头号推荐——它离"命令行里的 MicroPython"最近,几乎就是 REPL 的官方最佳搭档。
如果你对命令行比较疏远,在 Windows 上用得较多,用 MobaXterm 也是好选择,只是记得把主密码提醒关掉、把终端类型设好。而 Putty 在这个场景下,更多是解决"没有其他工具时我还能用什么"的问题——它能稳定完成任务,但不负责让你用得开心。
最后分享一个我在日志记录上的习惯:任何时候开始调舵机或电机这类带运动的硬件,我都会提前打开日志工具,哪怕是 mpremote 的终端输出重定向到本地文件也行。因为硬件问题有时候是偶发性的,等出错再想回溯就晚了,记下全过程再翻日志,往往能找到真正的元凶。这是这次 Pico 折腾中最大的收获之一,也希望对你有所启发。