树莓派Pico调试工具横评:mpremote、Putty与MobaXterm怎么选?

发布时间:2026/9/9 11:20:38
树莓派Pico调试工具横评:mpremote、Putty与MobaXterm怎么选? 1. 一次真实的连接现场同一块 Pico三种工具的初始体验手里这块树莓派 Pico 已经吃灰了小半年。前几天重新翻出来给它刷了个 MicroPython 固件准备接一个舵机做个小玩意。结果没高兴几分钟第一个问题就卡住了我到底用哪个工具连上去写代码mpremotePutty还是 MobaXterm这个问题听起来很基础但真到了动手的时候细节远比想象中多。我先说结论如果你连 Pico 只是为了输入几行 Python 命令、看硬件反馈、加载固件mpremote 最省心如果你要连着板子长时间调试还要保存操作日志MobaXterm 更合适Putty 则适合那些对纯净和极简有执念的老派玩家。但这句话背后的理由以及每个工具的坑我建议你完整看完这篇文章再下结论。为了写这篇对比我把三种工具在同一块 Pico 上全部跑了一遍。环境如下硬件树莓派 PicoRP2040 芯片固件MicroPython v1.23.0操作系统Windows 11连接方式USB 数据线直连注意是数据线不是充电线需要实现的目标进入 REPL执行点亮板载 LED 的代码再用舵机控制验证真实场景先说个小背景。Pico 上电后如果刷了 MicroPython 固件系统会在 USB 上虚拟出一个串口设备。Windows 下一般显示为COMx比如 COM3、COM7Linux 下则是/dev/ttyACM0。它本身不依赖任何专用软件任何能打开串口的终端工具理论上都能连。但能连和连得舒服完全是两码事。我用实际的对比说话下面的内容是我在这几种工具之间反复切换后总结出来的真实感受不是看文档抄出来的。文章后面还会穿插我调试舵机时遇到的一个非常典型的问题——这个问题正好能把三个工具各自的特性暴露得非常清楚。2. 为什么连接 REPL 没你想的那么简单串口背后的几件事很多人第一次用 Pico 都会有一个疑问这不就是一个 USB 串口吗为什么我用某软件打开之后一片空白按回车也没反应这其实是 MicroPython REPL 的一个特性。REPLRead-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解释器就静静等着。你打开终端软件时的默认状态是只接收不发送所以屏幕空着是正常的敲一个回车立刻就能看到提示符。另外还有个 CtrlC 的妙用。如果你的 Pico 里烧录了一个死循环程序比如控制舵机的代码写错了导致while True无限循环上电后程序一直跑你连上 REPL 可能什么都输入不了。这时候按CtrlC可以中断正在运行的程序强制回到 REPL 提示符。这招我后面调舵机时用到了不止一次。2.2 CtrlE 粘贴模式大段代码的传送门如果你要在 REPL 里粘贴一大段代码千万别一行行手输。MicroPython 提供了一个粘贴模式按CtrlE进入粘贴模式粘贴代码后按CtrlD执行。这个模式下解释器不会逐行解释代码而是把所有内容当作一个整体执行。这对于粘贴缩进敏感的多行代码比如一个完整的舵机控制类特别重要。因为直接往 REPL 里粘贴多行代码时缩进很容易被终端工具吃掉或改变导致莫名其妙的IndentationError。我当时调试舵机的时候就因为这个问题折腾了很久。代码在 Thonny 里能跑粘到 PUTTY 里就报错一度以为是 Putty 的问题。后来才反应过来应该用 CtrlE 进入粘贴模式。这个经验在这里先记下后面还会涉及。明白了 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.logPutty 支持时间通配符自动生成带时间戳的日志文件勾选 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 支持直接按 CtrlC / CtrlV 到资源管理器里复制。如果你非要通过 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 频率设为 50Hz20ms 周期占空比范围对应舵机角度0°到180°通常对应 2.5% 到 12.5% 的占空比需要让舵机以固定节奏左右摆动6.1 舵机接线与测试代码SG90 舵机有三根线棕色GND接 Pico 的 GND红色VCC5V接 Pico 的 VSYS 或外部电源正极注意舵机瞬时电流可能超过 USB 供电极限我这里只是小角度试验所以直接用 VSYS如果你的舵机功率较大务必外接电源共地否则 Pico 会掉电重启相信我试过一次橙色信号线接 GPIO15代码我用的是from machine import Pin, PWM import time servo PWM(Pin(15), freq50) 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用 CtrlE 进入粘贴模式把代码粘贴进去按 CtrlD 执行。然后在 REPL 里观察输出。如果代码需要停止按 CtrlC 中断。这个流程适合试一下就走的场景但如果你改了几次代码每改一次都要重复打开 Putty - 粘贴 - 执行 - 关闭重复性操作很烦人。另一个操作是文件管理你可以直接把写好的main.py拖到 Pico 的 U 盘里然后给 Pico 断电重插或按复位键设备会重新运行但这样每改一次文件都要重新插拔想改回来还不够直接。MobaXterm 的流程和 Putty 类似但因为界面更友好它的粘贴体验更好。它有右键直接粘贴的选项Putty 默认是鼠标选中即复制、右键即粘贴对于粘贴比较长的多行代码来说出错的概率更低。6.3 实测中的翻车场景我实际踩了一个坑。用 Putty 往 REPL 里粘代码时舵机突然不动了也不报错。我以为是舵机烧了用万用表一量电压正常。然后重启 Pico舵机又动了一下接着又停了。排查过程是这样的用 mpremote 连上看 Pico 的状态发现 REPL 里有个报错提示显示MemoryError。原来是我的 PWM 初始化有多处因为之前已经跑过一次代码里重复初始化导致内存累积不足。用 CtrlC 中断后执行gc.collect()清一下内存碎片。用mpremote soft-resetCtrlD 软复位让 MicroPython 重新启动。重新跑代码舵机正常。这个场景里 mpremote 明显更省心因为你能清晰地看到报错信息、复位指令和文件状态。如果用 Putty 或 MobaXterm 遇到这个问题你得手动重启 Pico 断电或者按板子的复位键在 REPL 里执行import machine; machine.reset()也可以但没有 mpremote 直接打一行命令来得快。6.4 Pico 的复位方式对比关于复位这里也值得一笔。Pico 有三种复位方式方式操作适用场景断电重启拔 USB 或按板上 RESET 按钮如果有彻底关闭所有外设连接适合排除硬件状态残留软复位REPL 中按 CtrlD或执行import sys; sys.exit()会重新运行boot.py和main.py但不重启 USB 连接机器复位REPL 中执行import machine; machine.reset()相当于软复位但通过固件内部触发用 mpremote 执行mpremote reset相当于硬复位具体实现取决于版本多数是触发 machine.bootloader 或类似机制但它比手动断电方便得多特别是在代码跑飞、REPL 失去响应的时候。我发现很多时候按 CtrlC 无法中断任务按 CtrlD 也没反应这时候 mpremote 的硬复位是最后的手段。在用 Putty 的时候遇到同样的情况就只能拔线重插了所以手边备一个按键短接 reset 也很有用。用表格做了一张全备的工具对比摘要这样好对号入座对比项mpremotePuttyMobaXterm安装难度pip install下载 exe下载 exe 或便携版端口号识别自动探测手动填 COM下拉选 COMREPL 体验好好改键后一般略有延迟文件传输命令行 cp灵活需要配合 USB 拖拽SFTP但 Pico 不支持也得配合 USB 拖拽日志记录不支持支持需配置支持开箱即用会话保存不支持支持支持更直观但免费版有数量限制多板管理支持 connect list手动管理 COM会话列表管理崩溃对策无多余依赖稳定稳定适合人群命令行重度用户、脚本控极简偏好者需要图形界面日志会话管理的综合用户7. 选型结论和意外发现的玩法mpremote 还能这么用如果你问我最终会留下哪个工具作为主力我可以诚实地说mpremote 和 MobaXterm 我都在用它们在我的流程里各司其职。日常开发调试时我打开 VS Code 终端直接敲 mpremote 命令复制代码、看输出、复位板子一条龙不需要离开键盘。当需要长时间记录传感器数据或者要对多块板子的状态做对比时我打开 MobaXterm把不同的会话排在一起左边 Pico 的 REPL 输出、右边的日志文件实时滚动看起来非常直观。Putty 则更像是备胎角色它不占资源双击秒开。如果只是为了快速验证一个 LED 能不能亮按下 WinR 输入 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 折腾中最大的收获之一也希望对你有所启发。