☰
【Esp32S3 | Arduino】Ubuntu 下 vscode + arduino-cli 开发环境配置:TaoToken 统一 Key 接入与 settings.json 骨架
2026/9/25 11:11:12 网站建设 项目流程

1. 为什么在 Ubuntu 上折腾 Esp32S3 的 Arduino 环境

如果你手上有一块 Esp32S3 开发板,想在 Ubuntu 桌面上写 Arduino 风格的代码,大概率会经历这样一个过程:先装 Arduino IDE,用着用着发现多文件管理很别扭,代码提示时有时无,窗口一多就乱。于是转向 vscode,结果发现 vscode 本身不认识.ino,串口也找不到,编译报一堆头文件缺失。这套链路的核心其实是 arduino-cli,vscode 只是套在外面的一层壳,把编译、上传、串口监视这些动作图形化了。

这篇内容面向的是在 Ubuntu 桌面从零搭建 Esp32S3 Arduino 开发链路的同学,包括 vscode 装 Arduino 扩展、arduino-cli 安装 esp32 核心与库、串口权限处理、编译上传验证,最后给出一份可复制的 settings.json 与 arduino-cli 配置骨架。同时我会把 TaoToken 统一 Key 接入 AI 辅助编码的验证动作也串进来,让你在写代码卡壳时能直接调模型对话,而不是切来切去。整条链路跑通后,你得到的是一个能编译、能上传、有语法提示、还能顺手问 AI 的工作区。

需要提前说明的是,Esp32S3 的核心包体积不小,第一次安装会下载几百 MB,网络环境正常的话耐心等就行。串口权限是 Ubuntu 上最容易卡住新手的点,后面会单独讲。TaoToken 在这里的角色是给 AI 辅助编码提供一个统一的 Key 和 API 通道,官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api ,不带多余参数。

2. TaoToken 前置:统一 Key 与 API 通道准备

在开始配 arduino-cli 之前,先把 AI 辅助这条线准备好,这样后面写代码遇到报错可以直接问。TaoToken 的作用是提供一个统一的 Key,让你通过一个 API 通道访问模型对话能力,不用每个模型单独申请。你需要做的是拿到 Key,并确认 API 地址。

打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,注册登录后进入控制台。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,在里面找到 API Keys 页面,路径是 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。新建一个 Key,复制出来保存好,这个 Key 就是后面所有 AI 调用的凭证。

API 的基础地址是 https://taotoken.net/api ,注意这个地址不带 UTM 参数,直接写进配置即可。如果你只是想先验证模型能不能通,可以用模型对话页面 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 发一条消息试试。如果你打算长期用 AI 辅助编码,甚至跑 Agent 类的工具,可以看 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,它更适合高频调用场景。

这里要提醒一句,Key 不要硬编码进公开仓库,建议放在环境变量或者本地不提交的配置文件里。后面我会给一个 settings.json 骨架,里面涉及 AI 通道的部分用占位符表示,你替换成自己的 Key 即可。

3. 可复制配置:arduino-cli 安装与 esp32 核心

3.1 安装 arduino-cli

Ubuntu 下安装 arduino-cli 最省事的方式是用官方脚本。打开终端,执行:

curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh

这个脚本会把 arduino-cli 装到当前目录的bin下。如果你希望全局可用,把它移到/usr/local/bin:

sudo mv bin/arduino-cli /usr/local/bin/

然后验证:

arduino-cli version

能输出版本号就说明装好了。如果你习惯用包管理器,也可以从 GitHub Releases 下载对应 Linux 64bit 的 tar.gz,解压后把二进制放进 PATH。我实测下来脚本方式最不容易出错。

3.2 初始化配置并添加 esp32 板管理地址

arduino-cli 需要一个配置文件来记录板管理地址和库路径。先执行初始化:

arduino-cli config init

默认会生成在~/.arduino15/arduino-cli.yaml。接着把 Esp32 的板管理地址加进去:

arduino-cli config add board_manager.additional_urls https://espressif.github.io/arduino-esp32/package_esp32_index.json

然后更新索引:

arduino-cli core update-index

这一步会拉取板子列表,网络正常的话几十秒完成。

3.3 安装 esp32 核心

Esp32S3 属于 esp32 核心包,安装命令:

arduino-cli core install esp32:esp32

这个包比较大,会下载编译工具链和库,耐心等。装完后可以用下面的命令确认:

arduino-cli core list

你应该能看到esp32:esp32以及版本号。如果这一步卡住或者报网络错误,多半是板管理地址没加对,回头检查arduino-cli.yaml里的additional_urls。

3.4 串口权限处理

Ubuntu 下普通用户默认没有串口读写权限,插上 Esp32S3 后/dev/ttyUSB0或/dev/ttyACM0会提示 permission denied。解决办法是把当前用户加入dialout组:

sudo usermod -aG dialout $USER

执行完必须注销重新登录,或者重启,组权限才会生效。验证方式:

groups

看到dialout就对了。然后插上板子,用:

arduino-cli board list

应该能看到端口和对应的板子信息。如果端口没出现,检查 USB 线是不是只供电不传数据,换一根试试。

3.5 vscode 扩展与 settings.json 骨架

vscode 里需要装两个扩展:C/C++ 和 Arduino。C/C++ 提供底层语法支持,Arduino 扩展负责调用 arduino-cli。装完后打开设置,搜索 Arduino,把Arduino: Use Arduino CLI勾上,这样它就走 cli 而不是老 IDE。

下面是一份可复制的settings.json骨架,放在工作区的.vscode/settings.json里:

