VSCode Arduino cli 开发ESP32

本文是《Arduino cli 写hello world》

https://blog.csdn.net/lxyoucan/article/details/168245931

的后续。

原本我使用的Arduino IDE 进行开发,总体开发体验还是不错的。对我来说不太习惯的地方如下:

  1. 文件管理,默认是以标签页面的形式。不是文件树的形式。 文件切换感觉比较麻烦。
  2. 在hyperland有点兼容性问题,鼠标点菜单经常点不上,菜单就自动消失了。
  3. 写代码时语法检查与智能提示不灵敏。

VSCode 安装插件

安装 clangd

配置 clangd 代码补全

这是 VSCode 开发 Arduino 项目时,比较容易遇到问题的地方。

因为 Arduino 的头文件往往存放在用户目录下,例如:

bash 复制代码
~/.arduino15/packages/esp32/hardware/esp32/

如果没有配置好代码补全工具,VSCode 可能会提示:

bash 复制代码
Arduino.h: file not found

即使 Arduino CLI 能正常编译。

我推荐安装 VSCode 的 clangd 扩展,并让 Arduino CLI 自动生成编译数据库。

先执行:

bash 复制代码
arduino-cli compile \
  --build-path ./build \
  --only-compilation-database \
  .

Arduino CLI 支持生成 compile_commands.json,其中记录了编译器参数、头文件搜索路径等信息。

这样就可以让代码补全正常了。

sketch.yaml

项目根目录中增加sketch.yaml

yaml 复制代码
default_fqbn: esp32:esp32:esp32c3:CDCOnBoot=cdc
default_port: /dev/ttyACM0
default_port_config:
  baudrate: 115200

之后就能这样操作:

bash 复制代码
# 编译
arduino-cli compile .

# 编译并上传
arduino-cli compile --upload .

# 查看串口输出
arduino-cli monitor

至此就可以开心的用VSCode做开发啦,真舒服。

配置 VSCode 快捷任务

这是比较关键的一步。

在项目中创建 .vscode/tasks.json:

.vscode/tasks.json

复制代码
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Arduino: 编译",
      "type": "shell",
      "command": "arduino-cli",
      "args": [
        "compile",
        "--build-path",
        "${workspaceFolder}/build",
        "${workspaceFolder}" 
      ],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "problemMatcher": []
    },
    {
      "label": "Arduino: 烧录",
      "type": "shell",
      "command": "arduino-cli",
      "args": [
        "upload",
        "--input-dir",
        "${workspaceFolder}/build",
        "${workspaceFolder}"
      ],
      "dependsOn": ["Arduino: 编译"],
      "problemMatcher": []
    },
    {
      "label": "Arduino: 串口监视",
      "type": "shell",
      "command": "arduino-cli",
      "args": [
        "monitor",
        "-p",
        "/dev/ttyACM0",
        "--config",
        "baudrate=115200"
      ],
      "isBackground": true,
      "problemMatcher": []
    }
  ]
}

配置好之后,在 VSCode 中:

操作 使用方式
编译 Ctrl + Shift + B
烧录 Ctrl + Shift + P → Tasks: Run Task → Arduino: 烧录
串口监视 Tasks: Run Task → Arduino: 串口监视

烧录任务会先编译,再上传,不容易出现上传旧固件的问题。

需要注意,串口监视任务会持续占用串口。再次烧录前,可能需要先停止它。

如果你报错arduino-cli 命令找不到的话,

,可以将 arduino-cli 放到:

bash 复制代码
/usr/local/bin/arduino-cli
相关推荐
话梅姐姐呀3 小时前
IOT -- 设备入网与注册
大数据·网络·人工智能·物联网·iot
J_bean5 小时前
Mac(Intel 芯片)ESP32 USB 串口驱动安装教程
esp32·iot·usb 串口驱动
星野云联AIoT技术洞察1 天前
ESP32-P4 摄像头到屏幕的数据链路:CSI、ISP、PPA、缓冲与 DSI 如何协同
esp32·esp-idf·esp32-p4·摄像头集成·芯片集成·乐鑫芯片
voipmaker1 天前
融合通信调度录音的困局:基于 MediaX 网关实现对讲语音 AI 事件萃取
人工智能·ai·音视频·语音识别·实时音视频·信息与通信·iot
调试优选官2 天前
2026年IoT物联网开发赛道年度榜单深度解析:D-coding物联网系统定制与源码交付能力专项解读
java·物联网·struts·iot·开发经验
星野云联AIoT技术洞察3 天前
ESP32-P4 没有 Wi-Fi,产品该怎么联网:C6 协处理器、总线与双固件边界
esp32·esp32-s3·esp32-p4·芯片选型·esp-hosted·设备联网
ITKEY_3 天前
Arduino IDE开发ESP32环境搭建到helloworld
ide·esp32
金瑞铭4 天前
让工具可识别、可追踪、可追溯:金瑞铭 RFID 工具管理方案
物联网·制造·rfid·iot·全生命周期管理
夏虫不可与之言冰4 天前
使用Flash Download Tool给ESP32烧录固件
c语言·c++·windows·单片机·物联网·iot