写在前面

本教程基于NVIDIA Jetson Xavier NX (JetPack 5.1.3/Ubuntu 20.04)撰写,其他Ubuntu系统设备也同样适用此教程。

如果是本地搭建,没有远程开发的需求,请直接跳转到#配置VSCode代理

VSCode通过SSH连接Jetson

打开VSCode,点击左下角的小箭头按钮,连接到远程主机-添加新的SSH主机

之后会要求输入SSH连接命令,参考格式:

ssh 用户名@IP地址
# Example: ssh jetson@192.168.0.2

输入之后回车,配置文件选择默认即可。

添加完成之后,右下角会弹出连接,可以直接点击连接,也可以重新点击左下角小箭头连接。

接下来就是一些简单的操作,跟着图片步骤走即可。

等待进度跑完(下方),窗口不再滚动,一般就是配置完成了。

配置VSCode代理

注意:这一步是可选的,但配置代理之后可以大大加快PlatformIO的安装速度,并且可以一劳永逸解决PlatformIO下库慢、创建工程慢的问题。

打开VSCode设置,切换到远程主机设置,搜索Proxy设置,填入Http: ProxyHttps: Proxy

# HTTP/S代理
http://xxx.xxx.xxx.xxx:7890
https://xxx.xxx.xxx.xxx:7890
# SOCKS5代理(不推荐)
socks5://xxx.xxx.xxx.xxx:7890
socks5://xxx.xxx.xxx.xxx:7890

配置系统环境

安装python3-venv

sudo apt install python3-venv

如果不安装venv,会出现PIO找不到Python解释器的情况,但实际上系统已经默认自带了(我这里Jetson自带的是Python3.8),并且不安装venv,即便你输入正确的Python解释器可执行文件位置(例如/usr/bin/python3),也会反复弹出此提示。

如果你使用的是socks代理方式,那么你还需要安装socks代理支持:

经过测试,即使安装相关socks库之后也会报错,建议使用HTTP/S代理方式。

python3 -m pip install requests[socks]

安装PlatformIO扩展

导航到VSCode的扩展,搜索并安装PlatformIO扩展。

安装完成之后,点一下左边的小蚂蚁头icon,就会自动进入PlatformIO的安装环节。

创建项目验证安装是否成功

依旧是点击PIO的Icon进入插件页面,在左边找到PIO Home-Open,如果能加载出来就可以直接创建项目了,很遗憾我这里不知道因为什么原因无法加载出来,因此点击左边的New Terminal,输入命令pio home回车

直接点击在编辑器中预览,即可在VSCode中显示。

接下来创建一个新项目,以ESP32 Dev Module为例:

这里使用MobaXTerm实时监控(或其他能检测网络的软件)可以看到有网络活动,也就是PIO正在下载必要的文件。如果很久都没有创建好,又没有看见网络活动迹象,很可能是网络代理配置有问题,导致无法下载必要的库文件。

当看到右上角弹出带绿色√的小弹窗,就代表创建成功了~

安装99-platformio-udev.rules

如果不安装,则会导致下载固件的时候出错

Looking for upload port...

Warning! Please install `99-platformio-udev.rules`. 
More details: https://docs.platformio.org/en/latest/core/installation/udev-rules.html

Auto-detected: /dev/ttyUSB0
Uploading .pio/build/esp32dev/firmware.bin
esptool.py v4.5.1
Serial port /dev/ttyUSB0

A fatal error occurred: Could not open /dev/ttyUSB0, the port doesn't exist
*** [upload] Error 2
=============================================================================================== [FAILED] Took 37.14 seconds ===============================================================================================

打开Linux终端,下载文件并安装:

curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules

重新启动udev管理工具:

sudo service udev restart

之后需要
重新拔插一次你的下位机开发板,
重新拔插一次你的下位机开发板,
重新拔插一次你的下位机开发板!!
重要的事情说三遍。

(否则依然无法下载程序)

写在后面

如果你使用Windows远程开发

如果你同时还使用了默认路径创建新项目,那就会遇到新建Project路径不正确的问题:

jetson@ubuntu:~/Documents/PlatformIO$ tree
.
├── Projects\ESP32 TEST PROJECT
│   ├── include
│   │   └── README
│   ├── lib
│   │   └── README
│   ├── platformio.ini
│   ├── src
│   │   └── main.cpp
│   └── test
│       └── README

这是因为Linux上用斜杠/作为路径分隔符,而Windows使用的是反斜杠\,当你在Windows端创建新的Project则会使用反斜杠,但在Linux那边将其视为一个文件夹名称的字符,也就导致该项目文件夹没有正确创建在Projects/目录下,但这算是小问题了,手动mv一下即可。

经过测试,即便在新建项目的时候指定路径,也会出现错误,因此还是建议在默认位置创建后mv一下。

mkdir -p Projects/ESP32_TEST_PROJECT
mv Projects\\ESP32\ TEST\ PROJECT/* Projects/ESP32_TEST_PROJECT/

正确的效果:

jetson@ubuntu:~/Documents/PlatformIO$ tree
.
├── Projects
│   └── ESP32_TEST_PROJECT
│       ├── include
│       │   └── README
│       ├── lib
│       │   └── README
│       ├── platformio.ini
│       ├── src
│       │   └── main.cpp
│       └── test
│           └── README

更换PIO虚拟环境镜像源

此外,PIO默认创建的venv环境使用官方源,建议手动更换一下venv为国内镜像源,详细请阅读:

https://patzer0.com/archives/vscode-creates-new-platformio-project-too-slowly#%E6%9B%B4%E6%94%B9pypi%E9%95%9C%E5%83%8F%E6%BA%90