{ "arduino.useArduinoCli": true, "arduino.path": "/usr/local/bin", "arduino.commandPath": "arduino-cli", "arduino.logLevel": "info", "arduino.enableUSBDetection": true, "arduino.defaultBaudRate": 115200, "C_Cpp.default.includePath": [ "${workspaceFolder}/**", "/home/你的用户名/.arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.1-3662303f31/esp32s3/include/**" ], "C_Cpp.default.defines": [ "ARDUINO=200", "ESP32S3" ], "C_Cpp.default.intelliSenseMode": "linux-gcc-x64" }

注意把你的用户名换成实际用户名,idf-release那串版本号以你本地实际安装的为准,可以用ls ~/.arduino15/packages/esp32/tools/esp32-arduino-libs/查看。includePath 加上之后,语法提示丢失和爆红问题基本就解决了。

如果你想把 AI 辅助编码的通道也写进配置,可以单独放一个不提交的本地文件,比如.vscode/taotoken.local.json:

{ "api_base": "https://taotoken.net/api", "api_key": "你的_TaoToken_Key", "default_model": "按控制台可选模型填写" }

这个文件加到.gitignore里,避免 Key 泄露。

4. 验证请求:编译上传与 AI 通道连通

4.1 创建项目并写测试代码

新建一个文件夹,比如esp32s3_blink,进去后用 vscode 打开。按Ctrl+Shift+P,输入 Arduino,选择Arduino: Initialize,然后输入项目名,选择板子类型ESP32S3 Dev Module。扩展会生成.ino文件和.vscode配置。

写一段最简测试代码:

void setup() { Serial.begin(115200); delay(1000); Serial.println("boot ok"); } void loop() { Serial.println("hello esp32s3"); delay(1000); }

4.2 编译与上传

在 vscode 底部状态栏选择串口,然后点验证按钮(对勾)编译。第一次编译会久一点,因为要编译核心库。编译通过后点上传按钮(右箭头)。上传成功后打开串口监视器,波特率选 115200,应该能看到每秒输出一行hello esp32s3。

如果你更喜欢命令行,也可以直接:

arduino-cli compile --fqbn esp32:esp32:esp32s3 ./esp32s3_blink arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:esp32s3 ./esp32s3_blink

--fqbn是板子标识,Esp32S3 对应esp32:esp32:esp32s3。端口按实际改。

4.3 验证 TaoToken AI 通道

AI 通道的验证很简单,用 curl 发一条请求:

curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的_TaoToken_Key" \ -H "Content-Type: application/json" \ -d '{ "model": "按控制台可选模型填写", "messages": [{"role": "user", "content": "用一句话说明 Esp32S3 的 Arduino 核心包叫什么"}] }'

如果返回里有正常的文本内容,说明 Key 和 API 通道都通了。之后你在 vscode 里写代码遇到编译报错,可以把报错贴到模型对话页面 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 让它帮你定位。长期高频用的话,Coding Plan 会更合适。

5. 本篇常见错排查

5.1 arduino-cli board list 看不到端口

先确认板子插上后系统有没有识别到 USB 设备:

lsusb dmesg | tail -20

如果dmesg里没有出现 tty 相关行,多半是线的问题或者板子没进下载模式。Esp32S3 有些板子需要按住 BOOT 再插线。另外确认自己在dialout组里,重新登录过。

5.2 编译报头文件找不到

典型报错是fatal error: WiFi.h: No such file or directory。这通常是核心包没装全,或者 includePath 没配。先确认:

arduino-cli core list

有esp32:esp32才行。然后检查settings.json里的 includePath 路径是否真实存在,版本号是否对得上。路径里用户名写错是最常见的。

5.3 语法提示爆红但能编译

这是 vscode 的 C/C++ 扩展没找到头文件,和实际编译无关。解决办法就是第 3.5 节里的 includePath 配置。改完 settings.json 后按Ctrl+Shift+P执行C/C++: Reset IntelliSense Database,再等它重新索引。

5.4 上传时报权限错误

报错类似Permission denied: /dev/ttyUSB0。回到 3.4 节,确认dialout组已生效。临时办法是sudo chmod 666 /dev/ttyUSB0,但每次插拔都要重来,不推荐。

5.5 TaoToken 请求返回 401

先检查 Key 有没有复制完整,前后有没有多余空格。再确认请求头是Authorization: Bearer 你的Key,注意 Bearer 后面有一个空格。如果还是 401,去控制台 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 确认 Key 状态是否正常,有没有被禁用或额度用完。

5.6 串口监视器乱码

波特率和代码里Serial.begin不一致是最常见原因。代码写 115200,监视器也要选 115200。另外 Esp32S3 有些板子复位后会打印一段 boot 日志,那段乱码是正常的,等它进入你的 loop 输出就好。

6. 把 AI 辅助接进日常编码流程

环境跑通之后,日常开发里最影响效率的其实是两件事:一是编译报错定位,二是库函数记不住。前者可以把报错直接丢给模型对话,后者可以让它给你一段示例。TaoToken 的统一 Key 在这里的价值是你不用为每个模型单独配一套凭证,一个 Key 走同一个 API 地址 https://taotoken.net/api 就行。

如果你只是偶尔问几句,模型对话页面足够。如果你在 vscode 里想更顺滑地接入,可以把 API 地址和 Key 配到支持自定义端点的 AI 编码插件里,让它走 TaoToken 通道。长期做 Esp32S3 项目、频繁让 AI 帮你写驱动或排错的,可以看 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,里面有不同语言的调用示例。

最后给一个实用习惯:每次新建 Esp32S3 项目,先把.vscode/settings.json从模板复制过去,includePath 里的版本号用脚本自动填,省得每次手改。串口权限一次性配好,后面插拔都不用 sudo。AI 通道的 Key 放本地不提交的文件,用的时候读环境变量。这套流程跑顺之后,Ubuntu 下开发 Esp32S3 的体验会比 Arduino IDE 舒服不少。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询