arduino串口监视器乱码主因是波特率不匹配,其次为行结束符设置错误、usb驱动异常、供电不稳或端口被占;vscode插件监视器不可靠,推荐用arduino-cli monitor命令行工具并统一设为9600波特率。

VSCode 里 Arduino 的串口监视器基本不能信,尤其 macOS 和 Linux 下默认点“插头图标”十有八九连不上或乱码——这不是你代码的问题,是插件底层调用方式和环境隔离导致的。
arduino-cli monitor 是唯一靠谱的串口监视方式
VSCode 的 Arduino 插件自带串口监视器(状态栏插头图标)在烧录完成后会主动断开串口连接,导致你点开时设备已离线;它也不读取 Serial.begin() 的波特率,全靠手动选,且不校验一致性。
- 必须用终端跑
arduino-cli monitor:Linux/macOS 执行arduino-cli monitor -p /dev/ttyUSB0 -b 9600,Windows 执行arduino-cli monitor -p COM3 -b 9600 - 端口号必须和上传时一致,别信 VSCode 状态栏右下角显示的“已选端口”——拔插后它不会自动刷新,得手动运行
Arduino: Select Serial Port重选一次 - 如果
arduino-cli monitor报错port not found,先在终端执行ls /dev/tty.*(macOS/Linux)或mode(Windows)确认设备是否被系统识别
CH340 芯片在 macOS 14+ 上高波特率必丢数据
很多国产开发板(如 Nano clone、D1 Mini)用 CH340 转串口芯片,在 macOS Sequoia(14+)上跑 115200 波特率时,Serial.print() 输出常缺字、断行、乱码,不是驱动没装,是内核级兼容问题。
- 实测稳定上限是
19200,保守起见统一设为9600:改代码里的Serial.begin(9600),同时arduino-cli monitor命令也用-b 9600 - CP2102、FTDI 芯片不受此限,但如果你不确定芯片型号,先降速再排查
- 不要试图用
stty或第三方串口工具绕过 ——arduino-cli monitor内部做了缓冲和换行处理,其他工具容易漏掉首帧或阻塞
VSCode 启动方式决定 arduino-cli 能不能被找到
macOS 和 Linux 下,从桌面图标启动 VSCode 时,它根本不会加载你的 .zshrc 或 .bashrc,所以即使 arduino-cli 已加入 PATH,插件仍报 Arduino CLI not found。
- macOS:必须在终端运行
code --new-window启动 VSCode,才能继承 shell 环境变量 - Linux:查路径用
which arduino-cli,然后在 VSCode 设置里搜arduino.path,填绝对路径,例如/home/xxx/bin/arduino-cli - Windows:安装 Arduino IDE 时务必勾选
Add arduino-cli to system PATH,否则手动加环境变量容易因反斜杠或大小写失效
最易被忽略的一点:VSCode 的 Arduino 插件和 PlatformIO 是两套完全独立的机制,混用会导致串口冲突、库路径错乱、甚至烧录失败。选一个就到底,别在同一个工作区里既装官方 Arduino 插件又装 PlatformIO。











